I built a night agent for myself
Janus runs every night, reads my projects, and writes the engineering narrative I won't remember on Friday — pulse per project, compounded into weekly, monthly, and a continuous per-project spine.
I have too many projects open at once. By Friday I genuinely can’t tell you which one I unstuck on Tuesday. The information was always there — git logs, session transcripts, half-written plans — but the synthesis was not. So I built Janus: an agent that runs every night, reads each repo, and writes the narrative for me.
A pulse isn’t a changelog
A changelog says what shipped. A pulse says what was decided, what got stuck, and what got abandoned. The abandoned column is the most valuable — it’s the cheapest possible record of “do not retry this path.” Changelogs throw it away every release. The pulse keeps it, dated and attributed.
Compounding into narrative
One pulse per project per day is fine. The value shows up at the rollup tier: weekly across projects, monthly themes, quarterly arcs, and a per-project “spine” written as continuous narrative instead of bullet lists. Of all those artifacts, the spine is the only one I re-read voluntarily — because it’s the only one written as a story rather than a manifest. The generalization holds: bullets are for triage, narrative is for memory.
Runs on agents or LLMs
Janus is built to drive either a coding-agent CLI (Claude Code, Gemini CLI) or a direct LLM, behind one runner interface. The reason matters: nightly runs across five projects would be prohibitive on per-token API billing, but viable when the orchestrator can route through an agent CLI on a flat-rate subscription. The abstraction makes both modes possible without rewriting any orchestration code — and lets the system survive whichever billing model the provider lands on next.