One session to another
Every session binds its own socket and answers for itself, so the directory is the registry. Two walls decide who may reach whom.
Two walls
| wall | means |
|---|---|
| the project wall | a session sees only its own project's directory. Not should not — another project's sessions are somewhere this one never lists. |
| the instance wall | a main is its instance's front door; the subagents behind it are private. |
Widening the second one
magi.agent_talk | lets |
|---|---|
"mains" | two sessions started at a terminal talk to each other, and a subagent talk to whoever started it. Nothing else. The default. |
"instance" | and subagents of the same parent talk to each other |
"project" | and anything in the project reach anything else in it |
Sessions in different projects never can, at any setting. This only widens things inside one project, and nothing widens it further.
A child of this session
magi fork "review the parser" --role reviewer --role-description "reads diffs, writes none"
melchior names the child and mints the secret that makes it stoppable; magi starts the process. The child is told which session started it and leaves when that one does. It gets no more than its parent has — a child that wants something outside that is refused and told to ask its parent. A role given at birth is a label others can route by, and it grants nothing.
The crew
A model reaches the other agents through one tool, whose verbs melchior answers on its
tool door:
| verbs | for |
|---|---|
list whoami about crew | who is here, who started whom, and what each is for |
send ask reply inbox | talking — an answer can arrive long after the connection that carried the question has closed |
claim claims release | saying what one is working on, so two agents do not both do it |
assign task handoff | handing work to another agent, and keeping a handle on it |
stop disband | ending a child, or a whole branch of them |
Every session publishes its screen beside its socket, so the one terminal you have moves from agent to agent rather than a window being opened per agent.
What a session may say
The vocabulary has no verb that runs anything. It sends messages, reads an inbox,
and says who is listening — deliberately, and melchior's own tests refuse a verb named
run, shell, exec or eval.
That is why magi grants the agent tool in advance rather than asking. Granting it grants the ability to talk to other sessions, which is the whole of what the tool is for — and asking here cannot work anyway: the prompt would land mid-conversation, stopping the turn a sibling's question started on a keystroke nobody was told about.
A socket nobody answers
A process that died did not get to remove itself from a list, so a stale socket looks exactly like a live one until something connects. Liveness is asked, never assumed: one cheap call settles it. Dialling is not liveness either — the kernel accepts on behalf of a listener whose owner has stopped reading, so a wedged sibling accepts instantly and then never answers.