GitCoder052023/OpenAgent

OpenAgent is the local macOS body for Instinct. It's an always-listening, hands-free assistant that operates your Mac, your browser, the web and your social accounts while you get on with your day.

TypeScript

2

268 commits

updated Oct 7, 2026

See the code

See what people are saying

SourceMessageScoreDate

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/LLMDevs)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

0

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/artificial)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

7

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/ArtificialInteligence)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

0

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/coolgithubprojects)

1

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/SideProject)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

1

Oct 7, 2026

README

OpenAgent

OpenAgent ⌘

Say "Wake up, Jarvis." Then just talk.
OpenAgent is the local macOS body for Instinct. It's an always-listening, hands-free assistant that operates your Mac, your browser, the web and your social accounts while you get on with your day.

macOS Python uv Bun Tests License: MIT Status

Quick Start · Talking to Jarvis · Why OpenAgent · How It Works · Features · Tool Suite · Configuration · Docs · Contributing


OpenAgent connects Instinct, a personal AI assistant that lives in your messaging apps, to your Mac and gives it a voice interface modeled on Jarvis. Start it once and say "Wake up, Jarvis." From then on. You speak naturally from anywhere in the room, and Instinct reasons over each request while OpenAgent carries it out locally: shell commands, code edits, native app control, your authenticated Chrome, self-hosted web scraping and your social media accounts. Replies come back out loud, and screenshots & results land in your chat.

The two halves together make up a personal assistant that can act in the cloud and on your desktop.

[ Jarvis sleeping ]

You (making coffee):  "Wake up, Jarvis."
[ Jarvis awake ]

You:       "Run the test suite on OpenAgent. If it's green, post a Threads update
            about what I shipped today."
             bash               ./test.py                              195 passed
             bash               git log --since=midnight --oneline     6 commits
             social_dedup_check threads / post                         not yet posted
             social_post        threads.net (authenticated profile)    published
Jarvis:    "All 195 tests passed. The update is live on Threads."

You (from the couch):  "Show me what it looks like."
             social_screenshot  live Chrome session                    delivered to WhatsApp
Jarvis:    "Screenshot's in your chat."

You:       "Jarvis, stand by."  →  "Confirm stand by, Jarvis."
[ Jarvis sleeping ]

Talking to Jarvis

OpenAgent is built around continuous, hands-free conversation: the way Tony Stark talks to Jarvis while he's working, making coffee or watching TV.

  • Wake once, keep talking. Say "Wake up, Jarvis" (or "Hey Jarvis") and the session stays awake. Speak naturally, pause, and the request is sent after a stretch of silence.
  • Natural turn-taking. Instinct's voice replies play automatically through your speakers.
  • Freeform follow-ups. The conversation lives in your Instinct chat, so context carries across turns. "Now do the same for Reddit" or "Make it shorter" works the way you'd expect.
  • Private by default. Wake-word detection (Vosk) runs fully offline, and idle audio is never saved or sent. Nothing leaves your Mac until Jarvis is awake and you've spoken a request.
  • Push-to-talk fallback. For quiet environments or shared spaces, hold F8 to talk instead.

Why OpenAgent

Instinct is an invite-only personal AI assistant that works entirely through iMessage and WhatsApp. It has no app and no dashboard: you text it, send a voice note or call it. Instinct works as a chief of staff rather than a chatbot. It books appointments, manages travel, disputes bills, cancels subscriptions and reaches out on its own to follow up on deadlines. It connects to services like GitHub, Google and Notion, and it handles general computer work on virtual desktops in its own cloud.

Because that computer use happens in Instinct's cloud environment, it can reach your accounts but not your machine. OpenAgent closes that gap:

CapabilityInstinctInstinct + OpenAgent
Always-listening, hands-free voice sessions at your desk—✓
Account-level tasks (email, calendar, GitHub, Notion)✓✓
Proactive reminders and follow-ups✓✓
Shell execution and code edits on your local machine—✓
Seeing your screen and controlling native macOS apps—✓
Driving your authenticated, everyday Chrome profile—✓
Operating WhatsApp Desktop—✓
Posting and engaging on Threads, Reddit, X, LinkedIn and more from your own browser sessions—✓
Private, self-hosted web scraping and crawling—✓
Instinct thinks. OpenAgent acts.

How It Works

OpenAgent uses WhatsApp Desktop as the transport between Instinct and your Mac. You don't need an API key, a hosted backend or a custom integration.

  1. Input. Once woken with "Wake up, Jarvis", OpenAgent listens continuously to your speech until a natural pause, and then sends either a voice note or a local Whisper transcript to your Instinct chat.
  2. Tool calls. Instinct replies with structured calls wrapped in a JARVIS_CALL:<base64-JSON>:END envelope. Base64 encoding protects the payload from WhatsApp's markdown formatting, which removes characters like *, _ and ~.
  3. Observation. OpenAgent reads incoming messages through the macOS Accessibility API.
  4. Verification. A fail-closed guard confirms the message came from the verified Instinct chat.
  5. Execution. The dispatcher routes the call to one of five engines and runs it locally.
  6. Response. Results, diffs and screenshots go back into the chat. Instinct continues the loop until the task is complete, and its voice replies play back automatically.
sequenceDiagram
    actor User
    participant OA as OpenAgent (local)
    participant WA as WhatsApp Desktop
    participant IN as Instinct (cloud)
    User->>OA: Wake word, then freeform speech
    OA->>WA: Voice note or transcript
    WA->>IN: Deliver message
    IN-->>WA: JARVIS_CALL envelope
    WA-->>OA: Read via Accessibility API
    OA->>OA: Verify chat, dedupe, dispatch, execute
    OA->>WA: Tool result / screenshot
    WA->>IN: Next turn
    IN-->>WA: Final voice reply
    WA-->>User: Automatic playback

Core Features

EngineWhat it gives InstinctBuilt on
Developer HarnessSandboxed bash, paginated read, atomic write, exact-match edit, ripgrep search, glob, AppleScriptBun + TypeScript
Voice InterfaceOffline wake word, continuous hands-free sessions, silence-based turn-taking, echo guard, automatic reply playbackVosk, whisper.cpp, SoX
Native Computer UseWindow capture, Accessibility tree queries, PID-targeted clicks, keystrokes, drags and scrolls that don't steal focusmacOS Accessibility & Quartz
Real Browser ControlYour authenticated Chrome: background tabs, compositor clicks through iframes and shadow DOM, framework-safe form filling, 97 site-specific domain skillsBrowser Harness (CDP)
Web IngestionScrape to Markdown, search with full-content results, recursive crawl, site mapping, schema-based JSON extractionSelf-hosted Firecrawl (Docker)
Social AutomationPosting, replies, likes, search and scheduled workflows on Threads and Reddit (plus X, LinkedIn, Instagram, Facebook, YouTube, TikTok, GitHub) in isolated, persistent Chrome profilesLocoAgent (CDP)

Self-healing runtime. boot.py provisions its own environment, installs missing dependencies, downloads speech models, restarts the agent (and its listening session) with exponential backoff and keeps WhatsApp Desktop alive in the background. ./boot.py --doctor runs a full preflight audit.

Quick Start

Prerequisites

  • macOS 14 (Sonoma) or macOS 15 (Sequoia) on Apple Silicon or Intel
  • uv (Astral Python package and project manager)
  • Homebrew & Bun
  • Official WhatsApp Desktop installed and logged in

1. One-Command Autonomous Python Scripts

OpenAgent includes dedicated, single-command Python scripts for all lifecycle tasks:

ScriptPurposeCommon Command
boot.pyAutonomous Boot & Watchdog./boot.py (or python3 boot.py)
install.pyFull Zero-Touch Installation./install.py (or python3 install.py)
calibrate.pyWhatsApp UI Auto-Calibration./calibrate.py --save
test.pyComprehensive Test Runner./test.py

Quick Start:

git clone https://github.com/GitCoder052023/OpenAgent.git
cd OpenAgent

# 1. Full system installation (homebrew tools, venv, bun harness, speech models)
./install.py

# 2. Calibrate WhatsApp Desktop UI paths and labels (auto-detected)
./calibrate.py --save

# 3. Verify entire system with test suite
./test.py

# 4. Launch Jarvis with hands-free wake word enabled
./boot.py --voice --send-mode audio

boot.py is an autonomous, self-bootstrapping orchestrator and supervisor:

  • Self-Bootstrapping: Auto-detects runtime, provisions/syncs virtual environment with uv, and re-execs inside .venv without manual activation.
  • Auto-Healing Dependencies: Auto-resolves and installs Homebrew tools (uv, bun, sox, ffmpeg, ripgrep, whisper-cpp) and Bun harness modules.
  • Model Provisioning: Automatically downloads offline speech models (Whisper ggml & Vosk wake models).
  • Self-Healing Supervisor Watchdog: Supervises the agent process, re-starts OpenAgent on crashes with exponential backoff, and keeps WhatsApp Desktop backgrounded and alive.
  • Interactive Diagnostics: Run ./boot.py --doctor to conduct a zero-touch preflight audit of all hardware, harnesses, and permissions.
# Common launch commands:
./boot.py --voice --send-mode audio  # Recommended: hands-free wake word ("Wake up Jarvis")
./boot.py                           # Push-to-talk mode (hold F8 to speak)
./boot.py --doctor                  # Run preflight health check without starting agent
./boot.py --voice --send-mode text  # Wake-word mode with local Whisper STT transcription
./boot.py --start-firecrawl         # Auto-spinup Firecrawl Docker scraper engine
./boot.py --start-chrome            # Auto-launch Chrome with remote debugging on port 9222
./calibrate.py --dump               # Dump sanitized AX UI tree for deep debugging
./test.py --unit                    # Run only unit test suite
./test.py --harness                 # Test live Bun IPC harness

2. Grant macOS Permissions

Open System Settings → Privacy & Security and verify permissions for your terminal application:

  • Accessibility: UI inspection and desktop automation
  • Input Monitoring: Global push-to-talk hotkey (F8)
  • Microphone: Audio recording via SoX
  • Screen Recording: Window capture (mac_see)
  • Automation: System Events and AppleScript app control

3. Connect Instinct (One-Time)

Once OpenAgent is running, initialize Instinct with its capabilities:

  1. Open docs/JARVIS_INSTRUCTIONS.md.

    ⚠️ Note for Readers: docs/JARVIS_INSTRUCTIONS.md is the author's personal setup and operational file (containing his personal accounts, subreddits, and persona guidelines). You will need to edit it according to your own name, social media handles, accounts, and requirements before sending it to your agent.

  2. Copy the initialization instruction prompt.
  3. Paste it directly into your WhatsApp chat with Instinct.

Instinct will recognize the JARVIS_CALL protocol and begin executing tasks on your Mac!

How to Operate

Jarvis mode (recommended). Start OpenAgent with continuous listening enabled:

./boot.py --voice --send-mode audio

Push-to-talk. Start with ./boot.py (or ./start.sh). Hold F8, speak, then release to send. Holding F8 during a reply cuts the reply short. Press Esc to cancel or exit.

Tool Suite

Instinct calls tools by wrapping structured JSON in a transport envelope: JARVIS_CALL:<base64-encoded-JSON>:END.

There are 55+ tools across five engines. Expand a section for the full reference.

Developer Harness Tools (8 tools)
ToolDescriptionKey Arguments
bashExecute shell commands in zshcommand, cwd, timeout_ms
readRead file contents or list directories with paginationpath, offset, limit
writeAtomically write or overwrite filespath, content
editExact chunk search-and-replace with unified diff outputpath, old_string, new_string
grepHigh-speed regex code search via ripgreppattern, path
globFind files matching glob patternspattern, path
applescriptExecute multiline native AppleScript via osascriptscript
system_infoInspect local OS version, hardware, and runtime status(none)
Native macOS Computer-Use Tools (10 tools)
ToolDescriptionKey Arguments
mac_seeCapture window screenshot and extract interactive UI elementsapp, send_image, include_summary
mac_clickPID-targeted mouse click without stealing focusx, y, app, button, click_count
mac_typeType text directly into a target applicationtext, app
mac_keyTrigger keyboard shortcuts (e.g., cmd+s, enter)key, app
mac_dragPerform drag-and-drop operationsstart_x, start_y, end_x, end_y, app
mac_scrollSend directional scroll eventsx, y, dx, dy, app
mac_appsList all running applications with process IDs(none)
mac_windowsList open window titles and bounds for an applicationapp
mac_axQuery and interact with macOS Accessibility elementsaction, app, text
mac_pythonRun compound, multi-step UI workflows locally in Pythoncode
Real Browser Control Tools (Browser Harness CDP) (14 tools)
ToolDescriptionKey Arguments
browser_openNavigate or open a new tab in your authenticated Chrome sessionurl, new_tab
browser_infoInspect page URL, title, viewport dimensions, and scroll offset(none)
browser_clickComposited CDP mouse click bypassing iframes/shadow DOMx, y, selector, button, click_count
browser_fillFramework-safe form input (React/Vue synthetic events)selector, text, clear_first, timeout
browser_typeType text into currently focused web elementtext
browser_keyTrigger web keyboard shortcuts (Enter, Escape, Tab, Backspace)key, modifiers
browser_scrollScroll by delta pixels or scroll element into viewdx, dy, selector
browser_tabsBackground tab management (list, new, switch, close, current)action, target, url
browser_seeInspect tab state and send visual screenshot to WhatsAppsend_image, max_elements
browser_axDiscover buttons/inputs via internal Accessibility Treeaction, text, role, limit
browser_evalEvaluate JavaScript in the active tab contextexpression
browser_waitWait for page load, network idle, or element appearancefor_what, selector, timeout
browser_pythonUltra-fast compound browser burst execution (<200ms)code, timeout
domain_skillsRetrieve pre-built domain automation skills for 80+ platformshost
Self-Hosted Web Ingestion & Extraction Tools (Firecrawl Engine) (7 tools)
ToolDescriptionKey Arguments
firecrawl_scrapeScrape dynamic web pages directly into clean LLM Markdownurl, formats, only_main_content, wait_for
firecrawl_searchSearch the web and return full Markdown from top hits in one shotquery, limit, scrape_options
firecrawl_crawlAsynchronously crawl an entire domain or documentation treeurl, max_depth, limit
firecrawl_statusCheck the progress and page count of an ongoing crawljob_id
firecrawl_mapFast sitemap and URL discovery across a domainurl, search, limit
firecrawl_extractExtract structured JSON data matching a schema or prompturls, prompt, schema
firecrawl_doctorInspect health of self-hosted local Firecrawl daemon(none)
Social Media Automation Tools (LocoAgent Engine) (13 tools)

Operate real social accounts with primary focus on Threads (threads.net) and Reddit (reddit.com) (plus X/Twitter, LinkedIn, Instagram, Facebook, YouTube, TikTok, and GitHub) with persistent anti-detection Chrome profiles:

ToolDescriptionKey Arguments
social_targetsInspect all configured social platforms and live CDP port status(none)
social_setupLaunch persistent, isolated Chrome browser for a social platformtarget, all, reset
social_postPublish a post or tweet with optional image/media attachmenttext, platform, media
social_replyReply to a post or tweet with anti-deduplication checkurl, text, platform
social_likeLike or react to a post with anti-deduplication checkurl, platform
social_searchSearch social media discussions by keyword/hashtagquery, platform, tab
social_screenshotCapture live social feed screenshot delivered to WhatsAppplatform, full, annotate
social_workflowControl automation pipelines (run, start, stop, daemon, status)action, id, interval
social_agent_taskDelegate an end-to-end autonomous social media missionprompt, model, timeout
social_dedup_checkCheck if a URL was already interacted with in persistent ledgerplatform, action, url
social_logRecord a successful interaction into the operation logplatform, action, url, status, note
social_execExecute direct agent-browser CDP command on any targetplatform, command
social_doctorRun health checks on Bun, agent-browser CLI, and Chrome CDP(none)

Full schema specifications and example payloads are available in docs/JARVIS_INSTRUCTIONS.md.

Configuration

OpenAgent is configured via .env in the project root:

VariableDefaultDescription
BRIDGE_WHATSAPP_NUMBER+16508702892WhatsApp phone number for your Instinct agent
BRIDGE_SAFE_MODEtrueRestrict execution strictly to the verified chat header
BRIDGE_HOTKEYf8Push-to-talk hotkey (f8, f6, right_shift, etc.)
BRIDGE_SEND_MODEaudioaudio (sends AAC/M4A voice note) or text (local Whisper STT)
BRIDGE_SEND_ROUTEpickerSend route: picker (native attachment), clipboard, or auto
BRIDGE_WHISPER_MODELmodels/ggml-base.binPath to offline Whisper model
BRIDGE_VOICE_MODELmodels/vosk-model-...Path to offline Vosk wake-word model
BRIDGE_VOICE_SILENCE_SECONDS2.0Silence delay before auto-submitting voice input
BH_AGENT_WORKSPACEsrc/tools/browser-harness/agent-workspaceDirectory for agent-editable helpers and domain skills
BH_DOMAIN_SKILLS1Enable site-specific domain skill recipes
BH_TAB_MARKER1Enable horse emoji (🐎) marker on agent-managed tabs
FIRECRAWL_API_URLhttp://localhost:3002Local self-hosted Firecrawl API daemon endpoint
FIRECRAWL_API_KEY(empty)Optional API key (unauthenticated by default when self-hosting)
FIRECRAWL_TIMEOUT60.0Timeout in seconds for web scraping and crawls
LOCOAGENT_ENABLEDtrueEnable LocoAgent social automation engine
LOCOAGENT_ROOTsrc/tools/locoagentDirectory path for LocoAgent checkout
LOCOAGENT_DEFAULT_PLATFORMthreadsDefault social media target platform
LOCOAGENT_TIMEOUT120.0Timeout in seconds for social automation commands
BRIDGE_LOG_FILE~/Library/Logs/OpenAgent/bridge.jsonlDiagnostic JSONL event log path

Testing & Diagnostics

Run the comprehensive pytest suite:

uv run pytest

Run the macOS native adapter health check:

uv run python -c "from OpenAgent.mac_adapter import MacAdapter; print(MacAdapter().doctor())"

Stream live runtime logs:

tail -f ~/Library/Logs/OpenAgent/bridge.jsonl

For advanced Accessibility tree inspection and calibration, see docs/CALIBRATION.md.

Documentation


Contributing

Contributions are welcome. High-impact areas include:

  • New macOS harness primitives and tool adapters
  • Voice pipeline latency and wake-word accuracy
  • Browser domain skills for additional sites
  • LocoAgent workflows and platform playbooks
  • Safety guards, auditing and sandboxing

See CONTRIBUTING.md for the development workflow and CODE_OF_CONDUCT.md for community guidelines.

Credits & Acknowledgments

OpenAgent is built with gratitude on the shoulders of the open-source agent tooling community:

  • OpenCode — Inspiring open-source agentic coding architectures.
  • Browser Use — Directly integrating Browser Harness for high-speed Chrome CDP automation and domain skills, alongside macOS Harness for pioneering native macOS computer-use foundations.
  • whisper.cpp & Vosk — Lightweight, local, low-latency audio intelligence.
  • Firecrawl — Pioneering open-source web scraping, crawling, and clean LLM markdown extraction engine.
  • LocoAgent — Autonomous social media agent by LocoreMind providing persistent real-browser sessions, operation deduplication, and platform playbooks.

OpenAgent is open-source software licensed under the MIT License.

GitCoder052023/OpenAgent

OpenAgent is the local macOS body for Instinct. It's an always-listening, hands-free assistant that operates your Mac, your browser, the web and your social accounts while you get on with your day.

TypeScript

2

268 commits

updated Oct 7, 2026

See the code

See what people are saying

SourceMessageScoreDate

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/LLMDevs)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

0

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/artificial)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

7

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/ArtificialInteligence)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

0

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/coolgithubprojects)

1

Oct 7, 2026

I've built an opensource Jarvis (literally) that operates your Mac, your browser, your social-media while you get on with your day (r/SideProject)

I'm building OpenAgent. it's an hands-free assistant that operates your Mac, your browser, your social-media while you get on with your day I wanted to talk to my Mac like Tony Stark talks to Jarvis. So I started building OpenAgent. It began as a small voice bridge for Instinct (search online about…

1

Oct 7, 2026

README

OpenAgent

OpenAgent ⌘

Say "Wake up, Jarvis." Then just talk.
OpenAgent is the local macOS body for Instinct. It's an always-listening, hands-free assistant that operates your Mac, your browser, the web and your social accounts while you get on with your day.

macOS Python uv Bun Tests License: MIT Status

Quick Start · Talking to Jarvis · Why OpenAgent · How It Works · Features · Tool Suite · Configuration · Docs · Contributing


OpenAgent connects Instinct, a personal AI assistant that lives in your messaging apps, to your Mac and gives it a voice interface modeled on Jarvis. Start it once and say "Wake up, Jarvis." From then on. You speak naturally from anywhere in the room, and Instinct reasons over each request while OpenAgent carries it out locally: shell commands, code edits, native app control, your authenticated Chrome, self-hosted web scraping and your social media accounts. Replies come back out loud, and screenshots & results land in your chat.

The two halves together make up a personal assistant that can act in the cloud and on your desktop.

[ Jarvis sleeping ]

You (making coffee):  "Wake up, Jarvis."
[ Jarvis awake ]

You:       "Run the test suite on OpenAgent. If it's green, post a Threads update
            about what I shipped today."
             bash               ./test.py                              195 passed
             bash               git log --since=midnight --oneline     6 commits
             social_dedup_check threads / post                         not yet posted
             social_post        threads.net (authenticated profile)    published
Jarvis:    "All 195 tests passed. The update is live on Threads."

You (from the couch):  "Show me what it looks like."
             social_screenshot  live Chrome session                    delivered to WhatsApp
Jarvis:    "Screenshot's in your chat."

You:       "Jarvis, stand by."  →  "Confirm stand by, Jarvis."
[ Jarvis sleeping ]

Talking to Jarvis

OpenAgent is built around continuous, hands-free conversation: the way Tony Stark talks to Jarvis while he's working, making coffee or watching TV.

  • Wake once, keep talking. Say "Wake up, Jarvis" (or "Hey Jarvis") and the session stays awake. Speak naturally, pause, and the request is sent after a stretch of silence.
  • Natural turn-taking. Instinct's voice replies play automatically through your speakers.
  • Freeform follow-ups. The conversation lives in your Instinct chat, so context carries across turns. "Now do the same for Reddit" or "Make it shorter" works the way you'd expect.
  • Private by default. Wake-word detection (Vosk) runs fully offline, and idle audio is never saved or sent. Nothing leaves your Mac until Jarvis is awake and you've spoken a request.
  • Push-to-talk fallback. For quiet environments or shared spaces, hold F8 to talk instead.

Why OpenAgent

Instinct is an invite-only personal AI assistant that works entirely through iMessage and WhatsApp. It has no app and no dashboard: you text it, send a voice note or call it. Instinct works as a chief of staff rather than a chatbot. It books appointments, manages travel, disputes bills, cancels subscriptions and reaches out on its own to follow up on deadlines. It connects to services like GitHub, Google and Notion, and it handles general computer work on virtual desktops in its own cloud.

Because that computer use happens in Instinct's cloud environment, it can reach your accounts but not your machine. OpenAgent closes that gap:

CapabilityInstinctInstinct + OpenAgent
Always-listening, hands-free voice sessions at your desk—✓
Account-level tasks (email, calendar, GitHub, Notion)✓✓
Proactive reminders and follow-ups✓✓
Shell execution and code edits on your local machine—✓
Seeing your screen and controlling native macOS apps—✓
Driving your authenticated, everyday Chrome profile—✓
Operating WhatsApp Desktop—✓
Posting and engaging on Threads, Reddit, X, LinkedIn and more from your own browser sessions—✓
Private, self-hosted web scraping and crawling—✓
Instinct thinks. OpenAgent acts.

How It Works

OpenAgent uses WhatsApp Desktop as the transport between Instinct and your Mac. You don't need an API key, a hosted backend or a custom integration.

  1. Input. Once woken with "Wake up, Jarvis", OpenAgent listens continuously to your speech until a natural pause, and then sends either a voice note or a local Whisper transcript to your Instinct chat.
  2. Tool calls. Instinct replies with structured calls wrapped in a JARVIS_CALL:<base64-JSON>:END envelope. Base64 encoding protects the payload from WhatsApp's markdown formatting, which removes characters like *, _ and ~.
  3. Observation. OpenAgent reads incoming messages through the macOS Accessibility API.
  4. Verification. A fail-closed guard confirms the message came from the verified Instinct chat.
  5. Execution. The dispatcher routes the call to one of five engines and runs it locally.
  6. Response. Results, diffs and screenshots go back into the chat. Instinct continues the loop until the task is complete, and its voice replies play back automatically.
sequenceDiagram
    actor User
    participant OA as OpenAgent (local)
    participant WA as WhatsApp Desktop
    participant IN as Instinct (cloud)
    User->>OA: Wake word, then freeform speech
    OA->>WA: Voice note or transcript
    WA->>IN: Deliver message
    IN-->>WA: JARVIS_CALL envelope
    WA-->>OA: Read via Accessibility API
    OA->>OA: Verify chat, dedupe, dispatch, execute
    OA->>WA: Tool result / screenshot
    WA->>IN: Next turn
    IN-->>WA: Final voice reply
    WA-->>User: Automatic playback

Core Features

EngineWhat it gives InstinctBuilt on
Developer HarnessSandboxed bash, paginated read, atomic write, exact-match edit, ripgrep search, glob, AppleScriptBun + TypeScript
Voice InterfaceOffline wake word, continuous hands-free sessions, silence-based turn-taking, echo guard, automatic reply playbackVosk, whisper.cpp, SoX
Native Computer UseWindow capture, Accessibility tree queries, PID-targeted clicks, keystrokes, drags and scrolls that don't steal focusmacOS Accessibility & Quartz
Real Browser ControlYour authenticated Chrome: background tabs, compositor clicks through iframes and shadow DOM, framework-safe form filling, 97 site-specific domain skillsBrowser Harness (CDP)
Web IngestionScrape to Markdown, search with full-content results, recursive crawl, site mapping, schema-based JSON extractionSelf-hosted Firecrawl (Docker)
Social AutomationPosting, replies, likes, search and scheduled workflows on Threads and Reddit (plus X, LinkedIn, Instagram, Facebook, YouTube, TikTok, GitHub) in isolated, persistent Chrome profilesLocoAgent (CDP)

Self-healing runtime. boot.py provisions its own environment, installs missing dependencies, downloads speech models, restarts the agent (and its listening session) with exponential backoff and keeps WhatsApp Desktop alive in the background. ./boot.py --doctor runs a full preflight audit.

Quick Start

Prerequisites

  • macOS 14 (Sonoma) or macOS 15 (Sequoia) on Apple Silicon or Intel
  • uv (Astral Python package and project manager)
  • Homebrew & Bun
  • Official WhatsApp Desktop installed and logged in

1. One-Command Autonomous Python Scripts

OpenAgent includes dedicated, single-command Python scripts for all lifecycle tasks:

ScriptPurposeCommon Command
boot.pyAutonomous Boot & Watchdog./boot.py (or python3 boot.py)
install.pyFull Zero-Touch Installation./install.py (or python3 install.py)
calibrate.pyWhatsApp UI Auto-Calibration./calibrate.py --save
test.pyComprehensive Test Runner./test.py

Quick Start:

git clone https://github.com/GitCoder052023/OpenAgent.git
cd OpenAgent

# 1. Full system installation (homebrew tools, venv, bun harness, speech models)
./install.py

# 2. Calibrate WhatsApp Desktop UI paths and labels (auto-detected)
./calibrate.py --save

# 3. Verify entire system with test suite
./test.py

# 4. Launch Jarvis with hands-free wake word enabled
./boot.py --voice --send-mode audio

boot.py is an autonomous, self-bootstrapping orchestrator and supervisor:

  • Self-Bootstrapping: Auto-detects runtime, provisions/syncs virtual environment with uv, and re-execs inside .venv without manual activation.
  • Auto-Healing Dependencies: Auto-resolves and installs Homebrew tools (uv, bun, sox, ffmpeg, ripgrep, whisper-cpp) and Bun harness modules.
  • Model Provisioning: Automatically downloads offline speech models (Whisper ggml & Vosk wake models).
  • Self-Healing Supervisor Watchdog: Supervises the agent process, re-starts OpenAgent on crashes with exponential backoff, and keeps WhatsApp Desktop backgrounded and alive.
  • Interactive Diagnostics: Run ./boot.py --doctor to conduct a zero-touch preflight audit of all hardware, harnesses, and permissions.
# Common launch commands:
./boot.py --voice --send-mode audio  # Recommended: hands-free wake word ("Wake up Jarvis")
./boot.py                           # Push-to-talk mode (hold F8 to speak)
./boot.py --doctor                  # Run preflight health check without starting agent
./boot.py --voice --send-mode text  # Wake-word mode with local Whisper STT transcription
./boot.py --start-firecrawl         # Auto-spinup Firecrawl Docker scraper engine
./boot.py --start-chrome            # Auto-launch Chrome with remote debugging on port 9222
./calibrate.py --dump               # Dump sanitized AX UI tree for deep debugging
./test.py --unit                    # Run only unit test suite
./test.py --harness                 # Test live Bun IPC harness

2. Grant macOS Permissions

Open System Settings → Privacy & Security and verify permissions for your terminal application:

  • Accessibility: UI inspection and desktop automation
  • Input Monitoring: Global push-to-talk hotkey (F8)
  • Microphone: Audio recording via SoX
  • Screen Recording: Window capture (mac_see)
  • Automation: System Events and AppleScript app control

3. Connect Instinct (One-Time)

Once OpenAgent is running, initialize Instinct with its capabilities:

  1. Open docs/JARVIS_INSTRUCTIONS.md.

    ⚠️ Note for Readers: docs/JARVIS_INSTRUCTIONS.md is the author's personal setup and operational file (containing his personal accounts, subreddits, and persona guidelines). You will need to edit it according to your own name, social media handles, accounts, and requirements before sending it to your agent.

  2. Copy the initialization instruction prompt.
  3. Paste it directly into your WhatsApp chat with Instinct.

Instinct will recognize the JARVIS_CALL protocol and begin executing tasks on your Mac!

How to Operate

Jarvis mode (recommended). Start OpenAgent with continuous listening enabled:

./boot.py --voice --send-mode audio

Push-to-talk. Start with ./boot.py (or ./start.sh). Hold F8, speak, then release to send. Holding F8 during a reply cuts the reply short. Press Esc to cancel or exit.

Tool Suite

Instinct calls tools by wrapping structured JSON in a transport envelope: JARVIS_CALL:<base64-encoded-JSON>:END.

There are 55+ tools across five engines. Expand a section for the full reference.

Developer Harness Tools (8 tools)
ToolDescriptionKey Arguments
bashExecute shell commands in zshcommand, cwd, timeout_ms
readRead file contents or list directories with paginationpath, offset, limit
writeAtomically write or overwrite filespath, content
editExact chunk search-and-replace with unified diff outputpath, old_string, new_string
grepHigh-speed regex code search via ripgreppattern, path
globFind files matching glob patternspattern, path
applescriptExecute multiline native AppleScript via osascriptscript
system_infoInspect local OS version, hardware, and runtime status(none)
Native macOS Computer-Use Tools (10 tools)
ToolDescriptionKey Arguments
mac_seeCapture window screenshot and extract interactive UI elementsapp, send_image, include_summary
mac_clickPID-targeted mouse click without stealing focusx, y, app, button, click_count
mac_typeType text directly into a target applicationtext, app
mac_keyTrigger keyboard shortcuts (e.g., cmd+s, enter)key, app
mac_dragPerform drag-and-drop operationsstart_x, start_y, end_x, end_y, app
mac_scrollSend directional scroll eventsx, y, dx, dy, app
mac_appsList all running applications with process IDs(none)
mac_windowsList open window titles and bounds for an applicationapp
mac_axQuery and interact with macOS Accessibility elementsaction, app, text
mac_pythonRun compound, multi-step UI workflows locally in Pythoncode
Real Browser Control Tools (Browser Harness CDP) (14 tools)
ToolDescriptionKey Arguments
browser_openNavigate or open a new tab in your authenticated Chrome sessionurl, new_tab
browser_infoInspect page URL, title, viewport dimensions, and scroll offset(none)
browser_clickComposited CDP mouse click bypassing iframes/shadow DOMx, y, selector, button, click_count
browser_fillFramework-safe form input (React/Vue synthetic events)selector, text, clear_first, timeout
browser_typeType text into currently focused web elementtext
browser_keyTrigger web keyboard shortcuts (Enter, Escape, Tab, Backspace)key, modifiers
browser_scrollScroll by delta pixels or scroll element into viewdx, dy, selector
browser_tabsBackground tab management (list, new, switch, close, current)action, target, url
browser_seeInspect tab state and send visual screenshot to WhatsAppsend_image, max_elements
browser_axDiscover buttons/inputs via internal Accessibility Treeaction, text, role, limit
browser_evalEvaluate JavaScript in the active tab contextexpression
browser_waitWait for page load, network idle, or element appearancefor_what, selector, timeout
browser_pythonUltra-fast compound browser burst execution (<200ms)code, timeout
domain_skillsRetrieve pre-built domain automation skills for 80+ platformshost
Self-Hosted Web Ingestion & Extraction Tools (Firecrawl Engine) (7 tools)
ToolDescriptionKey Arguments
firecrawl_scrapeScrape dynamic web pages directly into clean LLM Markdownurl, formats, only_main_content, wait_for
firecrawl_searchSearch the web and return full Markdown from top hits in one shotquery, limit, scrape_options
firecrawl_crawlAsynchronously crawl an entire domain or documentation treeurl, max_depth, limit
firecrawl_statusCheck the progress and page count of an ongoing crawljob_id
firecrawl_mapFast sitemap and URL discovery across a domainurl, search, limit
firecrawl_extractExtract structured JSON data matching a schema or prompturls, prompt, schema
firecrawl_doctorInspect health of self-hosted local Firecrawl daemon(none)
Social Media Automation Tools (LocoAgent Engine) (13 tools)

Operate real social accounts with primary focus on Threads (threads.net) and Reddit (reddit.com) (plus X/Twitter, LinkedIn, Instagram, Facebook, YouTube, TikTok, and GitHub) with persistent anti-detection Chrome profiles:

ToolDescriptionKey Arguments
social_targetsInspect all configured social platforms and live CDP port status(none)
social_setupLaunch persistent, isolated Chrome browser for a social platformtarget, all, reset
social_postPublish a post or tweet with optional image/media attachmenttext, platform, media
social_replyReply to a post or tweet with anti-deduplication checkurl, text, platform
social_likeLike or react to a post with anti-deduplication checkurl, platform
social_searchSearch social media discussions by keyword/hashtagquery, platform, tab
social_screenshotCapture live social feed screenshot delivered to WhatsAppplatform, full, annotate
social_workflowControl automation pipelines (run, start, stop, daemon, status)action, id, interval
social_agent_taskDelegate an end-to-end autonomous social media missionprompt, model, timeout
social_dedup_checkCheck if a URL was already interacted with in persistent ledgerplatform, action, url
social_logRecord a successful interaction into the operation logplatform, action, url, status, note
social_execExecute direct agent-browser CDP command on any targetplatform, command
social_doctorRun health checks on Bun, agent-browser CLI, and Chrome CDP(none)

Full schema specifications and example payloads are available in docs/JARVIS_INSTRUCTIONS.md.

Configuration

OpenAgent is configured via .env in the project root:

VariableDefaultDescription
BRIDGE_WHATSAPP_NUMBER+16508702892WhatsApp phone number for your Instinct agent
BRIDGE_SAFE_MODEtrueRestrict execution strictly to the verified chat header
BRIDGE_HOTKEYf8Push-to-talk hotkey (f8, f6, right_shift, etc.)
BRIDGE_SEND_MODEaudioaudio (sends AAC/M4A voice note) or text (local Whisper STT)
BRIDGE_SEND_ROUTEpickerSend route: picker (native attachment), clipboard, or auto
BRIDGE_WHISPER_MODELmodels/ggml-base.binPath to offline Whisper model
BRIDGE_VOICE_MODELmodels/vosk-model-...Path to offline Vosk wake-word model
BRIDGE_VOICE_SILENCE_SECONDS2.0Silence delay before auto-submitting voice input
BH_AGENT_WORKSPACEsrc/tools/browser-harness/agent-workspaceDirectory for agent-editable helpers and domain skills
BH_DOMAIN_SKILLS1Enable site-specific domain skill recipes
BH_TAB_MARKER1Enable horse emoji (🐎) marker on agent-managed tabs
FIRECRAWL_API_URLhttp://localhost:3002Local self-hosted Firecrawl API daemon endpoint
FIRECRAWL_API_KEY(empty)Optional API key (unauthenticated by default when self-hosting)
FIRECRAWL_TIMEOUT60.0Timeout in seconds for web scraping and crawls
LOCOAGENT_ENABLEDtrueEnable LocoAgent social automation engine
LOCOAGENT_ROOTsrc/tools/locoagentDirectory path for LocoAgent checkout
LOCOAGENT_DEFAULT_PLATFORMthreadsDefault social media target platform
LOCOAGENT_TIMEOUT120.0Timeout in seconds for social automation commands
BRIDGE_LOG_FILE~/Library/Logs/OpenAgent/bridge.jsonlDiagnostic JSONL event log path

Testing & Diagnostics

Run the comprehensive pytest suite:

uv run pytest

Run the macOS native adapter health check:

uv run python -c "from OpenAgent.mac_adapter import MacAdapter; print(MacAdapter().doctor())"

Stream live runtime logs:

tail -f ~/Library/Logs/OpenAgent/bridge.jsonl

For advanced Accessibility tree inspection and calibration, see docs/CALIBRATION.md.

Documentation


Contributing

Contributions are welcome. High-impact areas include:

  • New macOS harness primitives and tool adapters
  • Voice pipeline latency and wake-word accuracy
  • Browser domain skills for additional sites
  • LocoAgent workflows and platform playbooks
  • Safety guards, auditing and sandboxing

See CONTRIBUTING.md for the development workflow and CODE_OF_CONDUCT.md for community guidelines.

Credits & Acknowledgments

OpenAgent is built with gratitude on the shoulders of the open-source agent tooling community:

  • OpenCode — Inspiring open-source agentic coding architectures.
  • Browser Use — Directly integrating Browser Harness for high-speed Chrome CDP automation and domain skills, alongside macOS Harness for pioneering native macOS computer-use foundations.
  • whisper.cpp & Vosk — Lightweight, local, low-latency audio intelligence.
  • Firecrawl — Pioneering open-source web scraping, crawling, and clean LLM markdown extraction engine.
  • LocoAgent — Autonomous social media agent by LocoreMind providing persistent real-browser sessions, operation deduplication, and platform playbooks.

OpenAgent is open-source software licensed under the MIT License.