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