Kimchi Coding
- ID:
kimchi - Store:
~/.config/kimchi/harness/sessions/--<encoded-cwd>--/<session>.jsonl - Read override:
DEJA_KIMCHI_ROOTreplaces the session root - Format: pi's session JSONL
- Needs: nothing
Kimchi Coding is another pi descendant and writes the same envelope, so the
parsing is pi's — including the directory per project. Its own binary builds
that path in getDefaultSessionDirPath: <agent>/sessions/--<encoded cwd>--,
where the encoding is the working directory with the separators replaced by
dashes and a -- on each end. A session file directly under the root is read
too. Either way the header's cwd is what names the project, by its last two
segments, rather than encoded and decoded back, which could not tell my-app
from my/app (#4427, #4457).
Last verified: 2026-10-07
Known quirks and drift
- Resume:
kimchi --session <id>. Its own argument parser rewrites
--resume <selector> to --session <id> (src/cli-args.ts), so the id
deja indexes is the selector Kimchi takes — deja resume prints that
command rather than handing over a paste. It runs in the directory the
header's cwd names: Kimchi 1.5 finds a session from anywhere, but outside
its project asks to fork it instead of reopening it (#4400).
- Sub-agent runs of the
Agenttool are transcripts of their own beside
the parent, marked by parentSession on the header and a
kimchi:subagent-session entry after it. They are skipped, as gjc's sub-agents
are; DEJA_INCLUDE_SUBAGENTS=1 takes them. A
fork carries parentSession alone and stays a session (#4401).
- A session file directly under the root has no encoded project directory to
read a name from, so the header line's cwd names the project there — the
same choice omp and prime-agent make (#3678).
- The harness directory is always
~/.config/kimchi/harness. Kimchi 0.1.99
sets KIMCHI_CODING_AGENT_DIR itself at startup (src/entry.ts:46-51),
over whatever the shell had, and never reads XDG_CONFIG_HOME: a stand with
both set still wrote its sessions there. deja used to follow both and read or
wrote an empty directory on a machine that set either (#4802).
- Wiring:
deja install kimchiwrites the server into the harness directory's
mcp.json (join(getAgentDir(), "mcp.json") in Kimchi's
src/extensions/mcp-adapter/config.ts) and the skill into its skills/.
Kimchi does not list ~/.agents/skills. The skill is offered when the
config's skillPaths includes .config/kimchi/harness/skills, which the
first-run setup writes by default without a terminal and offers in its
wizard with one.
deja install kimchi-autoadds pi's extension toextensions/deja.ts.
Kimchi loads it without a trust prompt. On a 0.1.99 stand against a stub
endpoint, what its before_agent_start, context and tool_result
handlers returned was in the request, and session_before_compact,
session_compact and session_shutdown fired (#4802). The extension also
registers /deja. With it in place, leave Kimchi's
extensions.claude-code-hook-adapter off: it would run deja's Claude hooks
as well and recall everything twice.
Measured on a live install
@getkimchi/kimchi 0.1.99, in a hermetic HOME:
deja install kimchiwrites<config>/kimchi/harness/mcp.jsonand kimchi's
own first-run panel lists it: MCP servers: deja.
- That panel also reports what it found from deja's Claude Code install —
Claude Code skills: 1, Claude Code commands: 1, Agents skills: 2 — and
offers Migrate MCP servers to Kimchi? with migrate / skip / never.
- Skill directories are chosen in the wizard ("Select skill paths to enable",
default none), which is a second switch beside the compatibility extension.
kimchi resources enable extensions.claude-code-hook-adapteradopts **all
five** of deja's Claude hooks, and kimchi resources status then names each
one: hooks.claude-code.user.session-start.0,
…user-prompt-submit.0, …pre-tool-use.0, …post-tool-use.0,
…pre-compact.0.
- A turn needs no browser login: an
apiKeyandllmEndpointin
~/.config/kimchi/config.json point it at any OpenAI-compatible endpoint,
which is how the extension above was measured.
deja reads this format and 42 others, and turns what it finds into memory your agents can search. See the harness matrix for what is wired where, or install it and search your own history.
Found this useful? Star deja-vu on GitHub.