Gaal
March 2026 - now · crates.io, repo public
Strace for AI agents.
The more agents I run, the less acceptable it becomes to treat their work as chat history. Claude Code, Codex, Gemini CLI, and Hermes all leave traces behind, but raw traces are ugly little 10-50MB blobs with different formats, different event models, and almost no operational dignity.
Gaal turns those traces into a local query surface. It discovers sessions, parses engine-specific logs, extracts facts, renders transcripts, indexes full text, and lets the next agent ask useful questions instead of rereading a basement full of JSONL.
The commands are intentionally boring and sharp: `gaal ls` for the fleet, `gaal inspect` for one session, `gaal who wrote src/main.rs` for attribution, `gaal search` for exact traces, `gaal recall` for continuity, and `gaal create-handoff` when a session needs to become memory for future work.
Under the hood it is Rust, SQLite, and Tantivy. SQLite owns structured facts: files read, files written, commands run, errors, git operations, subagent links, token counts, and session metadata. Tantivy owns full-text search. Rendered markdown transcripts and handoffs live under `~/.gaal/data/` so the raw logs are not the only artifact that survives.
The killer feature is inverted provenance. Not "show me a transcript and I will scroll until my eyes give up." More like: who touched this file, which worker ran that command, where did this assumption enter the system, which coordinator spawned the subagent that made the change.
Gaal also gives agents self-awareness in the literal operational sense. The salt protocol lets a running agent emit a unique token, find its own session trace after the log flushes, and create a handoff from the exact session it is currently living inside.
Current state: public repo, crates.io package, four-engine support, 11K+ local sessions indexed on my machine, hundreds of generated handoffs, and daily use inside Jenkins/Pratchett-OS. It replaced the earlier Eywa path because the right primitive was not "memory server." It was observability first, memory second.
Receipts: public repo, crates.io package, the Eywa MCP post for the original session-memory itch, and robots v4 for the broader agent-system arc.