Skip to content

Repository files navigation

OpenMausBot

Your own team of AI bots, in a chat app.

Every bot in the sidebar is a real agent — Claude or Codex running locally under the hood — with its own personality, its own model, its own cloud computer, and its own connected apps. Talk to them like contacts. Watch them work. Approve what matters.

TypeScript React Electron Agents PRs


Download OpenMausBot for macOS

Apple silicon · signed & notarized · all releases



OpenMausBot — a Telegram-style chat app where every chat is a real AI agent

Why

One assistant in one box is the wrong shape for agents. OpenMausBot treats AI as a messaging app: a roster of bots you chat with — each with its own personality, memory of its thread, model, computer, and apps — built on the agents you already have:

  • Bring your own agents. Bots run on the claude and codex CLIs installed on your Mac — your existing logins and subscriptions, no new accounts, no proxy in the middle.
  • Local first. One small harness server on 127.0.0.1 owns every agent process. Transcripts, keys, and events live in ~/.openmausbot, not a cloud.
  • Agents with hands. Each bot can get a real computer — a cloud Linux desktop it drives while you watch live, or your own Mac — plus 500+ apps through Composio Connect.

Features

🧠 Pick a brain per bot

A model picker with a provider rail — Claude and Codex models side by side, defaults marked, unavailable providers dimmed with the reason. Switch a bot's model mid-conversation.

Model picker with provider rail

🖥️ Every bot gets a computer

Open the Computer panel and the bot's cloud desktop spins up on its own — live screen preview while it works, "Open desktop" to take over in your browser, or point the bot at this Mac instead.

Computer panel with live screen preview

🙋 Bots ask before they act

Shell commands, file edits, and questions surface as inline cards — Allow / Deny / answer in chat. A permission broker turns every risky action into a decision you make, for cloud and local computers alike.

Approval and question cards in chat

🔌 Connected apps

A one-click marketplace over Composio Connect: Gmail, Slack, GitHub, Notion, Linear and hundreds more. OAuth once, and every bot can use them as tools.

Connected apps marketplace

🗂 Manage bots like chats

Right-click any bot: pin, mark unread, edit profile, duplicate, copy conversation ID, hide, delete. It's a messaging app — your agents behave like contacts.

Bot context menu

🔑 Keys once, everything lights up

Paste credentials in App Settings — they persist locally and the provider fleet hot-reloads instantly. Secrets are write-only: the UI only ever sees "configured" flags.

App-level settings with API keys

Also in the box: streaming replies with tool-run activity chips · native macOS dictation from the composer mic (on-device Apple speech recognition — desktop app) · SupaMaus cursor mascots with role-aware expressions · screenshots of the bot's work folded into the transcript.

How it works

Two processes. The app holds no transports of its own — it sends typed commands over HTTP and folds one SSE event stream into state. The harness server owns every agent process and normalizes each provider's native protocol into one canonical runtime event stream (logged per-thread as NDJSON).

flowchart LR
    subgraph app ["App — React + Tailwind (5199)"]
        UI[Chat UI · model picker · computer panel]
    end
    subgraph server ["Harness server (127.0.0.1:8799)"]
        REG[Driver registry] --> BUS[Event bus → SSE]
        BROKER[Permission broker]
    end
    subgraph agents ["Agents on your Mac"]
        CL[claude CLI]
        CX[codex CLI]
    end
    UI -- "HTTP commands" --> server
    BUS -- "one SSE stream" --> UI
    REG --> CL & CX
    CL & CX -- "MCP" --> BROKER
    server -- "Box API" --> BOX[("Cloud computer<br/>box.ascii.dev")]
    server -- "Composio Connect" --> APPS[("Gmail · Slack · GitHub · …")]
Loading
Layer Where What it does
Drivers server/drivers/ One per provider: Claude and Codex over their local CLIs (stream-JSON / JSON-RPC), plus a cloud-computer agent. Unknown drivers degrade to "unavailable", never crash the fleet.
Harness server/harness/ Registry (configs → live instances) and the fan-in event bus every client folds.
API server/index.ts Bots, turns, approvals, model catalog, computer lifecycle, connectors, config — HTTP + SSE.
App src/ The chat shell. Server-backed store, one reducer, zero client-side transports.
Desktop electron/ macOS shell: dictation helper (SFSpeechRecognizer), local screen capture, CUA bridge.

Quick start

Easiest: download the latest .dmg, drag it to Applications, open it. The harness server is embedded — no setup.

From source:

git clone https://github.com/milind-soni/OpenMausBot && cd OpenMausBot
pnpm install

pnpm dev:server    # harness server → 127.0.0.1:8799
pnpm dev           # app → http://127.0.0.1:5199
pnpm dev:desktop   # or the Electron shell

Requirements: macOS, Node 24+, pnpm, and at least one agent CLI — claude or codex — installed and logged in. They appear in the model picker automatically.

Optional, pasted once in App Settings (gear in the sidebar footer):

Key Unlocks
Composio Connect key (ck_…) The connected-apps marketplace
Composio API key (ak_…) The full 500+ app catalog with official logos
Box token (box.ascii.dev) Cloud computers for your bots
pnpm typecheck     # app + server
pnpm build         # typecheck + production build

Status

Early but real — the loop works end to end: message → agent → streamed reply → tools → approvals → computer use. Rough edges to expect: routines (scheduled tasks) are a placeholder, sidebar sections aren't built yet, and Windows/Linux shells haven't been attempted (the harness itself is portable Node).

Contributions welcome — the driver SPI in server/contracts.ts is deliberately small; adding a provider is one file in server/drivers/ plus a one-line registration.

About

Resources

Stars

134 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages