๐ง MemoryBox
March 25, 2026 ยท View on GitHub
Memory health CLI for Claude Code, OpenClaw, and any markdown-based AI agent.
Install once. Your agent's memory stays lean forever. Zero dependencies.
If this fixed your agent's memory bloat, a โญ helps others find it.
Quick Install
curl -fsSL https://raw.githubusercontent.com/Ramsbaby/openclaw-memorybox/main/install.sh | bash
โก Quick Start โข ๐ Without vs With โข ๐ค Claude Code โข ๐ป CLI โข ๐ Results โข ๐ง How It Works โข ๐ Daemon โข โ FAQ
Full diagnostic in one command: health check โ size analysis โ duplicates โ stale content โ suggestions
โก Quick Start
3 commands. 30 seconds.
# 1. Install (one-liner)
curl -fsSL https://raw.githubusercontent.com/Ramsbaby/openclaw-memorybox/main/install.sh | bash
# 2. Diagnose
memorybox doctor ~/openclaw # OpenClaw
memorybox doctor ~/.claude # Claude Code
# 3. Fix (if needed)
memorybox split ~/openclaw # interactive: move large sections to domain files
memorybox archive ~/openclaw # move old logs to archive/
Verify install:
memorybox --version # memorybox v2.3.0
Option B: Manual install (git clone)
git clone https://github.com/Ramsbaby/openclaw-memorybox.git
cd openclaw-memorybox && chmod +x bin/memorybox
sudo ln -sf "$(pwd)/bin/memorybox" /usr/local/bin/memorybox
๐ Without vs With MemoryBox
| Without MemoryBox | With MemoryBox | |
|---|---|---|
| MEMORY.md size | Grows unbounded (20KB+) | Capped at ~3.5KB |
| Every session loads | Everything (all 20KB) | Core facts only (3.5KB) |
| Context pressure | 98% โ compaction failures | 7% โ comfortable headroom |
| Agent crashes | 2โ3/week from context overflow | 0 |
| Setup time | โ | 5 minutes, one-time |
| Maintenance | Manual or never | Automated via cron/daemon |
| Old logs | Accumulate in root | Auto-archived after 14 days |
The crash chain MemoryBox prevents:
Memory bloat โ Context overflow โ Compaction failure โ Gateway crash
๐ The Problem
Your AI agent's MEMORY.md grows every day. Whether you're running Claude Code, OpenClaw, or any 24/7 agent โ at some point it hits 20KB+, gets loaded into every session, eats tokens, and eventually causes context overflow or crashes.
MemoryBox prevents this in 5 minutes:
memorybox doctor ~/openclaw # diagnose
memorybox split ~/openclaw # fix interactively
Your MEMORY.md stays lean. Your agent stays fast. Move on to things that matter.
2026 context: Personal AI agents running 24/7 locally are surging โ subscription fatigue is real, and "own your AI" is the new default. Memory management is now the #1 silent bottleneck. MemoryBox solves it before it crashes you.
๐ง How It Works
MemoryBox applies a simple 3-tier pattern (inspired by Letta/MemGPT):
workspace/
โโโ MEMORY.md โ Tier 1: Core facts only (โค10KB, loaded everywhere)
โโโ memory/
โโโ YYYY-MM-DD.md โ Tier 1.5: Daily logs (today+yesterday, auto-loaded)
โโโ domains/ โ Tier 2: Detailed reference (searched on-demand)
โ โโโ persona.md
โ โโโ decisions.md
โ โโโ ...
โโโ projects/ โ Tier 2: Per-project context
โโโ archive/ โ Tier 3: Old daily logs (14+ days)
| Tier | Loaded when | Token cost |
|---|---|---|
| Tier 1 | Every session, automatically | ~3.5KB (lean!) |
| Tier 2 | On-demand via memory_search | Only when needed |
| Tier 3 | Manual reference only | ~0 |
Key insight: OpenClaw's memory_search indexes memory/**/*.md recursively. Tier 2 files are automatically searchable โ zero config changes needed.
๐ค Claude Code Compatibility
MemoryBox works directly with Claude Code's CLAUDE.md / AGENTS.md workflow.
Point it at your Claude workspace:
memorybox doctor ~/.claude
Or set the workspace once:
export OPENCLAW_WORKSPACE=~/.claude
memorybox doctor # uses ~/.claude automatically
Add to your CLAUDE.md or AGENTS.md
## Memory Health Protocol
- Check health: `memorybox health ~/.claude`
- If score < 80: run `memorybox doctor ~/.claude` and follow the suggestions
- NEVER delete files in memory/ directly โ use `memorybox archive` instead
- After restructuring: memory/ is RAG-indexed on the next rag-index run
- Large MEMORY.md (โฅ10KB): run `memorybox split` interactively
- Search memory: `memorybox search "<query>" ~/.claude`
Claude Code + Daemon (fully automated)
# Start the health watcher before beginning a long Claude Code session
MEMORYBOX_WORKSPACE=~/.claude \
MEMORYBOX_NTFY_TOPIC=your-ntfy-topic \
bash /path/to/memorybox-watch.sh --daemon
# It runs in the background while you work.
# If memory health degrades mid-session, you get a push notification.
Auto-capture at session end (Claude Code hook)
{
"hooks": {
"Stop": [{"command": "bash ~/.local/share/memorybox/session-end-hook.sh"}]
}
}
Install the hook:
mkdir -p ~/.local/share/memorybox
curl -fsSL https://raw.githubusercontent.com/Ramsbaby/openclaw-memorybox/main/scripts/session-end-hook.sh \
-o ~/.local/share/memorybox/session-end-hook.sh
chmod +x ~/.local/share/memorybox/session-end-hook.sh
๐ Real Results
Tested on a production instance (7 Discord channels, 48 crons, running 24/7):
| Metric | Before | After | Improvement |
|---|---|---|---|
| MEMORY.md size | 20,542 bytes | 3,460 bytes | -83% |
| Context pressure | 98% (critical) | 7% (healthy) | -91% |
| Compaction frequency | Multiple per session | Rare (~weekly) | 10x fewer |
| Gateway crashes | 2-3/week | 0 | 100% stable |
memory_search | Works | Still works | No change |
| Setup time | โ | 5 minutes | One-time |
Real Terminal Output
Before:
$ memorybox health ~/openclaw
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฅ Health Score: 28/100 ๐จ CRITICAL
โ MEMORY.md over limit: 20,542 bytes (205%) ๐จ
โณ 8 daily logs need archiving (>14 days)
โณ 12 potential duplicate lines
ACTION REQUIRED: Run 'memorybox doctor' for full diagnostic
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
After (5 minutes of interactive splitting + archiving):
$ memorybox health ~/openclaw
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฅ Health Score: 92/100 โ
EXCELLENT
โ MEMORY.md: 3,460 bytes (35%)
โ domains/: 3 files
โ Daily logs up to date
โ memory/ root is clean
โ archive/ exists
All systems green. No action needed.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Honest note: The 83% reduction applies to MEMORY.md load โ roughly 5-15% of total per-session tokens depending on conversation length. But in a 24/7 agent with 48 crons, those savings compound over thousands of sessions. More importantly, it prevents the context overflow that crashes your agent โ and that's worth far more than the token savings alone.
๐ป CLI Commands
memorybox doctor [path] # Full diagnostic โ start here
memorybox analyze [path] # Section-by-section size breakdown with bar charts
memorybox split [path] # Interactive: move large sections to domain files
memorybox health [path] # Quick health score (0-100)
memorybox search "<query>" [path] # Search memory files for matching content
memorybox archive [path] # Move old daily logs (14+ days) to archive/
memorybox dedupe [path] # Find duplicate content across files
memorybox stale [path] # Detect outdated content
memorybox suggest [path] # Improvement recommendations
memorybox report [path] # Before/after token savings
memorybox init [path] # Set up 3-tier directory structure
Daemon mode (v2.2):
bash scripts/memorybox-watch.sh --daemon # start background health watcher
bash scripts/memorybox-watch.sh --status # check watcher status
bash scripts/memorybox-watch.sh --stop # stop watcher
Most users only need two commands:
memorybox doctorโ see what's wrongmemorybox splitโ fix it interactively
Options
memorybox -w ~/my-workspace doctor # custom workspace path
memorybox -d 7 archive # archive logs older than 7 days (default: 14)
memorybox -m 8000 health # custom max target (default: 10KB)
๐ฅ Example: Doctor Output
๐ฉบ MemoryBox Doctor โ Full Diagnostic
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Workspace: /Users/you/openclaw
2026-02-11 17:00:00
[1/5] Health Check
โ MEMORY.md over limit: 20,542 bytes (205%) ๐จ
โ domains/: 3 files
โณ 8 daily logs need archiving (>14 days)
โ memory/ root is clean
โ archive/ exists
Health Score: 40/100 ๐จ Critical
[2/5] Size Analysis
MEMORY.md: 20,542 bytes (205%)
domains/: 3,200 bytes
Total managed: 23,742 bytes
[3/5] Duplicate Check
โ ๏ธ 2 potential duplicate lines
[4/5] Stale Content
โฐ 1 domain file(s) unchanged for 60+ days
[5/5] Suggestions
๐ 3 section(s) could be split to domains/
๐๏ธ 8 daily logs ready for archiving
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Daemon Mode โ memorybox watch (New in v2.2)
Run MemoryBox in the background. Get alerts when your memory health drops below a threshold โ before it crashes your agent.
# Start background daemon (checks every 60s, alerts when score < 80)
bash scripts/memorybox-watch.sh --daemon
# With push notifications + custom interval
MEMORYBOX_INTERVAL=120 \
MEMORYBOX_THRESHOLD=85 \
MEMORYBOX_NTFY_TOPIC=your-ntfy-topic \
bash scripts/memorybox-watch.sh --daemon
# With Discord webhook
MEMORYBOX_DISCORD_URL="https://discord.com/api/webhooks/..." \
bash scripts/memorybox-watch.sh --daemon
# Check status
bash scripts/memorybox-watch.sh --status
# Stop
bash scripts/memorybox-watch.sh --stop
What it does
- Runs
memorybox healthevery N seconds (default: 60) - Score drops below threshold โ sends alert (ntfy / Discord webhook)
- Score recovers above threshold โ sends recovery notification
- Logs all checks to
~/.openclaw/logs/memorybox-watch.log - State persisted to
/tmp/memorybox-watch-state.json
Configuration
| Env var | Default | Description |
|---|---|---|
MEMORYBOX_WORKSPACE | ~/openclaw | Workspace path to monitor |
MEMORYBOX_INTERVAL | 60 | Check interval in seconds |
MEMORYBOX_THRESHOLD | 80 | Alert when score drops below this |
MEMORYBOX_NTFY_TOPIC | โ | ntfy.sh push topic |
MEMORYBOX_DISCORD_URL | โ | Discord webhook URL |
MEMORYBOX_LOG_DIR | ~/.openclaw/logs | Log directory |
Cron alternative (simpler)
If you just want daily checks without a running daemon:
{
"name": "Memory Health Watch",
"schedule": "0 9 * * *",
"prompt": "Run: memorybox health ~/openclaw. If score < 80, run memorybox doctor and report findings."
}
๐ฆ Installation
Option A: One-line install (recommended)
curl -fsSL https://raw.githubusercontent.com/Ramsbaby/openclaw-memorybox/main/install.sh | bash
This installs the CLI to ~/.local/bin/memorybox and the Claude Code skill to ~/.claude/skills/memorybox.md.
Option B: CLI only (legacy)
curl -sSL https://raw.githubusercontent.com/Ramsbaby/openclaw-memorybox/main/bin/memorybox -o /usr/local/bin/memorybox && chmod +x /usr/local/bin/memorybox
Option C: Manual
git clone https://github.com/Ramsbaby/openclaw-memorybox.git
cd openclaw-memorybox && chmod +x bin/memorybox
sudo ln -sf "$(pwd)/bin/memorybox" /usr/local/bin/memorybox
Verify
memorybox --version # memorybox v2.3.0
memorybox doctor ~/openclaw
๐ What This Is (and Isn't)
MemoryBox is a maintenance tool, like df for your agent's memory.
It doesn't replace your memory system โ it keeps it healthy.
| Tool | What it does | Category |
|---|---|---|
| Mem0 | Decides what to remember | ๐ง Memory engine |
| Supermemory | Cloud-based persistent recall | ๐ง Memory engine |
| QMD | Local search backend | ๐ Search engine |
| MemoryBox | Keeps files organized & lean | ๐งน Maintenance tool |
You can use MemoryBox with all of the above, or with none of them. It only touches file structure โ never configs, never plugins, never internals.
๐ Origin Story
I run an OpenClaw agent 24/7 โ 7 Discord channels, 48 cron jobs. As it learned, MEMORY.md ballooned to 20KB+. Every session loaded all of it.
One day, context hit 100%. Compaction corrupted state. I tried to fix the config โ and crashed the gateway.
That crash led to openclaw-self-healing (auto-recovery in ~30s). But the root cause was memory bloat. So I built MemoryBox to prevent it from happening again.
Memory bloat โ Context overflow โ Gateway crash
โ Built self-healing (recover from crashes)
โ Built MemoryBox (prevent the bloat)
โ Problem solved at both ends.
๐ค Teach Your Agent the 3-Tier Pattern
Add to your AGENTS.md:
## Memory Protocol
- **MEMORY.md** (โค10KB): Core facts only. Loaded everywhere โ keep it lean.
- **memory/domains/*.md**: Detailed reference. Use `memory_search` to find.
- **memory/archive/**: Old logs. Rarely needed.
When MEMORY.md grows past 8KB, split large sections to domains/.
Set It and Forget It (Optional Cron)
{
"name": "Memory Maintenance",
"schedule": { "kind": "cron", "expr": "0 23 * * 0", "tz": "Asia/Seoul" },
"sessionTarget": "isolated",
"payload": {
"kind": "agentTurn",
"message": "Run: memorybox archive && memorybox health. Report if score < 80."
}
}
โ Compatibility
Works with everything:
| Plugin / Backend | Compatible | Notes |
|---|---|---|
| memory-core (default) | โ | No changes needed |
| Mem0 | โ | Different layer โ no conflict |
| Supermemory | โ | Different layer โ no conflict |
| QMD | โ | Indexes same files |
memory_search | โ | Indexes memory/**/*.md recursively |
memory_get | โ | Reads any memory/ file |
| Claude Code | โ | CLAUDE.md / AGENTS.md friendly |
Does NOT touch:
openclaw.jsonโ no config changes- Plugin behavior โ no overrides
- OpenClaw internals โ files only
๐ OpenClaw Ecosystem
| Project | Role |
|---|---|
| openclaw-memorybox โ you are here | Zero-dep memory hygiene CLI |
| openclaw-self-healing | 4-tier autonomous crash recovery โ gateway back in ~30s |
| openclaw-self-evolving | AI agent that proposes its own improvements |
| jarvis | 24/7 AI ops system using Claude Max โ self-healing, RAG, cron |
All MIT licensed, all battle-tested on the same 24/7 production instance.
โ FAQ
Q: My MEMORY.md is only 5KB. Do I need this?
A: Not yet. Bookmark it for when it grows. Or run memorybox health to confirm you're fine.
Q: Will this break my existing setup? A: No. It only creates directories and moves content you approve. Backup is automatic.
Q: Does memory_search find files in subdirectories?
A: Yes. OpenClaw indexes memory/**/*.md recursively.
Q: I'm using Mem0/Supermemory. Should I also use this? A: Yes โ they solve different problems. Mem0 decides what to remember. MemoryBox keeps your file structure clean so sessions load fast.
Q: Will OpenClaw updates break this? A: Unlikely. This uses standard markdown files in the standard memory directory. OpenClaw's philosophy is "files are source of truth" โ that won't change.
Q: I use Claude Code, not OpenClaw. Does this work?
A: Yes. Point MEMORYBOX_WORKSPACE at ~/.claude or your project dir. See Claude Code Compatibility.
Q: How does memorybox search work?
A: It searches MEMORY.md and all memory/**/*.md files for your query (case-insensitive), showing 2 context lines around each match. Example: memorybox search "API key" ~/.claude
๐ค Contributing
PRs welcome! Areas for improvement:
- Migration script for different workspace layouts
- Automated MEMORY.md size monitoring via cron (see cron template)
- Domain file templates for common use cases
- Integration tests with memory_search
-
memorybox watchโ daemon mode for continuous monitoring (added in v2.2) -
memorybox searchโ full-text search across memory files (added in v2.3) - Qdrant/local vector search integration for Tier 2 semantic retrieval
๐ License
MIT โ Do whatever you want.
๐ Star History
Made with ๐ฆ by @ramsbaby
Battle-tested on a production OpenClaw instance running 24/7 with 48 crons and 7 channels.