magi
The harness. The conversation, the screen, the tool registry and the permission ledger — and the only one of the four a person runs.
What it owns
- The turn loop. Assembling what the model is sent, reading what it wants, and deciding what happens next.
- The screen. Differential rendering into native scrollback, live streaming, and an editor-grade prompt. Close the window and the turn keeps running.
- The registry. One name, one entry — whatever the tool's transport.
- The permission ledger. Nothing the model asks for becomes an action without passing it.
- The session. Its id, and which program holds its transcript — whatever fills the memory role.
- Other agents.
magi forkstarts a child session of this one, and the screen moves between them from the keyboard. See sessions.
What it does not own
Which endpoint a model lives at, what credential it takes, what a 429 means — melchior's. What a tool does — casper's. What is worth remembering — balthasar's. A config here that held an opinion about any of them would be a second catalog to keep in step.
The shape of it
magi
eleven cratesAt a terminal
magi a session in this directory magi -p "…" one prompt, one answer, no terminal magi --resume carry on from this directory's most recent session magi doctor what a session here would be made of, without starting one magi fork "…" start a child session of this one, and print what it is called magi --headless a session with no terminal, reachable until something ends it magi tools every tool the model can call, and how each is reached magi models what melchior says this machine could talk to
magi doctor never fails. A configuration that will not load is reported rather than exited over — the whole point is to be usable on the machine where something is wrong.There is no daemon
There was. magi spawned magi host as a background child that
owned the journal and the socket, and a UI quitting was a detach. Two problems
followed. The daemon's socket was named after the working directory, so the second
magi in a project found the first one's session. And nothing ever ended one, so
a week of work left a process per project.
The session is the process now. Returning from magi is the end of it, with
no socket, no pid file and no second process.