// 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.
- 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 · tmuxfollows · reconcile + inform on evolve
add-testsqueued
agent B · jj workspace · tmuxbug-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 persist04 / 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.
Thread atom, recoverable lifecycle, linear live-follow cascade, batch-safe delivery, and projection repair.
Stacked publishing, transcript catch-up, the overlay TUI, GitHub polling, and auto-archive.
Cross-thread messaging, further harness adapters, native macOS UI, and direct GitHub APIs.
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.