Memory Pipeline
Complete agent memory + performance system. Extracts structured facts, builds knowledge graphs, generates briefings, and enforces execution discipline via pre-game routines, tool policies, result comp
Complete agent memory + performance system. Extracts structured facts, builds knowledge graphs, generates briefings, and enforces execution discipline via pre-game routines, tool policies, result comp
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Give your AI agent a memory that actually works.
AI agents wake up blank every session. Memory Pipeline fixes that — it extracts what matters from past conversations, connects the dots, and generates a daily briefing so your agent starts each session primed instead of clueless.
| Component | When it runs | What it does |
|---|---|---|
| Extract | Between sessions | Pulls structured facts (decisions, preferences, learnings) from daily notes and transcripts |
| Link | Between sessions | Builds a knowledge graph — connects related facts, flags contradictions |
| Brief | Between sessions | Generates a compact loaded at session start |
| Ingest | On demand | Imports external knowledge (ChatGPT exports, etc.) into searchable memory |
| Performance Hooks | During sessions | Pre-game briefing injection, tool discipline, output compression, after-action review |
Most "memory" solutions are just vector search over chat logs. This is a cognitive architecture — inspired by how human memory actually works:
clawdhub install memory-pipeline
bash skills/memory-pipeline/scripts/setup.sh
The setup script will detect your workspace, check dependencies (Python 3 + any LLM API key), create the
memory/ directory, and run the full pipeline.
OPENAI_API_KEY or ~/.config/openai/api_key)ANTHROPIC_API_KEY or ~/.config/anthropic/api_key)GEMINI_API_KEY or ~/.config/gemini/api_key)# Full pipeline python3 skills/memory-pipeline/scripts/memory-extract.py python3 skills/memory-pipeline/scripts/memory-link.py python3 skills/memory-pipeline/scripts/memory-briefing.py
Add to your
HEARTBEAT.md for daily automatic runs:
### Daily Memory Pipeline - **Frequency:** Once per day (morning) - **Action:** Run the memory pipeline: 1. `python3 skills/memory-pipeline/scripts/memory-extract.py` 2. `python3 skills/memory-pipeline/scripts/memory-link.py` 3. `python3 skills/memory-pipeline/scripts/memory-briefing.py`
Already have years of conversations in ChatGPT? Import them so your agent knows what you know.
# 1. Export from ChatGPT: Settings → Data Controls → Export Data # 2. Drop the zip in your workspace # 3. Run: python3 skills/memory-pipeline/scripts/ingest-chatgpt.py ~/imports/chatgpt-export.zipPreview first (recommended):
python3 skills/memory-pipeline/scripts/ingest-chatgpt.py ~/imports/chatgpt-export.zip --dry-run
What it does:
--min-turns, --min-length)EXCLUDE_PATTERNS to skip unwanted topics)memory/knowledge/chatgpt/Options:
--dry-run — Preview without writing files--keep-all — Skip all filtering--min-turns N — Minimum user messages to keep (default: 2)--min-length N — Minimum total characters (default: 200)The pattern is extensible. Create
ingest-<source>.py, parse the format, write markdown to memory/knowledge/<source>/. The indexer handles the rest.
Script:
memory-extract.py
Reads daily notes (
memory/YYYY-MM-DD.md) and session transcripts, then uses an LLM to extract structured facts:
{"type": "decision", "content": "Use Rust for the backend", "subject": "Project Architecture", "confidence": 0.9} {"type": "preference", "content": "Prefers Google Drive over Notion", "subject": "Tools", "confidence": 0.95}
Output:
memory/extracted.jsonl
Script:
memory-link.py
Takes extracted facts and builds a knowledge graph:
Output:
memory/knowledge-graph.json + memory/knowledge-summary.md
Script:
memory-briefing.py
Generates a compact daily briefing (< 2000 chars) combining:
SOUL.md)USER.md)Output:
BRIEFING.md (workspace root)
Four lifecycle hooks that enforce execution discipline during sessions. Based on a principle from performance psychology: separate preparation from execution.
User Message → Agent Loop ├── before_agent_start → Briefing packet (memory + checklist) ├── before_tool_call → Policy enforcement (deny list) ├── tool_result_persist → Output compression (prevent context bloat) └── agent_end → After-action review (durable notes)
{ "enabled": true, "briefing": { "maxChars": 6000, "checklist": [ "Restate the task in one sentence.", "List constraints and success criteria.", "Retrieve only the minimum relevant memory.", "Prefer tools over guessing when facts matter." ], "memoryFiles": ["memory/IDENTITY.md", "memory/PROJECTS.md"] }, "tools": { "deny": ["dangerous_tool"], "maxToolResultChars": 12000 }, "afterAction": { "writeMemoryFile": "memory/AFTER_ACTION.md", "maxBullets": 8 } }
| Hook | What it does |
|---|---|
| Loads memory files, builds bounded briefing packet, injects into system prompt |
| Checks tool against deny list, prevents unsafe calls |
| Head (60%) + tail (30%) compression of large results |
| Appends session summary to memory file with tools used and outcomes |
| File | Location | Purpose |
|---|---|---|
| Workspace root | Daily context cheat sheet |
| | All extracted facts (append-only) |
| | Full graph with embeddings and links |
| | Human-readable graph summary |
| | Ingested ChatGPT conversations |
memory-extract.py to focus on different fact typesmemory-link.py (default: 0.3)EXCLUDE_PATTERNS in ingest-chatgpt.py for topic exclusion| Problem | Fix |
|---|---|
| No facts extracted | Check that daily notes or transcripts exist; verify API key |
| Low-quality links | Add OpenAI key for embedding-based similarity; adjust threshold |
| Briefing too long | Reduce facts in template or let LLM generation handle it (auto-constrained to 2000 chars) |
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.