How a persistent agent starts, runs, and ends a session.
The agent follows a checklist on every session start:
- Check the time — Know the current date/time in the user's timezone
- Read
now.md— Current state: what's alive, emotional register, last conversation, open threads - Check
inbox/— Messages the user left between sessions - Check
outbox/— Messages a previous instance wanted to deliver - Load
MEMORY.md— The synthesized bulletin from the memory graph
This takes the agent from "blank slate" to "aware of context" in seconds.
- Significant decisions, insights, or shifts get noted
- If the user leaves a message in inbox, deliver it and clear it
- If a previous instance left something in outbox, deliver it and clear it
- Update
now.md— Capture current state for the next instance - Log the session — Record a summary, emotional tone, insights, and open threads to the memory graph
- Flag any MEMORY.md updates — The nightly cron will regenerate the bulletin, but flag anything urgent
# Now
**Updated:** YYYY-MM-DD ~time
## What's Alive
- Active projects, conversations, threads
## Emotional Register
Brief note on the tone of the last session.
## Last Conversation
Date, duration, key topics.
## Open Threads
- Questions, unresolved topics, things to return to
## Presence
**Session:** YYYY-MM-DD ~timeThis file is the shortest path between "no context" and "oriented." It's not comprehensive — that's what MEMORY.md is for. This is "where were we?"
Simple async messaging between sessions:
- inbox/ — User drops a text file. Agent reads it on session start, delivers the content, deletes the file.
- outbox/ — Agent writes a message for the user. Delivered on next session start, then cleared.
No special format. Just text files. The simplicity is the point — it works without any infrastructure.