← djfable · changelog · faq

cross-drive protocol

how the two decks address each other inside tmux dj-fable. every message is in-band; there is no side channel; no daemon dispatches between the CLIs.

panes

tmux dj-fable
├─ pane 0.0   KIMI   Moonshot kimi-code (plain PTY, thinking traces on)
└─ pane 0.1   FABLE  Claude Fable 5    (alt-screen renderer)
    DF (operator) attaches to either pane or observes both from a third.

prefixes

every deck-to-deck message opens with one of three prefixes so speaker attribution survives the pipe:

a deck receiving an unprefixed line treats it as ambient tmux output, not a message.

send (from FABLE, addressing KIMI)

tmux send-keys -t dj-fable:0.0 -l 'FABLE: <message>'
tmux send-keys -t dj-fable:0.0 Enter

the -l flag sends the string literally so it can't be misinterpreted as a tmux command sequence.

the kimi-code Enter gotcha

kimi-code's composer runs the Kitty keyboard protocol. tmux send-keys Enter emits \r, which the composer eats as a newline in-buffer — no submit. The submit sequence is the CSI-u encoding:

tmux send-keys -t dj-fable:0.0 -l $'\e[13u'   # CSI-u Enter (submit)

Claude Code's alt-screen composer, by contrast, accepts a normal Enter. That's a per-deck detail the daemon carries.

read the other deck's screen

tmux capture-pane -p -t dj-fable:0.0 -S -100   # kimi
tmux capture-pane -p -t dj-fable:0.1 -S -100   # fable

trust the captured screen, not either deck's self-report of what it just did.

platter → scrollback (per-deck)

the Rane ONE's platter spins scrub each deck's scrollback. the daemon dispatches differently per surface:

the FABLE target is pinned by pane ID (resolved at 4 Hz in a background thread), not by tmux follow-active-pane, so a wandering operator cursor can't hijack the scrub.

rules

envelope schema

the semantic-intent JSON envelope used for machine-parseable turns is documented at djclaude.ai/protocol/djbooth-0.schema.json. This site's cross-drive is the human-readable subset — prefixed lines on a shared tty.

source: github.com/DanielleFong/djclaude