Open source · MIT · local-first

One brain.
Every agent.

Claude Code, Codex, OpenCode and Grok can share a rules file — but not what they learn. Every decision, every session, stops at the tool it happened in. Loom makes it one brain: imported, shared, and handed to whoever works next.

$ npm i -g @loompad/cli
View on GitHub

Node 22+ · macOS, Linux, Windows · no account, no keys

Orchestrates
Claude CodeCodexopencodeGrokCursorGeminiKiro
The Orchestrator Pad — hardware for Loom
Every surface

The same brain, on every screen.

Desktop, terminal and command line are paired clients of one local daemon — which is why the window and the terminal below are showing the identical five memories. The pad puts the same thing on your desk.

The Loom desktop app — the Brain tab, showing learned memory units by kind

The workspace: thread, board, source control — and the memory the project has learned, each unit tagged with what it is and where it came from.

Mobile companion

Keep agents moving from your phone.

Pair the Android app over your tailnet and watch live agent status, read per-prompt diffs, talk to a run by voice, and keep terminal work moving while you’re away from the desk.

Live statusVoice inputPer-prompt diffsPush on every turn
Loom on a phone: agent chips with the baton, a claude-code answer, and a live handoff to opencode
One workspace

Every agent. One shared memory.

Switch between Claude Code, Codex, OpenCode, Grok and Cursor in one place — and the context follows. No re-explaining, no lost decisions.

The Loom desktop app with the agent switcher open — claude-code, opencode, antigravity, codex, grok-code and kiro — over a thread showing five baton handoffs
The problem

Switch tools, re-explain everything.

Claude Code’s memory can’t be read by OpenCode. Antigravity has no idea what you decided an hour ago. Every agent keeps its brain in its own files, so every handoff starts from zero.

One shared brain.

Loom imports each agent’s native memory into one append-only log, merges it with your decisions, and projects the whole thing into whoever picks up next — in their own format, namespaced so it never clobbers your config.

Routes run the chain.

One command runs plan → execute → review across different agents, the brain flowing hop to hop. Or let an LLM pick each next agent with loom route auto.

The baton

Exactly one agent holds the write lock and may edit the tree. Passing it carries the context — interrupt-safe, memory projected, briefing armed. Not isolation. Continuation.

Local-first, yours

One npm i -g, no account, no keys, MIT. The daemon runs on your machine and reaches your phone over your own tailnet. It runs headless on a server too.

The loop

Your whole loop, woven.

Six things the daemon does so your agents behave like one. Scroll through it.

  • Import
  • Baton
  • Route
  • Search
  • Notify
  • Project
01 / 06

Pull every agent's memory in.

CLAUDE.md, AGENTS.md, .antigravity — Loom reads each ADE's native memory into one store, merged with your decisions.

~/acme  ▸ loom import

   CLAUDE.md        1 file
   AGENTS.md        1 file
   .antigravity/    3 files

  merged → .loom/brain
Supported agents

Every one verified. Limits included.

Each adapter is tested against a real version, and where an agent can’t do something, it says so. A green checkmark you can’t trust is worth nothing.

Claude CodeAdapter · full-duplexverified against 2.1.83Verified
CodexAdapter · full-duplexverified against 0.142.4 — reports tokens, never dollarsVerified
OpenCodeAdapter · full-duplexverified against 1.17.20Verified
Grok CodeAdapter · full-duplex0.2.54 — answers only; it emits no tool or edit eventsPartial
AntigravityBridge · driveabletyped into the real chat panel; never holds the batonPartial
KiroBridge · driveablesame driver; never holds the batonPartial
Why it’s different

Editors remember you. Loom remembers your agents.

Loom isn’t another editor. It’s the thin layer betweenyour agents — the memory and continuity they don’t share on their own.

Surfaces

One daemon. Four ways in.

Not four products — four paired clients of the same local daemon. Start a run at your desk, check it from your phone, land it with a dial.

CLI & TUI

A full-screen terminal UI, or one-shot commands. The whole daemon from your keyboard.

Desktop

A native window around the same daemon. Deliberately not an IDE — no editor, no embedded browser.

Phone

Android, paired by QR over your tailnet. Voice in, per-prompt diffs, push when a turn lands.

The Pad

A 3D-printed desk controller: one key per agent, a dial for effort, hold-to-talk. Firmware in progress.

The hardware

And there’s a pad.

14 keys, one dial, ~90×90mm, ESP32-S3 inside. One key per agent, a hold-to-talk voice bar, and an effort dial from low to ultracode. The CAD is parametric Python and the STLs are free — print it tonight.

MIT · 5 watertight parts · no supports · firmware shipping with v3

The Orchestrator Pad — assembled, keys and dial visible