Project memory for humans and AI tools: capture issues, attempts, fixes, and decisions in readable Markdown and JSONL.
Project description
projectmem
projectmem gives your projects a readable memory.
It records the development story that usually disappears between commits:
issues, failed attempts, working fixes, decisions, notes, and the files involved.
The result is a small .projectmem/ folder that both humans and AI tools can
read without a vendor-specific integration.
Git shows what changed. projectmem helps explain what happened, what was
tried, what failed, and why the current solution exists.
Why It Exists
Project context is expensive to rebuild.
When you return to a codebase after days or weeks, you often need to rediscover why something was implemented a certain way. AI coding tools have the same problem: every new session may scan files, infer history, and repeat analysis that was already done before.
projectmem is designed to reduce that repeated work. Instead of asking a
person or an AI assistant to reconstruct the full project story from source
files alone, it keeps a compact, structured memory in Markdown and JSONL.
For AI-assisted development, the intended pattern is simple:
- read
.projectmem/summary.mdfirst - open detailed issue files only when needed
- avoid repeating failed approaches that were already recorded
- spend more context window on the current task instead of rediscovering old decisions
The exact token savings depend on the project and workflow, but the goal is to replace repeated broad scans of tens or hundreds of kilobytes with a concise summary targeted to stay under roughly 20 KB. In practical AI workflows, that can save a significant percentage of context tokens across repeated sessions, especially on long-lived projects.
What It Captures
projectmem is intentionally narrow. It is a project logbook for development
knowledge that does not fit cleanly into commits.
It captures:
- issues you are investigating
- hypotheses and attempts
- whether an attempt worked, failed, or partially helped
- final fixes
- architectural or implementation decisions
- notes and gotchas
- file references that matter to the story
It does not replace Git, issue trackers, documentation, code search, or AI memory systems. It complements them by preserving the reasoning and failed paths around a project.
Installation
pip install projectmem
This installs two commands:
projectmem
pm
Both commands run the same CLI. projectmem is the canonical command; pm is a
short alias for daily use.
Quick Start
Initialize memory inside a project:
cd path/to/your-project
projectmem init
Record the story as you work:
pm log "auth tokens expire after 1h instead of 24h"
pm attempt "bumped JWT_EXPIRY in config.py" --failed
pm attempt "found hardcoded TTL in middleware" --worked
pm fix "changed TOKEN_TTL in auth/middleware.py:42"
pm decision "keep auth middleware stateless so workers can scale horizontally"
pm note "local test suite requires the test database to be running"
Read the current project memory:
pm show
Search previous entries:
pm search token
Regenerate the summary from the raw event log:
pm regenerate
Project Memory Files
projectmem init creates:
.projectmem/
├── summary.md
├── events.jsonl
├── issues/
└── config.toml
File roles:
.projectmem/summary.mdis the compact memory for humans and AI tools..projectmem/events.jsonlis the append-only raw event log..projectmem/issues/contains per-issue Markdown files for deeper context..projectmem/config.tomlstores project-specific settings.
By default, projectmem init adds .projectmem/events.jsonl to .gitignore.
The raw log can contain noisy or sensitive working notes. The generated summary,
issue files, and config are the parts most teams may choose to commit.
Commands
| Command | Purpose |
|---|---|
projectmem init |
Create .projectmem/ in the current project |
pm log <text> |
Start a new issue |
pm attempt <text> --worked |
Record a successful attempt |
pm attempt <text> --failed |
Record a failed attempt |
pm attempt <text> --partial |
Record a partially useful attempt |
pm fix <text> |
Record the fix for the current issue |
pm decision <text> |
Record a project decision |
pm note <text> |
Record a free-form note |
pm show |
Print .projectmem/summary.md |
pm search <query> |
Search recorded events |
pm regenerate |
Rebuild the summary from events.jsonl |
AI Workflow
Any AI assistant can use projectmem without a plugin.
At the start of a session, ask the assistant to read:
.projectmem/summary.md
That file is designed to provide the current project story: recent issues,
outcomes, known gotchas, decisions, and key files. If more detail is needed, the
assistant can open the relevant file under .projectmem/issues/.
This keeps the memory portable across tools such as Claude Code, Cursor, Codex, custom agents, and plain terminal workflows. The storage is ordinary Markdown and JSONL.
Design Principles
- Local-first: no network calls, no cloud service, no telemetry.
- Human-readable: Markdown and JSONL only.
- AI-tool-agnostic: no dependency on one assistant or editor.
- Append-only raw log: the original event history remains available.
- Compact derived summary: the main AI-readable file stays small.
- Small CLI surface: a few commands focused on daily development memory.
Development Status
projectmem is in early development. Version 0.0.1 is the initial package
release for testing and name reservation. The first stable public workflow will
come after real use across several projects.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file projectmem-0.0.1.tar.gz.
File metadata
- Download URL: projectmem-0.0.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cf3f974e1f6fd3c65e061115e2ec49a9352bae608926475d47ed932b9c9c0b2
|
|
| MD5 |
27d8dcce9628000f58ada061d32111a7
|
|
| BLAKE2b-256 |
2821034d2decdc2a502b1ed714a0593e1b68a6e4dd049ca48d480bea915a00d6
|
File details
Details for the file projectmem-0.0.1-py3-none-any.whl.
File metadata
- Download URL: projectmem-0.0.1-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fc3c2036a7f6e942d67cc02577591adcdab1e2b9b4c902da727425c5771f7e3
|
|
| MD5 |
ab4c2d9633c0b9bb33eb31b9ba5528c7
|
|
| BLAKE2b-256 |
6d069bb2e12d0f743cb06997083a5eba0d828c6e794143e54ab2f11139054757
|