magi
The harness. The conversation, the screen, the journal 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, its journal, and which balthasar holds its transcript.
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 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.