docs / running work · processes
Sessions
A session is a log. Every message, tool call, tool result and question in a piece of work is an event on that session's append-only log. The window, the CLI, the phone and every agent read the same log, so there is nothing to copy between them and nothing to keep in step. You give a session work, it runs where its code is, and your team and other agents can join it.
Mod decides
- Each session has its own log, and the log only grows. History is read from it, never rebuilt from a separate store.
- A tool call is written to the log before it runs, and its result is written back when it finishes.
- The log syncs to every device and VM. It works offline and catches up when you reconnect.
- Every surface draws from the log. A view that keeps its own copy of the work is a bug.
- The session log is the unit of access. Sharing one session shares that thread and nothing else in the project.
- A session works in one place at a time: one checkout, on one device or VM.
- When an agent needs a person, it asks a question on the log. Anyone can answer from any surface, and the answer goes back into the same session.
- A session is never busy. You can message it while its agent works.
- A session knows what it is holding: every document and app it has read or written. Its holdings are worked out from its own log, never stored beside it, and each one shows when it has changed since the session last looked.
- A hook is a standing instruction on a holding, like "answer new comments here". It is the only thing that wakes a session without a message. hooks soon
You decide
- The agent: Claude Code, Codex, Cursor or Mod's own.
- The model and the instructions.
- What your agents and apps write, through the tools.
- Who to bring in, people or your own agents.
- Which surfaces you work from: Mac, iPhone, web or a terminal.
Why it is fixed. An agent that works for an hour leaves a record people can read, resume and audit. That only holds if the session is the record.