Adding memory to Kiro
two clients, two formats, one root — and a new session starts empty
Kiro ships two clients and they do not write the same file. The CLI keeps a pair per session under ~/.kiro/sessions/cli — a header naming the session id and the directory it ran in, and a transcript whose lines are the conversation. The IDE, a VS Code fork, keeps a directory per session under the workspace: session.json beside messages.jsonl. Both are history, and both are read.
Reading what is already there
deja index
That walks both layouts, plus the store of every other agent on the machine. deja doctor names what it found — for Kiro it says how many CLI files and how many IDE files, because a CLI user and an IDE user have nothing in common but the directory.
The reply that arrives in pieces
One detail matters for text rather than for tokens. Several AssistantMessage records can share one data.message_id: the CLI appends the answer as it streams, and each record carries the next piece rather than the whole answer so far. Read one message per record and a recall quotes a third of a sentence — so deja joins a run under one id and the answer comes back whole. Reading Kiro's store with anything that does not is where half-sentences come from.
What is not read yet, and why that is written down
The IDE also mirrors chats into its globalStorage, and the TUI keeps sessions in a SQLite store (kiro-cli/data.sqlite3, table conversations_v2). No sample of either schema is in hand, so deja does not read them: a reader built against a guessed shape is one that drops history without saying so. The format registry entry records both as gaps rather than leaving the question open.
Getting recall into Kiro itself
Kiro takes MCP servers in ~/.kiro/settings/mcp.json and agent hooks in .kiro/hooks/, so the wiring exists to be written and is the next step; today deja reads the store and answers in the agents it is already wired into. deja search "the thing you half-remember" works from any terminal in the meantime.
The part that is not about this harness
The index covers every agent's transcripts on the machine — thirty-four of them, each in its own format — so a fix found in Kiro answers a question asked in Claude Code, and the other way round. Nothing here writes memories, so there is nothing to hallucinate into your history; indexing and search are local, and credentials are stripped as the index is built (privacy).
Getting started · Switching between agents · The Kiro session format
Found this useful? Star deja-vu on GitHub.