Agent! for macOS 26.4+ logo

Agent! for macOS 26.4+

Community
macOS26

Agent! Is a native macOS App that works with any LLM [local and cloud], [open source and paid] Claude, OpenAI, Gemini, Ollama, Qwen, Hugging Face, and 12 more. Writes code, builds Xcode projects, bump versions, manages git, automates Safari (AppleScript, JS, or Accessibility), extends via MCP servers. Accepts tasks from your iPhone via Messages. 🤯

PublishermacOS26
RepositoryAgent
LanguageSwift
Forks
35
Stars
441
Available tools
0
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    Agent! for macOS 26.4+ exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 0 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    441 stars and 35 forks from the linked repository.

🦾 Agent! for macOS 26.4.1 or later

Agentic AI for your  Mac Desktop

Open Source alternative to Claude Code, Cursor and Open Claw

Latest Release GitHub Stars GitHub Forks macOS 26.4+ Swift 6.2


Cadence

Release Schedule

Approved pull requests are tested and implemented on corresponding weekends. Milestone releases are tied to real moments of growth. Reaching 500 stars, for example, will queue a new release. If the latest build becomes the #1 download on macos26.app, that milestone will also trigger a new release. For early adopters: as bug fixes land, pull requests are approved, and new features ship, the main branch will always reflect the latest work. This summer, updates may be a bit slower due to Family Medical Leave and limited computer access. Thanks in advance for your patience.


Backstory and the Tech behind Agent!

Agent! didn't come together overnight. It's the result of three years of building agentic AI apps, drawing on roughly a dozen projects developed along the way. Some of those were published under ANIE, Game Changer, BattleScript, XCF MCP Server and Client, D1F, and about eight original Swift Packages. The missing piece was achieving an intelligent autonomous time loop. Once achieved, I brought in the best of the best from the previous three years. The result is Agent! for macOS 26.4.1 or later.

The original goal was to build a Cursor killer. What emerged is something more interesting: an agentic AI with real legs. Agent! is only limited by your imagination. It can write code including video games like Boss-Man, https://github.com/macos26/bossman, create apps, write poetry via AppleScript within Pages, generate disk images, and attach them to GitHub releases. It can automate most tasks on your Mac. Ask it what you want in plain English or your native language and, after some initial configuration and user approvals, it will do everything it can to carry out your wish. Agent! is relentless, and aims to please.

All of Agent!'s IP is original and open source. Every Swift package dependency and the app itself were originally authored by the same person. This is a genuinely different ecosystem. Most agentic AI apps like Claude Code rely on 65 NPM packages from third parties. Agent! is 100% native, requires very little RAM, and weighs in at 35.5 uncompressed. That footprint includes Xcode automation, a Swift Syntax 6.2 package for troubleshooting native apps, Accessibility, AppleScript, AgentScript/ScriptingBridge, Safari automation, MCP Server support, and more. Out of the box.

What's New 🚀

  • 🌐 OpenRouter provider: Full integration with OpenRouter's model catalog — one API key, 200+ models. Smart catalog fetches available models, protocol toggle (OpenAI/Anthropic) routes Claude models through the Anthropic protocol and everything else through OpenAI, and ClaudeService auto-routes when OpenRouter is selected.
  • Apple AI as a real tool-calling agent: On-device Apple Intelligence (FoundationModels.Tool) handles UI automation requests like "take a photo using Photo Booth" locally — multi-step tool calls, zero cloud LLM tokens, falls through to the cloud LLM only on failure.
  • SDEF + runtime app discovery: Bundle ID resolution is now zero-hardcoded. Apps in Agent/SDEFs/ plus every .app in /Applications, /System/Applications, ~/Applications are discovered at runtime — installing a new app extends what the agent can target with no code edit.
  • Prompt caching for every OpenAI-format provider: Z.ai, OpenAI, Grok, Mistral, DeepSeek, Qwen, Gemini, BigModel, Hugging Face — cached_tokens is parsed from the response and shown in the LLM Usage panel. JSON request bodies use .sortedKeys so byte-stable prefixes actually hit the provider's cache.
  • On-device token compression: Apple AI summarizes old conversation turns when context exceeds 30K tokens (Tier 1 of tieredCompact) — free, private, no API tokens consumed. Toggleable in the brain icon popover.
  • Anti-hallucination prompt rule: Every system prompt now includes explicit guidance against fabricating findings from incomplete tool reads. The 10-consecutive-reads guard pushes the model toward "narrow or call done()" instead of "guess".
  • Autonomous task loop, Xcode integration, AXorcist desktop automation, privileged daemon, multi-tab LLM config, Ollama pre-warming via LLMRegistry — all the previously-shipped fundamentals are still there.

Star History ⭐️

One app. Any AI. Total command over your Mac.

Agent! wires 18 LLM providers — Claude, GPT, Gemini, Grok, Mistral, DeepSeek, Qwen, Z.ai, BigModel, Hugging Face, OpenRouter, Ollama (cloud and local), vLLM, LM Studio, Codestral, Mistral Vibe, and on-device Apple Intelligence — into a native macOS app that doesn't just talk about doing things. It does them.

Watch it read your codebase, fix the bug, build the Xcode project, and commit the diff while you make coffee. Tell it to open Safari and text you the price of flights to Tokyo. Say "Agent!" from across the room and have it run your test suite by voice. Text your Mac from iMessage and get a polished answer before you reach your car.

It edits files with surgical string-replace diffs — every change one-click undoable from a Time-Machine-style rollback. It drives any Mac app through the Accessibility API — no AppleScript required. It remembers your preferences across sessions. It spawns parallel sub-agents for work that fans out. It indexes entire codebases into a portable JSONL repo-map that any LLM can consume. It runs shell commands as you, or as root via a Launch Daemon you approve exactly once.

Bring your own API key. Run it fully local on Ollama, vLLM, or LM Studio. Or run it free, forever, on Apple Intelligence. No subscription. No telemetry. No vendor lock-in. Your keys, your machine, your data.

Download it. Say what you need. Watch it happen.

Quick Start (Download)

  1. Download Agent! and drag to Applications
  2. Open Agent! -- it sets up everything automatically
  3. Pick your AI -- Settings → choose a provider → enter API key

Quick Start (Build from Source)

  1. Clone the repository:
    bash
    git clone https://github.com/macos26/agent.git
    cd Agent

Option A: Build with Xcode (Apple Developer account)

  1. Open Agent.xcodeproj in Xcode.
  2. Build and Run the Agent target.
  3. Approve the Helper Tool: When prompted, authorize the privileged daemon to allow root-level command execution.

Option B: Build without an Apple Developer account

  1. Run the build script (requires only Xcode Command Line Tools):
    bash
    ./build.sh              # Debug build
    ./build.sh Release      # Release build
  2. The app lands in build/DerivedData/Build/Products/Debug/Agent!.app
  3. Run it: open "build/DerivedData/Build/Products/Debug/Agent!.app"

⚠️ Without a developer account the app is ad-hoc signed. The Launch Agent/Daemon helpers won't register (SMAppService needs a team ID), but the LLM loop, all tools, accessibility, AppleScript, shell, and MCP all work.

Then:

  1. Configure your AI Provider: Go to Settings and enter your API key or select a local provider like Ollama.

💡 Cheap GLM setup: GLM-5.1 runs on all four cheap providers — Ollama, Hugging Face, Z.ai, BigModel — at pennies per million tokens. New here? Start with Z.ai (fastest signup, GLM-5.1 is the default, nothing to provision). Running locally? Only GLM-4.7-Turbo (32B) fits on consumer hardware (M2/M3/M4 Mac, 64-128GB, via Ollama) — GLM-5 and GLM-5.1 are too large (~1.6TB), use them via the cloud providers above.

What Can It Do?

"Play my Workout playlist in Music" "Build the Xcode project and fix any errors" "Take a photo with Photo Booth" "Send an iMessage to Mom saying I'll be home at 6" "Open Safari and search for flights to Tokyo" "Refactor this class into smaller files" "What calendar events do I have today?"

Just type what you want. Agent! figures out how and makes it happen.


Key Features

🧠 Agentic AI Framework

Built-in autonomous task loop that reasons, executes, and self-corrects. Agent! doesn't just run code; it observes the results, debugs errors, and iterates until the task is complete.

🛠 Agentic Coding

Full coding environment built in. Reads codebases, edits files with precision, runs shell commands, builds Xcode projects, manages git, and auto-enables coding mode to focus the AI on development tools. Replaces Claude Code, Cursor, and Cline -- no terminal, no IDE plugins, no monthly fee. Features Time Machine-style backups for every file change, letting you revert any edit instantly.

🔍 Dynamic Tool Discovery

Automatically detects and uses available tools (Xcode, Playwright, Shell, etc.) based on your prompt. No manual configuration required for core tools.

🛡 Privileged Execution

Securely runs root-level commands via a dedicated macOS Launch Daemon. The user approves the daemon once, then the agent can execute commands autonomously via XPC.

Why there's no manual setCodeSigningRequirement on the XPC listener

Users sometimes ask why AgentHelper's XPC listener accepts connections without a manual connection.setCodeSigningRequirement(...) check. The short answer: SMAppService already enforces signing identity one layer below your code, so the check would be redundant.

That recommendation is a holdover from the pre-SMAppService SMJobBless era, where launchd did not validate identity for you and the XPC server had to set a designated-requirement string itself. SMAppService changed that contract:

  • The app-bundle-embedded plist plus signature-gated registration is the code-signing requirement.
  • The Mach service names (Agent.app.toddbruss.helper, Agent.app.toddbruss.user) are namespaced to the signed bundle that registered them — no other bundle can claim them.
  • Any signature mismatch (tampering, re-signing, different Team ID, bundle swap) breaks the XPC channel at the launchd layerlistener(_:shouldAcceptNewConnection:) is never even invoked.

Empirical proof: Agent! itself attempted to re-sign its own daemons during an experiment and immediately lost the ability to connect. NSXPCConnection to both Mach services failed at the launchd layer before a single byte reached the listener delegate — exactly the behavior a manual setCodeSigningRequirement call would enforce, except SMAppService is doing it in the kernel's XPC lookup path where it cannot be bypassed from userland.

EnforcementMechanismBypassable from userland?
Helper must be in signed app bundleGatekeeper + SMAppService registrationNo
Helper must match app's Team ID (469UCUB275)Code signing + SMAppServiceNo
Mach service name bound to signed bundlelaunchd / XPC namespaceNo
Helper binary hash matches registered identitySMAppService + kernel XPC lookupNo (re-signing breaks the channel)
User approved the helperSystem Settings → Login Items & ExtensionsNo (user gesture required)

Adding setCodeSigningRequirement explicitly would be reasonable belt-and-braces defense-in-depth (useful only if the app were ever ported off SMAppService, or if SIP were disabled), but it is not a gap in the current architecture. See docs/SECURITY.md for the full trust-anchor write-up.

🖥 Desktop Automation (AXorcist)

Control any Mac app through the Accessibility API. Click buttons, type into fields, navigate menus, scroll, drag -- all programmatically. Powered by AXorcist for reliable, fuzzy-matched element finding.

🤖 18 AI Providers

The provider picker (LLM Settings, toolbar button #7) shows 17 providers; Apple Intelligence is reached via the separate brain icon (#8). Source of truth: AgentTools.APIProvider.

ProviderAPI keyBest for
Claude (Anthropic)PaidLong autonomous tasks, complex reasoning, prompt caching
OpenAIPaidGeneral purpose, tool calling, vision
Google GeminiPaid (free tier)Long context, vision, fast
Grok (xAI)PaidReal-time info
MistralPaidOpen-weight cloud, fast tool calling
Codestral (Mistral)PaidCode-specialized Mistral
Mistral VibePaidMistral's chat/agent product
DeepSeekCheapBudget cloud, strong coding, prompt cache hit reporting
Hugging FaceVariesOpen-source models hosted serverless or on dedicated endpoints
OpenRouterPaid200+ models through one API key — Claude, GPT, Gemini, Llama, Mistral, and more. Smart protocol toggle routes Claude models via Anthropic protocol, everything else via OpenAI
Z.aiCheapGLM-5.1 via API — recommended starting point
BigModel (Zhipu)CheapGLM family via Zhipu's API
Qwen (Alibaba)CheapQwen 2.5 / 3 via Dashscope
Ollama (cloud)Free tierRun open models via Ollama's hosted endpoint
Local OllamaFree + hardwareSelf-hosted Ollama daemon — fully offline, no account
vLLMFree + hardwareSelf-hosted vLLM server with prefix caching
LM StudioFree + hardwareSelf-hosted, easiest GUI for local models
Apple IntelligenceFree, on-deviceTriage, summary, accessibility intent (via brain icon, not the provider picker)

💡 Self-hosted "free" providers (Local Ollama, vLLM, LM Studio) are only free in the API-fee sense. Running a 30B+ model with usable speed needs an M2/M3/M4 Ultra Mac Studio (64-128GB unified memory) or a Linux box with 24GB+ VRAM. If you don't already have that hardware, the cloud paths above (Ollama Cloud, Hugging Face, Z.ai, BigModel, DeepSeek) are dramatically cheaper than buying it.

Toolbar Buttons

The Agent! header contains 15 buttons for quick access to settings, monitors, and tools. Each button opens a popover when clicked. Source of truth: Agent/Views/HeaderSectionView.swift.

#IconNameWhat it does
1⚙️ServicesToggle the Launch Agent / Launch Daemon, manage project folder, scan command output
2💬Messages MonitorToggle iMessage monitoring on/off — green when active. Opens the recipients list and approval UI
3AccessibilityOpen the Accessibility settings sheet (permission status, axorcist diagnostics)
4🖥️MCP ServersAdd/remove/configure MCP (Model Context Protocol) servers — extends Agent! with mcp_* tools
5</>Coding PreferencesToggle auto-verify, visual tests, auto-PR, auto-scaffold. Green when any are on
6🔧ToolsPer-provider tool toggles. Enable/disable individual built-in and MCP tools
7🧠LLM SettingsPick AI provider, model, API key, base URL. Pulses when a task is running
8🧬Apple IntelligenceConfigure FoundationModels (on-device Apple AI). Filled when available
9🎛️Agent OptionsTemperature, max iterations, vision auto-screenshot, plan-mode encouragement, etc.
10🔄Fallback ChainConfigure provider fallback order — Agent! retries with the next provider when one fails
11🔲HUDToggle the green-CRT scanline overlay on the LLM Output view
12📊LLM UsagePer-model token usage and cost tracking. Green when there's recorded usage
13↩️RollbackTime-Machine-style file backup browser. Restore any previous version of any file Agent! edited
14🕐HistoryPast prompts, errors, and task summaries for the active tab. Re-run a previous prompt with one click
15🗑️Clear LogDelete the activity log for the active tab (or all task history when no tab is selected). Confirms first

🎙 Voice Control — "Agent!" Hotword

Hotword-anchored dictation via SFSpeechRecognizer. Click the microphone in the input bar to start the hotword session, then say "Agent!" followed by your task. Transcription is on-device, runs in real time, and listens for agent as a complete word (not as a substring of "intelligent" or "management"). Anything you say after the wake word becomes the task — after ~2.5 seconds of silence, it auto-runs. The session loops automatically: when one task completes, it starts listening again. Click the mic to stop.

📱 Remote Control via iMessage

Text your Mac from your iPhone:

Agent! What song is playing?
Agent! Check my email
Agent! Next Song

Your Mac runs the task and texts back the result. Only approved contacts can send commands.

🌐 Web Automation

Drives Safari hands-free -- search Google, click links, fill forms, read pages, extract information.

📋 Smart Planning

For complex tasks, Agent! creates a step-by-step plan, works through each step, and checks them off in real time.

🗂 Tabs

Work on multiple tasks simultaneously. Each tab has its own project folder and conversation history.

📸 Screenshot & Vision

Take screenshots or paste images. Vision-capable AI models analyze what they see -- describe content, read text, spot UI issues.

🌐 Safari Web Automation (Built-in)

Agent! includes built-in Safari web automation via JavaScript and AppleScript. Search Google, click links, fill forms, read page content, and execute JavaScript -- all hands-free.

To enable: Open Safari → Settings → Advanced → check "Show features for web developers". Then go to Developer menu → check "Allow JavaScript from Apple Events".

🎭 Playwright Web Automation (Optional)

Full cross-browser automation via Microsoft Playwright MCP. Click, type, screenshot, and navigate any website in Chrome, Firefox, or WebKit -- all controlled by the AI.

Setup (one-time):

bash
# 1. Install Node.js (if not already installed)
brew install node

# 2. Install Playwright MCP server globally
npm install -g @playwright/mcp@latest

# 3. Install browser binaries (pick one or all)
npx playwright install chromium          # Chrome (~165MB)
npx playwright install firefox           # Firefox (~97MB)
npx playwright install webkit            # Safari/WebKit (~75MB)
npx playwright install                   # All browsers

Configure in Agent!:

Go to Settings → MCP Servers → Add Server, paste this JSON:

json
{
    "mcpServers": {
        "playwright": {
            "command": "npx",
            "args": ["@playwright/mcp"],
            "transport": "stdio"
        }
    }
}

Note: If npx is not found, use the full path: run which npx in Terminal and replace "npx" with the result (e.g. "/opt/homebrew/bin/npx").

Toggle ON and Playwright tools appear automatically. The AI can now control browsers directly.

Tools — what list_tools actually returns

These are the canonical tool names defined in AgentTools.Name.* and exposed to every LLM provider via AgentTools.tools(for:). Source of truth: ~/Documents/GitHub/AgentTools/Sources/AgentTools/AgentTools.swift. The Agent app's user-pref toggles can hide individual tools per-provider, but the list below is the full set the LLM ever sees.

Core / discovery

ToolActions / argsWhat it does
donesummarySignal task complete. Required at end of every task
list_toolsReturns the live tool list for the current provider (built-in + MCP)
searchqueryWeb search via Exa, Tavily, or DuckDuckGo (whichever key is configured)
chatwrite / transform / fix / aboutWrite prose, transform/fix text, describe Agent capabilities
memoryread / write / append / clearPersistent user preferences. "remember X" → append
plancreate / update / read / list / deleteMulti-plan CRUD with per-step status tracking
directoryget / set / home / documents / library / none / cdProject folder for the current tab
fetchurlFetch URL, strip HTML, cap 8K chars
skilllist / invoke / save / deleteReusable prompt templates
ask_userquestionMid-task user dialog (waits up to 5 min)

Code / files / build

ToolActions / argsWhat it does
fileread / write / edit / create / apply / undo / diff_apply / list / search / read_dir / mkdir / cd / if_to_switch / extract_functionAll file operations. edit = single-string replace. diff_apply = preferred for multi-line code edits
gitstatus / diff / log / commit / diff_patch / branch / worktreeGit operations — use this instead of shell git
xcodebuild / run / list_projects / select_project / add_file / remove_file / grant_permission / analyze / snippet / code_review / get_version / bump_version / bump_buildNative Xcode integration. Errors in the activity log are clickable
agent_scriptlist / read / create / update / run / delete / combineSwift dylib scripts in ~/Documents/AgentScript/agents/ with full TCC

Shell / privilege tiers

ToolArgsWhat it does
user_shellcommandShell as current user via Launch Agent. Primary shell tool
root_shellcommandShell as ROOT via Launch Daemon. Admin tasks only — no sudo
shellcommandFallback in-process shell (when Launch Agent is off)
batchcommandsMultiple shell commands in one call (newline-separated)
multidescription, tasksMultiple tool calls in one batch

macOS automation

ToolActions / argsWhat it does
accessibilityopen_app / find_element / click_element / type_into_element / scroll_to_element / list_windows / inspect_element / get_properties / perform_action / set_properties / get_focused_element / get_children / read_focused / wait_for_element / wait_adaptive / highlight_element / manage_app / show_menu / click_menu_item / set_window_frame / get_window_frame / screenshot / check_permission / request_permission / get_audit_logElement-based AXorcist automation. Every action takes role+title+appBundleId — no coordinates
applescriptexecute / lookup_sdef / list / run / save / deleteNSAppleScript in-process with TCC
javascriptexecute / list / run / save / deleteJXA (JavaScript for Automation)

Web automation

ToolActions / argsWhat it does
safariopen / find / click / type / execute_js / get_url / get_title / read_content / google_search / scroll_to / select / submit / navigate / list_tabs / switch_tab / list_windows / scan / searchSafari automation via JavaScript + AppleScript
seleniumstart / stop / navigate / find / click / type / execute / screenshot / waitSelenium WebDriver session — use safari for normal Safari
mcp_playwright_browser_*(see Playwright MCP)Optional. Cross-browser automation via Playwright MCP

Sub-agents

ToolArgsWhat it does
spawn_agentname, prompt, tools, max_iterationsSpawn isolated sub-agent. Max 3 concurrent. Independent message history + mailbox
tell_agentto, messageSend a message to a running sub-agent's mailbox

💡 Note: The on-device app filters this list per-provider — toggle individual tools in the Tools popover (button #6 in the toolbar above). Apple Intelligence has its own minimal default set because of its small context window. MCP tools are appended at runtime as mcp_<server>_<tool> and listed under "--- MCP Tools ---" by list_tools.

Privacy & Safety

  • Your data stays on your Mac. Files, screen contents, and personal data are never uploaded.
  • Cloud AI only sees your prompt text. Use local AI to stay 100% offline.
  • You're in control. Agent! shows everything it does and logs every action.
  • Built on Apple's security model. macOS permissions protect your system.

Defense Layers

LayerWhat it does
Shell Safety ServiceHard-blocks catastrophic commands (rm -rf /, rm -rf ~, dd to /dev/disk, fork bombs, --no-preserve-root) before the Process is even constructed. Cannot be bypassed by the LLM.
TCC In-Process Routing17-keyword detector routes AppleScript, osascript, JXA, screencapture, accessibility, Shortcuts, and ScriptingBridge commands to run in-process where Agent! holds TCC grants — never through the Launch Agent/Daemon (separate bundle IDs = no TCC).
File Backup on Every EditFileBackupService auto-snapshots every file before write_file, edit_file, and diff_apply. Recoverable via file(action:"restore") or the Rollback UI. 1-week TTL.
Agent Script .Trashdelete_agent copies the script to ~/Documents/AgentScript/agents/.Trash/ before removal. Recoverable via agent_script(action:"restore").
Working Directory NormalizationEvery shell execution path (executeTCC, UserService, HelperService) normalizes the working directory — if a file path is accidentally passed as cwd, it strips to the parent directory instead of crashing with "Not a directory".
Task Drain-Before-StartStarting a new task awaits the previous task's full termination before beginning — prevents orphaned retry loops from mixing log output across providers.
Fallback ChainWhen the primary LLM fails (429, timeout, network), Agent! auto-switches to the next provider in the user-configured chain after 2 failures.
Actionable ErrorsEvery tool error includes a Recovery: hint telling the LLM exactly what to try next — no dead-end error messages that waste turns.
Read Cache InvalidationFile read cache is invalidated on both successful edits AND failed edits, so the LLM always gets fresh content on the next read.
Basename SearchWhen read_file or edit_file gets a wrong path, Agent! searches nearby directories for files with the same name and returns the correct paths inline — the LLM self-corrects in one turn.
Tool Execution GatingThe LLM cannot fabricate tool results. All tool calls flow through the app's dispatchTool() → actual execution (XPC, shell, in-process) → real output returned as tool_result. The LLM only sees and summarizes outputs that actually happened. If a tool fails, the real error is returned — the LLM cannot claim success without a matching execution event.
action_not_performedThree-layer defense against false-action claims: (1) Prompt — system prompt instructs the LLM to say "action not performed" if no tool was called. (2) App — if the LLM returns text claiming "I searched/opened/clicked" but made zero tool calls that turn, a correction is injected forcing it to use the real tool. (3) Apple AI — Apple Intelligence tool outputs are verified for substantive results before claiming success; empty/failed outputs automatically forward to the cloud LLM. Every Apple AI tool call is logged to the activity view with 🍎 prefix.

Keyboard Shortcuts

Source of truth: the TextField .onSubmit in Agent/Views/InputSectionView.swift for Return, and the inline NSEvent.addLocalMonitorForEvents block in Agent/Views/ContentView.swift for everything else.

ShortcutAction
ReturnRun current task (TextField submit — no modifier needed)
⌘ . / EscapeCancel running task
⌘ BToggle LLM Output overlay (show/hide)
⌘ DToggle both LLM chevrons on the current tab (expand/collapse)
⌘ TNew tab
⌘ WClose current tab (or quit if no tabs)
⌘ 1⌘ 9Switch tab. ⌘1 is the main tab; ⌘2⌘9 are script tabs
⌘ Shift ← / ⌘ Shift →Previous / next tab
⌘ FToggle activity-log search bar
⌘ LClear log for the active tab
⌘ VPaste image from clipboard
/ Prompt history (in the input field)
⌘ Shift MToggle Messages Monitor on/off
⌘ Shift POpen Settings (system prompt editor lives here)
⌘ Shift KClear all (full reset)
⌘ Shift LClear LLM output panel only
⌘ Shift HClear prompt history
⌘ Shift JClear task history
⌘ Shift UClear token counters

Slash Commands

Type these in the input field and press Return — they execute locally without going to any LLM. Source of truth: AgentViewModel+RunStop.swift.

CommandAction
/clear or /clear logClear the activity log for the current tab
/clear allClear everything (log, LLM output, prompt history, task history, tokens)
/clear llmClear the LLM output panel only
/clear historyClear prompt history
/clear tasksClear task history
/clear tokensReset token counters (task + session)
/memory or /memory showPrint the current memory file contents to the activity log
/memory clearWipe memory
/memory editOpen ~/Documents/AgentScript/memory.md in the system default editor
/memory <text>Append <text> to memory (anything else after /memory becomes the new line)

FAQ

Do I need to know how to code? No. Just type what you want in plain English.

Is it safe? Yes. Standard macOS automation, full activity logging, you approve permissions.

How much does it cost? The Agent! app itself is free (MIT License). Cloud AI providers charge for API usage — the cheapest options for serious work are GLM-5/5.1 via Z.ai, BigModel, or Hugging Face (pennies per million tokens), or DeepSeek for budget coding. Self-hosted local models (Ollama, vLLM, LM Studio) have no API fees but only make sense if you already own the hardware to run them — see the hardware note below.

What Mac do I need? macOS 26.4.1. Apple Silicon required. For cloud providers, any modern Mac works fine. For self-hosted local models (Ollama, vLLM, LM Studio): a 7B model fits in 16GB unified memory, a 13B model in 24GB, a 30B model needs 64GB+ (M2/M3/M4 Ultra Mac Studio territory). Apple Intelligence (the on-device mediator for triage / accessibility intent / token compression) needs an Apple Silicon Mac with Apple Intelligence enabled in System Settings.

How is this different from Siri? Siri answers questions. Agent! performs actions -- controls apps, manages files, builds code, automates workflows.


Documentation


Built-in Xcode Tools

Agent! includes native Xcode integration that works without any MCP server setup. These built-in tools are often faster and more reliable than the MCP alternative since they run directly inside the app.

ToolWhat It Does
xcode buildBuild the current Xcode project, capture errors and warnings. Errors in the activity log are clickable and open directly in Xcode.
xcode runBuild and run the app
xcode list_projectsDiscover open Xcode workspaces and projects
xcode select_projectSwitch the active project
xcode grant_permissionGrant file access to the Xcode project folder
xcode get_versionRead the current marketing version and build number from the Xcode project
xcode bump_versionBump the marketing version (major, minor, or patch), update the build number, build to verify, and auto-commit
xcode bump_buildIncrement only the build number

Just say "bump version" and Agent! reads the current version, asks major/minor/patch, updates Info.plist and project settings, builds to verify, and commits the change. No manual plist editing, no missed build numbers.

The AI automatically uses these when you ask it to build, fix errors, or work with Xcode projects. No configuration needed -- just have your project open in Xcode.

🚀 iOS/iPadOS Support: Coming soon! Native support for building, running, and testing iOS and iPadOS apps directly from Agent! is in development.

Tip: For most coding workflows, the built-in tools are all you need. The MCP Xcode server below adds extras like SwiftUI Preview rendering and documentation search.


Two ways to talk to Agent! — voice and iMessage

Both features use the same wake word: "Agent!" (case-insensitive — Agent!, agent!, AGENT!, even just Agent or agent all work).

🎤 Voice (dictation hotword)

Click the microphone in the input bar and start the hotword session, then speak. Agent! transcribes in real time using SFSpeechRecognizer and listens for the word "agent" as a complete word (not as a substring of "intelligent" or "management"). Anything you say after "agent" becomes the task. After ~2.5 seconds of silence, the task auto-runs.

Examples:

  • "Agent, what song is playing?"
  • "Agent take a screenshot of Safari"
  • "Agent build the Xcode project"

The hotword session loops automatically — after one task completes, it goes back to listening. Click the mic again to stop.

📱 iMessage (remote control)

Text your Mac from your iPhone. Agent! polls ~/Library/Messages/chat.db every 5 seconds for new messages and reacts to anything starting with Agent! (case-insensitive, exclamation mark optional).

Examples:

Agent! What song is playing?
agent! check my email
AGENT! next song
Agent  open Safari

Agent! sends an immediate "Working on it..." acknowledgment, runs the task on a dedicated Messages tab using your main tab's LLM config, and then texts the result back to you.

Setup (one-time):

  1. Grant Full Disk Access — System Settings → Privacy & Security → Full Disk Access → enable Agent! (required to read chat.db directly via SQLite)
  2. Open the Messages Monitor — toolbar button #2 (chat bubble icon, turns green when on)
  3. Approve a sender — once a message arrives from a new contact, that contact appears in the recipients list. Toggle them on to approve.

Only approved senders can run tasks. Unapproved messages are logged but ignored. Your reply is sent back via AppleScript to the same handle that sent the command, capped at 4000 characters.

Outgoing replies have any leading "Agent!" stripped so the receiving Mac doesn't trigger its own command loop.


Agent! supports MCP servers for extended capabilities. Configure in Settings → MCP Servers.

Xcode MCP Server

Connect Agent! directly to Xcode for project-aware operations:

json
{
  "mcpServers" : {
    "xcode" : {
      "command" : "xcrun",
      "args" : [
        "mcpbridge"
      ],
      "transport" : "stdio"
    }
  }
}

Xcode MCP provides:

  • Project-aware file operations (read/write/edit/delete)
  • Build and test integration
  • SwiftUI Preview rendering
  • Code snippet execution
  • Apple Developer Documentation search
  • Real-time issue tracking

License

MIT - free and open source.


Agent! for macOS 26.4.1 - Agentic AI for your  Mac Desktop

Note: Claude refers to the Anthropic AI model integrated into Agent! for LLM functionality. It is not a human contributor Agent!


Agent! vs Claude Code — Architectural Comparison

Agent! is a 100% original pure Swift macOS application. It is not a port, fork, or derivative of any other project.

Claude CodeAgent!
LanguageTypeScript/JavaScriptPure Swift 6.2
UI FrameworkInk (terminal React)SwiftUI (native macOS)
PlatformCLI — Linux, macOS, WindowsNative macOS 26.4.1 only
RuntimeNode.js/BunNative compiled binary
ArchitectureTerminal REPL with streamingDesktop app with XPC daemons
AccessibilityNone (CLI)Full macOS AX via AXorcist (25 top-level actions, 30+ AX subtypes via perform_action)
AppleScriptNoneFull NSAppleScript + JXA in-process with TCC
Xcode IntegrationVia Bash (xcodebuild)Native (build/run/analyze/snippet/add_file/bump_version/code_review — 13 actions)
Apple IntelligenceNoneFoundationModels on-device — runs as a real Tool-calling agent for accessibility intent (e.g. "take a photo using Photo Booth" parsed and dispatched locally), task summaries, error explanations, and Tier 1 token compression. Falls through to the cloud LLM only on failure
ScriptingBridgeNoneFull SDEF + 51 event bridges (Finder, Mail, Music, Safari, Calendar, etc.)
VisionImage input via APIImage input via API
Auto-screenshotsNone (no UI)Opt-in auto-verification after UI actions (default OFF — see visionAutoScreenshotEnabled)
iMessageNoneRemote agent via Messages (Full Disk Access required for chat.db)
VoiceNoneHotword-anchored dictation via SFSpeechRecognizer
CRT effectNoneOptional SwiftUI Canvas scanline overlay (toggle via HUD button)
Privilege ModelUser sandboxXPC Launch Agent (user) + Launch Daemon (root)
Sub-agentsTask tool (publicly documented; implementation details not stated by Anthropic)Up to 3 concurrent isolated agents with mailbox messaging
MCPNode.js stdio/SSESwift AgentMCP package
ScriptsNoneSwift dylib compilation at runtime, dlopen'd in-process with full TCC
Prompt cachingAnthropic cache_control ephemeralAnthropic cache_control ephemeral + automatic prefix-cache hit tracking for OpenAI/Z.ai/Grok/Mistral/Gemini/Qwen/DeepSeek; Ollama keep_alive: 30m
Context compactionCloud Claude (paid tokens; conversation re-sent to Anthropic)Tiered: Tier 1 = on-device Apple Intelligence summarization (free, private, no API tokens). Tier 2 = aggressive prune if Apple AI unavailable. Triggers at 30K est. tokens, summaries memoized, 3-failure circuit breaker

⚠️ Legal Notice & Attribution

Trademark Notice

"🦾 Agent! for macOS26" is an independent software project and is not affiliated with, endorsed by, sponsored by, or otherwise associated with Apple Inc. "Apple," "Mac," "Mac mini," "MacBook," "macOS," and related marks are trademarks of Apple Inc., registered in the U.S. and other countries. All other trademarks, service marks, and trade names referenced herein are the property of their respective owners and are used for identification purposes only.

"🦾 Agent!" and the 🦾 Agent! logo are trademarks of Todd Bruss. Use of these marks requires prior written permission. The MIT license below grants rights to the source code only — it does not grant any trademark rights.

Source Code License (MIT)

The source code of "🦾 Agent! for macOS26" is open source and licensed under the MIT License. You are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the source code, subject to the conditions in the LICENSE file (retain copyright notice and the MIT permission notice in all copies or substantial portions of the software).

Compiled Binaries & Releases

Compiled binaries, installers, code-signed builds, and release artifacts distributed through this project's GitHub Releases, agent.macOS26.app, or any other official channel are the copyrighted work of Todd Bruss and are not covered by the MIT license that governs the source code. All rights to the official binaries — including the "🦾 Agent!" name, logo, code-signing identity, and Developer ID — are reserved.

Copyright © 2000, 2023–2026 Todd Bruss, All Rights Reserved.

You are welcome to build your own binaries from source under the MIT license, provided you do not use the "🦾 Agent!" name, logo, or branding to identify your product.

Warranty Disclaimer

This software is provided "AS IS," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the author or copyright holder be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.


Thank you for your interest in 🦾 Agent! — an application crafted for Mac mini, MacBook, and Mac desktop computers running macOS 26.4 or later on genuine Mac hardware and software.

Sincerely, Todd Bruss Forward Deployed Engineer, 🦾 Agent! for macOS 26.4.1 https://agent.macOS26.app https://github.com/macos26/agent

Installation

TypingMind
Prerequisites:

Node.js 18+

{
  "mcpServers": {
    "macos26-agent": {
      "command": "",
      "args": []
    }
  }
}

Use Agent! for macOS 26.4+ MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once Agent! for macOS 26.4+ is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add Agent! for macOS 26.4+ as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the Agent! for macOS 26.4+ MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "macos26-agent": {
      "command": "npx",
      "args": [
        "-y",
        "Agent"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the Agent! for macOS 26.4+ MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the Agent! for macOS 26.4+ MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use Agent! for macOS 26.4+ to help me with this task?
Agent! for macOS 26.4+
Sure. I read it.
Here is what I found using Agent! for macOS 26.4+.

Frequently asked questions

What is the Agent! for macOS 26.4+ MCP server used for?

Agent! for macOS 26.4+ is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use Agent! for macOS 26.4+ MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use Agent! for macOS 26.4+ with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use Agent! for macOS 26.4+ MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With Agent! for macOS 26.4+ connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect Agent! for macOS 26.4+ MCP to TypingMind?

Agent! for macOS 26.4+ runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does Agent! for macOS 26.4+ MCP provide in TypingMind?

Agent! for macOS 26.4+ exposes MCP capabilities that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use Agent! for macOS 26.4+ MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If Agent! for macOS 26.4+ requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇