One memory file, synced to every AI coding tool's context file — CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules.
Mythicator is a per-repo memory system for AI coding agents. Its CLI command is agentmem. It stores decisions, rejected approaches, bugs, and conventions in a single canonical JSON file, then syncs that memory into the native context file each tool already reads — so Claude Code, Codex, Gemini CLI, and Cursor stay on the same page about a codebase without you repeating yourself to each one.
Every AI coding tool has its own context file convention. Explain a decision to Claude Code and it lives in CLAUDE.md. Explain the same decision to Codex and you're repeating it, or it's simply not there. agentmem keeps one source of truth and pushes it out to all of them.
Clone and link locally:
git clone https://github.com/Jeffrin-dev/Mythicator.git
cd Mythicator
npm install
npm run build
npm linknpm link makes the agentmem command available globally on your machine. If you'd rather not link globally, run it directly with node dist/cli.js <command> from inside the repo.
agentmem initCreates .agent-memory/memory.json in the current directory. Commit this file — memory travels with the repo.
agentmem add "Chose Postgres over SQLite" --type decision --reason "needs concurrent writes from multiple workers" --tags db,architecture--type is one of: decision, rejected, bug, convention, note.
--reason is optional.
--tags is a comma-separated list, optional.
agentmem list
agentmem list --type decision
agentmem list --tag architectureagentmem rm m0001agentmem syncWrites/updates CLAUDE.md, AGENTS.md, GEMINI.md, and .cursorrules. Generated content is wrapped in markers:
<!-- AGENT-MEMORY:START (auto-generated by agentmem, do not edit) -->
...
<!-- AGENT-MEMORY:END -->
Anything you've written outside these markers in those files is left untouched. Running sync repeatedly is safe — it only replaces what's between the markers.
agentmem contextPrints the same generated block to stdout, for piping into an ad-hoc prompt.
.agent-memory/memory.json:
{
"version": 1,
"repo": "mythicator",
"nextId": 3,
"entries": [
{
"id": "m0001",
"date": "2026-08-04T10:00:00.000Z",
"type": "decision",
"text": "Chose Postgres over SQLite",
"reason": "needs concurrent writes from multiple workers",
"tags": ["db", "architecture"]
}
]
}Ids are assigned from a persistent counter and are never reused, even after an entry is removed.
- Node.js 18 or later
- No runtime dependencies beyond commander
See CONTRIBUTING.md.
MIT — see LICENSE.
Build For DEVS