README.md

June 9, 2026 · View on GitHub

License: MIT npm version GitHub stars

pi-mem

pi-mem

surprisingly useful daily memory for the pi coding agent

Read the blog post


Inspired by OpenClaw's approach to agent memory.

Layout

Memory files live under ~/.pi/agent/memory/ (override with PI_MEMORY_DIR):

PathPurpose
MEMORY.mdCurated long-term memory (decisions, preferences, durable facts)
SCRATCHPAD.mdChecklist of things to keep in mind / fix later
daily/YYYY-MM-DD.mdDaily append-only log (today + yesterday loaded at session start)
notes/*.mdLLM-created files (lessons, self-review, reference material, etc.)

Identity and behavioral files (e.g. SOUL.md, AGENTS.md, HEARTBEAT.md) can also live in the memory directory and be injected into context via PI_CONTEXT_FILES.

Tools

ToolDescription
memory_writeWrite to long_term (MEMORY.md), daily (today's log), or note (notes/filename). Supports append and overwrite modes.
memory_readRead MEMORY.md (long_term), SCRATCHPAD.md (scratchpad), daily logs (daily), notes (note), any root file (file), or list everything (list).
memory_searchSearch across all files — filenames and content. Case-insensitive keyword search across root, notes/, and daily/.
scratchpadManage a checklist: add, done, undo, clear_done, list.

Context Injection

The following are automatically injected into the system prompt before every agent turn:

  • Files listed in PI_CONTEXT_FILES (e.g. SOUL.md,AGENTS.md,HEARTBEAT.md)
  • MEMORY.md
  • SCRATCHPAD.md (open items only)
  • Today's and yesterday's daily logs

Files in notes/ and older daily logs are not injected — they're accessible on-demand via memory_search and memory_read.

Configuration

Settings can be configured via environment variables or a .pi-mem.json file in the memory directory. Environment variables take precedence over file values.

.pi-mem.json

Place a .pi-mem.json in your memory directory (default ~/.pi/agent/memory/.pi-mem.json):

{
  "searchDirs": ["catchup", "projects"],
  "contextFiles": ["SOUL.md", "AGENTS.md"],
  "autocommit": true
}

Environment variables

Environment variables override .pi-mem.json values when set.

Env VarDefaultDescription
PI_MEMORY_DIR~/.pi/agent/memory/Root directory for all memory files
PI_DAILY_DIR$PI_MEMORY_DIR/daily/Directory for daily logs
PI_CONTEXT_FILES(empty)Comma-separated list of extra files to inject into context (e.g. SOUL.md,AGENTS.md,HEARTBEAT.md)
PI_SEARCH_DIRS(empty)Comma-separated list of subdirectories (relative to PI_MEMORY_DIR) to include in memory_search. Searched recursively one level deep. (e.g. catchup,projects)
PI_AUTOCOMMITfalseWhen 1 or true, auto-commit to git after every write
PI_TIMEZONETZ, then UTCIANA timezone used for daily log filenames and today/yesterday context windows. Invalid values fall back to UTC.

Dashboard Widget

An auto-generated "Last 24h" summary is shown on session start and switch:

  • Scans recent session files for titles, costs, and sub-agent counts
  • Groups by topic using an LLM call (falls back to flat list)
  • Rebuilt every 15 minutes in the background
  • Also shows open scratchpad items
  • pi-reflect — Self-improving reflection engine for pi. Analyzes recent conversations and iterates on memory, behavioral rules, and identity files. Pairs naturally with pi-mem.

Installation

pi install git:github.com/jo-inc/pi-mem

License

MIT

Pi Ecosystem

PackageDescription
pi-reflectSelf-improving behavioral files
pi-bossMulti-agent orchestration via tmux
pi-roomMulti-agent awareness and coordination
pi-vertex-anthropicClaude via Google Cloud Vertex AI
pi-skill-posthogPostHog analytics skill for pi agents