New: Synapse is a desktop app, with forks for side questions ↗
macOS app ▪ open source ▪ MIT

Synapse

Every coding agent you run, in one app, sorted by workspace and worktree. Fork a session to ask a side question without dirtying it. Draw a line from one agent to another and the second one sees what the first is doing.

Read the docs ›
Fig.0  7 agents, 8 links, live move the cursor

Every agent.
One window.

Workspaces on the left, real terminals on the right. Each project lists its worktrees and the agents running in them. Press ⌃1, ⌃2 and an agent starts in place, already wired into Synapse.

Fig.1  Synapse.app
claude-web
◇ synapse⑂ fork
acme-web ⎇ main · claudetype /sfork <question> to fork without touching this context

A Workspaces

Clone a repo, open a folder, or start from a template. The library finds every workspace already on the machine.

  1. A.1Project, worktree, session
  2. A.2⇧⌘N new worktree
  3. A.3Folds stay folded

B Real terminals

Every agent runs in its own PTY with the PATH a login shell would give it. macOS editing keys work, ⇧Enter is a newline.

  1. B.1⌘T shell, ⌘N agent
  2. B.2Sized to the pane
  3. B.3Right-click for the rest

C Launcher

Claude, Codex, Gemini, OpenCode, Cursor, Copilot and Amp, one key each. Launch profiles are plain JSON, so changing a flag is one line.

  1. C.1⌃1 … ⌃7 start an agent
  2. C.2Light and dark, like the canvas
  3. C.3Ships as Synapse.app

Ask on the side.
Keep the thread clean.

An agent hands you five points and you want to dig into the third. Type /sfork why 3? and a child session answers from the parent's context. The question never enters the parent. Pop the fork when you're done, or send a short summary back.

Fig.2  the deck

01Stacks

A fork covers its parent like a card. Hover the deck and the whole tree drops down.

  1. 1.1/sfork or ⇧⌘F
  2. 1.2⌘E fans the tree out
  3. 1.3Forks of forks, any depth
Fig.3  lineage

02Lineage

Forks show up on the canvas too, hanging off the agent they came from.

  1. 2.1Dashed line, ⑂ at the child
  2. 2.2The question is the label
  3. 2.3Nothing flows back unless asked

Every agent.
One canvas.

Each running agent is a node, the ones in the app and the ones in your other terminals. Working ones pulse fast, idle ones breathe, forks hang off their parent. Drag from one node to another and context starts flowing. ⌃Tab flips the app into it, ⌘-click a node opens its session.

Fig.4  the node view, ⌃Tab in the app or localhost:4747

Context flows
where you point.

No orchestrator, no broadcast. You decide who reads whom, and the rest happens on its own: context arrives with the next prompt, messages land in the inbox.

Fig.5

01Links

Drag from one agent to another. That's the whole setup.

  1. 1.1A → B means B reads A
  2. 1.2Draw both ways for a pair
  3. 1.3No restarts, no config
Fig.6
~/acme-web $ claude
synapse ⇠ reads codex-api ⇢ shares with api-review
> wire the new rate limiter into checkout
synapse ⇢ pulled codex-api 13 msgs, 3.4k chars
✉ 1 message from api-review
● Codex already landed RateLimitError with retryAfter.
Surfacing it in the form instead of a generic error.

02Context

Arrives before you ask, and you see it arrive.

  1. 2.1Injected on every prompt
  2. 2.2Capped at 8k chars per link
  3. 2.3Shown in Claude Code and Codex
Fig.7
claude-web claude → codex-api
Did the rate limiter land? About to touch auth/session.ts.
codex-api codex → claude-web
Landed in a41f9c2. Hold off on session.ts, moving token refresh there.
gemini-docs gemini → codex-api
Writing docs for the new 429. What unit is retryAfter?
opencode-infra opencode → gemini-docs
Seconds. Same limit is set in the gateway config.

03Messaging

Every agent can text every agent, whichever CLI it runs in.

  1. 3.1Ask what another agent found
  2. 3.2Hand off a task
  3. 3.3Warn before touching a file
Fig.8
⌘F

    04Search

    Twenty agents open? Find any one in a keystroke.

    1. 4.1Fuzzy, word by word
    2. 4.2Name, project, type, folder
    3. 4.3Worktrees join their repo

    Works with what
    you already run.

    Start agents in the app, or don't. Synapse also finds the ones in your own terminals and in Superset, from Claude Code's session registry and a process scan.

    Fig.9  support matrix
    AgentShows upPeers read its contextMessagesTerminal line

    Or let agents
    wire themselves.

    Six operations, three surfaces. Every agent gets the same tools over MCP and the CLI. Claude Code and Codex also get a skill, so you can just ask.

    A CLI

    # identity from the process tree
    synapse peers --all
    synapse link codex-api
    synapse read codex-api
    synapse send codex-api "landed?"
    synapse inbox
    synapse ui

    B MCP

    # stdio, zero dependencies
    synapse_peers
    synapse_link    { agent, direction }
    synapse_unlink  { agent }
    synapse_read    { agent, max }
    synapse_send    { agent, text }
    synapse_inbox

    C Skill

    # Claude Code and Codex
    > /synapse connect to the codex
      agent and ask what it found
    
    ⏺ synapse link codex-api
    ⏺ synapse send codex-api "..."
      Linked. Reply lands next prompt.

    Status.

    Everything stays on your machine. Transcripts are read from disk, links, messages and fork lineage live in ~/.synapse, and Synapse makes no network calls.

    ▪ Building

    Multiplayer

    Pair with a teammate using an invite code, then draw a link to share one agent's context with theirs. One way, nothing shared by default, and the relay stores nothing.

    ▪ New

    The desktop app

    Workspaces, worktrees and real agent terminals in one window, with the canvas one keystroke away.

    ▪ New

    Forks

    /sfork or ⇧⌘F opens a side session from the current context. Stacked as a deck, drawn as lineage on the canvas.

    ▪ Shipped

    Synapse in the terminal

    Claude Code and Codex print a line whenever context or messages arrive. Live band and toasts in Claude Code.

    ▪ Shipped

    Agents talk

    Any agent can message any linked agent, across CLIs. Plus ⌘F fuzzy search and markdown in the agent panel.

    Give your agents
    a nervous system.

    One app. Every agent you run, connected.

    Star on GitHub ›