{
  "markdown": "# MemPenny\n\n<p align=\"center\"><img src=\"docs/mempenny-banner.svg\" alt=\"MemPenny — memory hygiene for AI coding agents\" width=\"880\"></p>\n\n**One memory, every AI. Shared memory management for all your coding agents — organized, lean, and reversible.**\n\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Version](https://img.shields.io/badge/version-1.7.0-blue.svg)](CHANGELOG.md)\n[![Platform](https://img.shields.io/badge/platform-Claude%20Code%20%C2%B7%20opencode-orange.svg)](#install)\n[![Backups](https://img.shields.io/badge/backups-always%20first-yellow.svg)](SECURITY.md)\n[![Locales](https://img.shields.io/badge/locales-3%20languages-blue.svg)](locales/README.md)\n\nYour agent's memory grows. Old notes pile up and the signal gets buried. MemPenny doesn't just tidy once — it does three things:\n\n1. **Organize** — every note lands in a small, fixed set of topic files. A 3-level structure (one-line index → topic files → entries inside) keeps things from sprawling into hundreds of one-off notes; a cold agent finds anything in three file-opens.\n2. **Clean** — drop what's stale, archive the historical, distill the bloated to a line or two, kill duplicates, split the over-grown into an index + pages, and flag files that contradict each other.\n3. **Keep it cleaned** — set a schedule (daily / weekly / once) and the next session opens on a tidy directory. Backup-first, fully reversible.\n\n## How memory is organized\n\nEvery tidy memory settles into the same fixed shape — so a cold agent always knows where to look:\n\n<p align=\"center\"><img src=\"docs/mempenny-structure.svg\" alt=\"How MemPenny organizes memory: an index pointing at 8 fixed topic files, each holding entries; logs auto-archive by year\" width=\"880\"></p>\n\n## One memory, every AI\n\nUse more than one AI? Most of us do — one for coding, another for a second opinion, next month's favorite after that. Normally each keeps its own notes, so every switch starts from zero: new assistant, blank memory, explain the whole project again.\n\nMemPenny keeps your memory in plain, organized markdown that any AI can read — one memory, not one per vendor:\n\n- **Switch models freely.** The next model opens the same files and picks up where the last one left off. Nothing to re-explain.\n- **Second opinions arrive briefed.** Ask another AI to help mid-project — point it at your memory folder and it knows the goal, the decisions, the gotchas.\n- **Never locked in.** Your memory is markdown on your disk, not a vendor database. Change tools next month; it comes along.\n\nOn **Claude Code** and **opencode** this is automatic — same memory directory, same commands, zero setup. Every other supported agent (Codex, Gemini, CodeWhale, Swival, Cursor, Windsurf, and friends) gets the rules-only tier: [`AGENTS.md`](AGENTS.md) carries the same rules, the same safety net, and the memory folder's location — and most of these hosts now read `AGENTS.md` natively, so a second AI is briefed the moment it opens the project. The copied rules files carry the same folder pointer for hosts that want one.\n\n## Before / after\n\n| | Files | Size |\n|---|---:|---:|\n| Before | 424 | 1,247 KB |\n| After | 227 | 458 KB |\n| **Change** | **−46%** | **−63%** |\n\nA real second-pass run on a real memory directory. Full case study: [docs/real-world-results.md](docs/real-world-results.md).\n\n## Two ways to use it\n\n- **Clean now** — one command. You see the proposal, you say yes, done. A minute or two.\n- **Set a nap** — pick a schedule (daily / weekly / once). MemPenny tidies on your next session. Backup-first, no prompts, fully reversible.\n\n## Install\n\n**Claude Code**\n\n```\n/plugin marketplace add marcelopaniza/mempenny\n/plugin install mempenny@mempenny\n/reload-plugins\n```\n\n**opencode** (available from v1.2.0)\n\n```bash\ngit clone https://github.com/marcelopaniza/mempenny.git\ncd mempenny && git checkout v1.7.0\n./install/opencode.sh\n```\n\nCommands are `/mempenny-clean`, `/mempenny-nap`, `/mempenny-restore`, `/mempenny-memory-*` (hyphen, not colon). If you also run Claude Code in this project, the two hosts share the same memory directory and config automatically — zero setup.\n\n**Other agents** — MemPenny ships the native adapter file each host expects (a plugin manifest, a rules file, or a skill) plus `AGENTS.md` at the root. Pick your host:\n\n| Host | Install |\n|---|---|\n| Codex | `codex plugin marketplace add marcelopaniza/mempenny`, then `/plugins` → install mempenny, then `/hooks` → trust the nap hook |\n| Gemini | `gemini extensions install https://github.com/marcelopaniza/mempenny` (the nap hook ships with the extension) |\n| Antigravity (`agy`) | `agy plugin install https://github.com/marcelopaniza/mempenny` |\n| Devin | `devin plugins install marcelopaniza/mempenny` |\n| Hermes | `hermes plugins install marcelopaniza/mempenny --enable` |\n| OpenClaw | `clawhub install mempenny` |\n| Swival | `swival skills add --global https://github.com/marcelopaniza/mempenny` |\n| Cursor | copy [`.cursor/rules/mempenny.mdc`](.cursor/rules/mempenny.mdc) into your project |\n| Windsurf (Devin Desktop) | copy [`.devin/rules/mempenny.md`](.devin/rules/mempenny.md) (`.windsurf/rules/` is the legacy fallback path) |\n| Cline | copy [`.clinerules/mempenny.md`](.clinerules/mempenny.md) |\n| Kiro | copy [`.kiro/steering/mempenny.md`](.kiro/steering/mempenny.md) into `~/.kiro/steering/` |\n| Copilot | copy [`.github/copilot-instructions.md`](.github/copilot-instructions.md) into your project |\n| CodeWhale | nothing to do — reads `AGENTS.md` automatically |\n\nCursor, Windsurf/Devin Desktop, Cline, Kiro, Copilot, Devin, and Hermes all read `AGENTS.md` natively now — for them the copied rules file is an optional distilled extra, not a requirement.\n\nThese get the **rules-only** tier (strategy, guards, write-time discipline). The scheduled nap reaches further than it used to: full auto-clean on Claude Code, notification (or opt-in auto) on opencode, and a session-start **reminder** on Gemini and Codex — both adopted Claude Code's hook shape, so MemPenny's plugin-shipped hook rides along and nudges a consent-first tidy when a nap is due. Full matrix and rationale: [docs/host-and-model-compat.md](docs/host-and-model-compat.md).\n\n## Supported hosts & models\n\n| Host | Clean / Restore | Scheduled nap |\n|---|:---:|:---:|\n| Claude Code | ✅ | ✅ auto |\n| opencode | ✅ | ✅ notify · opt-in auto |\n| Codex / Gemini | rules-only | 🔔 reminder |\n| Cursor / Windsurf (Devin Desktop) / Cline / Kiro / Copilot / Devin | rules-only | — |\n| CodeWhale / Swival / OpenClaw | rules-only | — |\n\nOn opencode, a due nap fires a desktop notification pointing at `/mempenny-clean`; add `\"mode\": \"auto\"` to a schedule entry in `~/.claude/mempenny.config.json` and it starts `/mempenny-clean --yes` in the new session instead. On Gemini and Codex the nap is a reminder: a session-start hook injects a note that the nap is due and the model offers the rules-only cleanup — set the schedule from Claude Code or opencode (`/mempenny-nap`), or by hand in the same shared config. On Codex, trust the plugin's hook once via `/hooks`.\n\nMemPenny is tuned on Claude Sonnet/Opus and runs on GLM 4.6+, GPT-5, and Gemini 2.5. **Conservation is non-negotiable on every model** — a scripted check verifies nothing is lost before anything old is deleted. Distillation quality varies by model; see the compat doc for per-model notes.\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `/mempenny-clean` | One-shot tidy: triage → show → apply. Backup-first. |\n| `/mempenny-nap` | Schedule a recurring clean. |\n| `/mempenny-restore` | Reverse any pass. |\n| `/mempenny-memory-triage` | Dry-run: propose actions, change nothing. |\n| `/mempenny-memory-apply` | Apply a triage table. |\n| `/mempenny-memory-distill` | Shrink one file to its load-bearing lines. |\n| `/mempenny-memory-curate` | Reduce a topic file entry-by-entry. |\n| `/mempenny-memory-shard-roll` | Close a finished year into a locked shard. |\n| `/mempenny-memory-auto-split` | Split an over-ceiling file into an index + verbatim pages. Content-preserving — the fallback when nothing else applies. |\n\nClaude Code uses the colon namespace (`/mempenny:clean`, etc.) — same commands, two spellings.\n\n## Safety, in one screen\n\n- **Backup-first.** Every change is preceded by a full backup. `/mempenny-restore` reverses anything.\n- **Nothing lost.** A scripted conservation check runs before any old file is deleted.\n- **Path-locked.** Tight validation on every path and filename; symlinks refused at sensitive points.\n- **Off-limits by default.** A `.mempenny-lock` file or a `<!-- mempenny-lock -->` comment opts anything out.\n\nFull threat model and every codenamed guard: [SECURITY.md](SECURITY.md).\n\n## Advanced\n\nFull command reference, flags, config schema, the topic taxonomy, backup retention, localization, and how it all works under the hood: **[docs/advanced.md](docs/advanced.md)**. What's pending and why: **[docs/ROADMAP.md](docs/ROADMAP.md)**.\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n",
  "bytes": 8987,
  "sha": "159f4279628355dae0b259c7a0f57fb24eda4ce9d055018cba25ae61fb69cf7c",
  "repo_slug": "marcelopaniza/mempenny",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_marcelopaniza_mempenny_mempenny_802e0462/readme"
}