Get early access
open source · runs anywhere

Your agents' state,
everywhere they run.

Mod is the open-source layer that keeps your agents' work in sync and secure on every machine they run on. Any model, any harness, and the state stays yours.

Read the docs
the parts

Everything your agents need,
working as one.

the loop

Thinks, acts, remembers,
and gets better.

One task touches a model, tools, files, memory and review in under a minute. In Mod those run on one session's log, so nothing drops between them, including the people.

01

Thinks

Any model, through the agent you already use. Pay with the subscription you have, your own API key, or Mod's router, metered per person and project so a runaway agent stops instead of spending.

harnesses · inference
02

Acts

Tool calls are written to the log, then claimed and run by a worker wherever the work lives.

tools · workers
03

Remembers

Documents, tasks and every session's log. The memory is the same work people read and edit.

sessions · documents
04

Improves

Every session is already a trace, and every correction a person makes is on it. That is what an agent learns from.

evals · skills · macros
Every session is already a trace.

There is no tracing to wire up. Read any session off the log, grade it, build a dataset from it and replay a fix before it ships.

People are the signal.

An answered question, a rejected edit, a comment on the line the agent got wrong. Each one is on the log, with who made it and what it was about.

A correction becomes a skill.

Fix the agent once in a thread, save it as a skill, and every session in your World reads it the next time the task comes up.

A habit becomes a tool.soon

A flow your agent repeats every morning is saved as one tool call. It runs in seconds, with no model in it until something needs judgement.

the tree

Disk is a projection,
never a peer.

Most agent tools pick one storage model and force everything into it. Mod keeps two, because a document and a codebase merge differently, and says which one every path is on.

docrealm
merges
Per character. You and three agents can type in one file at once.
lives
Its own CRDT, synced to every device, VM, the web and your phone.
history
Every change, by who made it, person or agent.
holds
Documents, notes, plans, app records, an app's own source.
coderealm
merges
Per commit, because a build runs against it.
lives
In git worktrees, on the machine or VM that holds them. One per branch.
history
Git's, unchanged. A session works in one worktree.
holds
A repository or folder, placed in the tree beside the documents it belongs with. Several per project.
# one project, one tree, both realms
spring-launch/
├─ launch-plan.md          doc  · on every device
├─ notes/launch-sync.md    doc  · written during the call
├─ apps/launch-plan        doc  · typed records
└─ launch-site/
   ├─ home.html            doc  · the pages
   ├─ developers.html      doc
   └─ site/                code · the checkout that builds them
      ├─ @ main            worktree on Nassar's Mac
      └─ @ reset           worktree in a VM

Every crossing is a command. Moving files between the realms, checking out, saving to disk: each has a direction, and a save is refused before it overwrites bytes you did not see. Nothing reconciles in the background.

2 realmsA document and a codebase, each merged the way it should be.
1 addressA reference names a realm and a path. Your Mac, your servers or the pool is never in it.
0 background syncsBetween the realms, only commands you ran. That rule came from losing work to the alternative.
runs anywhere

Where it runs
is never the address.

A tool call is written to the session's log, then claimed by a worker. Every session runs in its own VM, and moving it to another machine changes where it runs, not the session: its log and documents are already there.

Setup is a script.

.mod/setup lives in the repository, so it is versioned, branched and reviewed like code.

Starts from a snapshot.

A new session's VM starts from a saved snapshot of its project, then catches up on what changed.

Throw it away any time.

The VM holds no state of its own. It reads the session from the log and writes back to it.

who can touch what

Every agent has a name,
and never more than yours.

Access is granted per project or per session, never per server. It travels with the work, so it holds offline and on a remote VM.

An agent never outranks its person. It gets at most what the person who runs it has, and you choose which actions always wait for a person.

get started

A few commands
and an agent is at work.

# start a session in a project and give it work
$ mod-next session create <projectId> "reset expiry"
$ mod-next message send <sessionId> "Links should expire after an hour."

# the agent asks when it needs you; answer from anywhere
$ mod-next session asking <sessionId>
$ mod-next session answer <sessionId> <interactionId> expiry=1h
# documents sync to every device: written here, open everywhere
$ mod-next docs create <projectId> notes/launch.md --content "# Launch"
$ mod-next docs list <projectId>

# a typed record is a document an app draws
$ mod-next docs create <projectId> plan/reset-screen \
    --dataType launchplan --data '{"work":"Reset screen v3","owner":"Sam"}'
# give a project its repository; sessions work in its worktrees
$ mod-next code adopt <projectId> --repo . --base main

# open a session's code on this machine, on its own branch
$ mod-next code open <projectId> <sessionId> --fork
# an app is a package: a manifest, a build, one module
$ mod-next app init launch-plan --dataType launchplan

// package.json
"mod": {
  "name": "Launch plan",
  "dataType": "launchplan",
  "reads": ["tasks"], "writes": ["tasks"]
}

# build, publish, and install it for every project in your World
$ mod-next app push <projectId> --world
mod-next is the command line. The window, the phone and your agents use the same calls.Read the docs →
bring your agent

Keep the agent you use.
Give it everything else.

Mod drives the harness already on your machine and gives it the same tools, files and people every other agent in the project has.

Claude Code Codex Cursor Pi your own harness soon

Build on
Mod.

Prompt copied. Paste it into Claude Code or Codex.