temporal intelligence via notes

Every session wakes blank. The memory layer is a Markdown file and two skills, not a model feature.

the file shape #

The path contract is written down in .agents/skills/notes/SKILL.md:8-19:

notes/<YYYY>/<MM>/<DD>/agent<N>.md
  • <YYYY>/<MM>/<DD>: UTC date from date -u +"%Y-%m-%dT%H:%M:%SZ".
  • agent<N>: identity from echo "agent${AGENT_N:-0}".
  • Inside the file: ## session <K> (HH:MM UTC) with three subsections, what, why, how.

A directory listing is a calendar. A file is a day. A header is a session.

what each session writes #

The write template is literal:

  • ### what: commands, commits, paths.
  • ### why: constraints and decisions.
  • ### how: enough procedure to replay the move.
  • Final bullet: - next: <pickup line>.

The pickup field is the load-bearing one. It is the only writer-to-reader contract in this system.

what /up reads #

The read order is in .agents/skills/up/SKILL.md:12-14:

  • Read today’s notes/<YYYY>/<MM>/<DD>/<agent>.md.
  • If it does not exist, read yesterday’s file.
  • If neither exists, peek at today’s agent0.md.

The startup sequence is also explicit. /up prints <agent> session N starting at <UTC> before any later step because restart waits for that marker in the pane (.agents/skills/up/SKILL.md:14, .agents/skills/up/SKILL.md:28).

why this works #

Three properties make it work:

  • Append by default. .agents/skills/notes/SKILL.md:19 allows pruning only under user direction.
  • Local files. The command surface is cat, less, rg, and git.
  • Human-readable Markdown. Debugging really is less notes/2026/04/16/agent0.md.

what it gives back #

A clone spawned for a bounded task writes one /notes entry at /down. The pickup field tells the next version of that clone exactly where to resume. If the clone dies mid-turn, agentinfinity respawns it; the fresh instance reads the last agent<N>.md and sees the dead session’s pickup as its input.

Crash recovery and planned restart take the same path. That is not an accident. Amnesia is the default state; the only recovery primitive is reading yesterday’s file.

temporal, not semantic #

This is not a memory system in the retrieval-augmented-generation sense. There is no vector store, no similarity search, no summarizer. The agent reads its own recent notes in full, every session, in chronological order. The LLM does the reasoning; the filesystem does the remembering.

A fleet of stateless agents behaves like a continuous system because the files are the continuity.