Skip to content

// a daemon-backed coordinator

Multi-threaded coding
with AI agents,
without the stash.

One workflow for several pieces of code and several agents at once. kiki ties jujutsu (jj), tmux, agent harnesses, and the GitHub CLI behind a single command: kk.

read the reference →github ↗$ kk new auth-refactor
vcs
jujutsu (jj)
harness
Claude Code
license
MIT
status
pre-alpha · spec phase

01 / the problem

The friction is in the seams. You stash, you switch branches, and three minutes later the original branch is a state you have to reconstruct — and the agent has lost the thread.

Multiply that by three or four lines of inquiry in flight and the cost of opening another becomes prohibitive. But refactoring a function and migrating its callers is not a sequential task; it is a tree of work. The right tool lets those branches exist in parallel without worktrees colliding or people manually rebasing the world.

kiki is an attempt to build that tool.

02 / the thread

A themed sequence of jj revisions with a live head, one workspace, one tmux session, and one agent. Isolated on disk, related in history.

$ kk new payment-refactor

main trunk
payment-refactor● working
agent A · jj workspace · tmux
add-testsqueued
agent B · jj workspace · tmux
bug-investigationqueued
agent C · jj workspace · tmux

// a thread: workspace + tmux session + agent

When an ancestor is amended, jj evolves descendants in repository state. kiki waits for a safe boundary before materializing that state in the thread’s files and telling the agent. Never mid-edit. Ambiguous topology stops for a human instead of guessing.

03 / worked example

Spawn, relate, inspect, switch, publish, close. Six verbs.

# opt a repository in$ kk init# spawn a thread, then a child that follows it$ kk new auth-refactor$ kk new add-tests --follows auth-refactor$ kk ls  running  auth-refactor  —  claude-code  running  add-tests      auth-refactor  codex$ kk switch auth-refactor$ kk close # workspace removed, revisions persist

04 / principles, explicit

Stated up front, because the reference book’s coherence depends on them.

01 be additive, not invasive

Keep using jj, gh, and tmux as you always have. kiki reacts; it does not intercept or wrap.

02 trust human prose

The moment a human writes their own description, kiki steps off. Permanently.

03 one stable contract; many UIs

The gRPC service is the product surface. CLI and TUI are clients, not privileged exceptions.

04 fail loud, not silent

When the system cannot determine the right action, it stops and asks rather than guessing.

05 no resource policing

Concurrent agents, model spend, and laptop CPU remain your decisions, made with your tools.

06 explicit egress

Local transcripts never become PR copy. Sending text to a provider requires purpose-specific consent.

05 / roadmap

The canonical scope ledger lives in the book’s Orientation chapter.

v1the acceptance slice

Thread atom, recoverable lifecycle, linear live-follow cascade, batch-safe delivery, and projection repair.

v1.xworkflow completion

Stacked publishing, transcript catch-up, the overlay TUI, GitHub polling, and auto-archive.

v2the substrate

Cross-thread messaging, further harness adapters, native macOS UI, and direct GitHub APIs.

v3+further out

jj-lib embedded in kkd, a web dashboard, and cross-repository coordination.

on the name

kk sits on the home row immediately beside jj, a quiet acknowledgement that one tool works underneath the other. And a kiki is a gathering where everyone shows up as themselves and the room is richer for the multiplicity. 💅🏾

The spec is settled; the code is not. Feedback filed now changes the design.

MIT © 2026 Sandile Keswabuilt on jj · tmux · agent harnesses · gh

docs/reference · built with VitePress