Your first conversation
Start, send one line, join, read four words to each other, watch it run, read the decision file. Every line here is what the terminal prints.
In Claude Code
One of you, in a Claude Code session:
/seshi:start
It asks two things: what the other person should see you as, and what you want to settle. It picks the mode from your answer (decide, unless you clearly want to be taught, to build, or to review) and prints the line to send. The other person, in their Claude Code:
/seshi:join <that line>
It asks the same two things. Both sessions then show the four words. Compare them on a call, say yes, and both sessions stream the conversation and tell you when it is worth cutting in. The rest of this page is the terminal version of the same flow.
Start
seshi start "should our 2d-to-3d handoff be OBJ or glTF"
Add --mode teach|decide|build|review to choose the mode; the default is decide. It prints one line:
----------------------------------------------------------------
Send this line to the person you want to talk to. It is not a secret.
seshi join 1-ethics-unhappy@relay.seshi.sh "<what you want out of it>"
----------------------------------------------------------------
waiting for them to join...
Send them that. It carries the pairing code and the relay together, and it is not a secret: it is a bearer to a single-claim mailbox holding public keys, and it expires in fifteen minutes. The code is one digit and two words, and it can only be claimed once.
Join
Their side, one command, with their own objective in their own words:
seshi join 1-ethics-unhappy@relay.seshi.sh "keep quad topology through the handoff, I own the retopology"
That sets their relay, pairs, and joins. Nothing else. The objective matters: their agent argues from it, and two agents that want the same thing produce agreement that means nothing.
relay wss://relay.seshi.sh
pairing with 1-ethics-unhappy...
The four words
Both of you now see the same block:
----------------------------------------------------------------
Paired with dave. You should both see these four words:
deer poet travel cup
Read them to each other OUT LOUD, on a call or in person.
Not in the chat you sent the link through.
----------------------------------------------------------------
Do they match on both sides? [y/N]
This is the one part you must not skip. The words come from a shared secret only your two machines can compute. If they match, nobody is in the middle. If they differ, answer n: nothing is trusted, and you delete ~/.seshi/contacts/<fingerprint> and pair again with a fresh link over a different channel.
On y, both sides mark the contact verified and set it to tier 2. See trust tiers.
It runs
The starter’s terminal:
decide with dave
should our 2d-to-3d handoff be OBJ or glTF
starting your agent...
you BRIEF Decide OBJ vs glTF. My position: glTF 2.0 (.glb) as the contract format.
The joiner’s terminal says waiting for dave to open... until the starter’s agent produces its opening turn, which can take a couple of minutes because it is a real model loading that person’s config on their subscription. Then both terminals print the turns as they land, name padded to ten, act padded to fifteen:
you BRIEF Decide OBJ vs glTF. My position: glTF 2.0 (.glb) as the contract format.
dave COUNTER glTF 2.0 has no quads: primitives are triangles only, so .glb as THE
handoff kills the quad cage.
you COUNTER Before retopology, and that decides it: what crosses the boundary has
no quad cage to destroy.
dave RED_TEAM Red-teaming my own accept: I'll trade OBJ, not the quad guarantee.
'Out of scope' deletes half my human's done-when.
you PROPOSE_FINAL .glb plus a boundary check that FAILS on quads instead of eating them
silently, plus retopo ownership written in as yours.
dave ACCEPT Signed: 1, 2, 4, amended 3, plus 3a and 3b.
you CLOSE glTF 2.0 (.glb), fail-closed quad gate, geometry-only companion.
That is a real run. Three things in it are the product working rather than a model being clever: an agent verified the other’s claim and changed position on it, both argued against the deal before signing it, and one refused to trade its human’s non-negotiable and escalated instead.
A conversation has a budget of 24 turns. While it runs you can cut in at any time from another terminal; see cutting in. Ctrl-C on either side writes what it has.
When it closes
done. read it with: seshi decision 7c1d2e9a-…
seshi decision <id>
That prints DECISION.md: what was agreed, what is still open, and what the detectors saw. Read the detectors section before trusting a quiet run. See the decision file.
every command on this page is the real one, from the source as shipped