Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Project Memory

Project Memory keeps the plan, the evidence, the decisions, the outcomes and the accepted lessons of one project in a local SQLite database. Your assistant reads and writes those records through three MCP tools. You follow the same records in a local control panel, and you decide what is approved, accepted and merged.

It works for a software product, a consulting engagement and a workflow automation built in n8n. Work items can be code, documents, deliverables or exported workflows.

Public beta. Python 3.11 or newer is required. The runtime uses only the Python standard library. There is no telemetry, no hosted database and no account. Agent checks and delegated work run through the Codex or Claude Code CLI that you already have installed, and they consume that account's usage.

Install

Install uv, then run this inside the project you want to remember:

uvx project-memory-mcp@0.6.0b13 setup --client codex --trust

For Claude Code, replace --client codex with --client claude. Setup preserves existing records and settings, connects the MCP server and the lifecycle hooks, and opens the control panel. --trust approves the project integration in that client; omit it to approve the connection yourself. Start a new assistant session afterwards. Add --no-view for a headless installation.

For a permanent command:

uv tool install project-memory-mcp==0.6.0b13
project-memory doctor
project-memory view

To install the published wheel directly from GitHub instead of PyPI:

uvx --from https://github.com/Dankaro-projects/project-memory/releases/download/v0.6.0b13/project_memory_mcp-0.6.0b13-py3-none-any.whl project-memory setup --client claude --trust

Other local MCP clients use setup --client mcp and the stdio server. Setup and lifecycle covers client configuration, the plugins, upgrades, backups and removal.

Start a project

A new project starts from one of three templates:

project-memory init ~/projects/pricing-tool --template product --client codex
Template For Starter documents Phases
product A software product docs/brief.md, docs/research.md, docs/architecture.md, docs/stories.md Goals and brief, Research, Requirements approval, Architecture, User stories and acceptance, Build, Review and release
engagement A consulting engagement engagement/brief.md, engagement/stakeholders.md, engagement/research.md, engagement/findings.md, deliverables/README.md Scope and brief, Stakeholders and hypotheses, Research and evidence, Analysis and synthesis, Recommendations and deliverables, Client review, Handover
automation A workflow automation, with n8n exports in workflows/ automation/process.md, automation/systems.md, automation/solution-design.md, workflows/README.md Process discovery, Systems and credentials inventory, Solution design, Workflow stories and test data, Build workflows, Test with sample data, Deployment and handover

init creates the folder, initialises git unless you pass --no-git, writes any starter document that does not exist yet, connects the clients you name and records each phase as a work item. Running it again creates nothing a second time and never overwrites a document you have edited.

The kickoff conversation

Each template carries seven kickoff questions. Your assistant reads them with memory_get kickoff and asks you, for example what problem the product solves, who the stakeholders are, or which systems the process uses. It records your answers with memory_write answer_kickoff, fills the starter documents from those answers and proposes requirements. Only you approve the requirements baseline. Until that approval exists, the control panel opens on a kickoff checklist that shows the open questions, the research still needed, the starter documents that are still empty and the phases.

The everyday loop

Tell the assistant the result you want, the constraints and what would count as complete. It then records a work item with its objective, its completion criterion, the next action and the files it may change, continues from that record in later sessions, and records each decision with its evidence, alternatives, uncertainty and expected consequence. After acting, it records what actually happened. A failure stays visible after a later success.

You approve requirements, accept or reject proposed lessons, widen the allowed paths, and decide what is merged. Capturing a document does not approve its contents, and a plan does not authorise work.

The control panel

Run project-memory view in the project, or ask the assistant to open Project Memory. The panel reads the same database and refreshes while it is open.

View Content
Now One sentence on the project position, the kickoff checklist, work in progress, blocked work, the attention list, running agents and recent decisions
Plan The hierarchy of phases, epics, stories, research items, deliverables and workflows, with progress roll ups and a phase timeline
Work A board and a list of work items, and a detail with the plan, the allowed paths, dependencies, agent runs, lineage and history
Architecture Components from source code, exported n8n workflows and authored items such as systems, stakeholders and deliverables
Dependencies The work dependency graph with blocked chains, and the declared package table
Decisions Decisions with their outcomes, and the lineage from requirement to outcome
Learning Accepted guards and their recurrences, lessons awaiting your acceptance, failures without a lesson and scope widenings
Agents Host availability, agent checks, delegated runs, and the merge or discard decision
Records Search across every record kind, captured documents and host receipts
Requirements The current requirements, their version and their approval evidence

project-memory view --output review.html --include-bodies --no-open writes an offline snapshot instead. See the control panel guide.

Read the records in Obsidian

project-memory export --obsidian <vault> writes the records as a folder of Markdown notes with frontmatter and wikilinks, which Obsidian opens as a vault. A work item is a folder holding its own decisions, outcomes and plans, and sources, lessons and requirement revisions sit in shared folders beside it. The graph, the backlinks and the search of Obsidian then work on the project history, while the panel stays the place where you decide.

The export runs in one direction. The database is the source of truth, the export owns one folder inside the vault and touches nothing outside it, and a note edited inside that folder is lost on the next run. After a session that wrote records, the session stop hook refreshes the vault in a separate process.

Agent checks and delegated work

When Codex or Claude Code is configured, Project Memory can start short, separate host processes. An agent check reads the records and the project and reports on an outcome, on the current intent or on an unconfirmed execution. Delegated work runs a work item in its own git worktree, limited to the paths in its plan, and a second host reviews the resulting diff before you merge it. If one host reports a usage limit or a rate limit, the run reroutes once to the other configured host.

These runs use your installed Codex or Claude Code account and consume that account's usage. A reviewer cannot edit plans, accept lessons or merge anything. See agent checks and delegated work.

Guards and scope

An accepted lesson with a trigger becomes a guard. When a guard matches the paths or the wording of a work item, a decision must list that lesson in lessons_considered with an explicit yes or no and a reason, otherwise the decision is rejected. When a work item has allowed paths, the lifecycle hooks block an edit outside them, record the block and ask you to extend the scope in the control panel. The record fields document defines the pattern rules.

Honest boundaries

  • A recorded plan is not permission. Autonomy and scope are advisory records; your host's own permissions and your current instructions decide what may run.
  • The scope guard reads the file paths of edit tools, patch markers and the targets of MCP write tools. It does not parse shell redirection or other indirect writes inside shell commands.
  • Hooks record events mechanically. Only the assistant can record what those events meant, and a connected panel does not prove that the recording is complete.
  • An agent verdict is an interpretation. A passing check does not prove that the work is correct, and an empty findings list is not proof either.
  • Architecture is read statically from imports, manifests and exported workflow files. Dynamic loading is not detected.
  • Bounded retrieval limits the characters a call returns. It cannot control the complete model input of the host.
  • Daily productivity, token usage, correction rates and human task time are not measured, and this project makes no claim about them. Testing and limitations states what is verified and what is not.

Documentation

Packages are published on PyPI and in GitHub Releases.

Release files for project-memory-mcp 0.6.0b13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for project-memory-mcp 0.6.0b13
File Size Uploaded
project_memory_mcp-0.6.0b13.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for project-memory-mcp 0.6.0b13
File Interpreter ABI Platform
project_memory_mcp-0.6.0b13-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / project_memory_mcp-0.6.0b13.tar.gz

Download URL project_memory_mcp-0.6.0b13.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
6fe47fe148bd5df1f2a618af7cce5b3c1e2d342f6c19919570069b06d19d0c2d
BLAKE2b-256 checksum
How to use checksums
fea637a2ecff218aef01e49380287f2f387e398544e7d7a3b7d43199c0f70b58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / project_memory_mcp-0.6.0b13-py3-none-any.whl

Download URL project_memory_mcp-0.6.0b13-py3-none-any.whl
Size 660.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d86c7b858d39f8328f1fb6a3d634d7611bb69f6a8477a01bdd5b542193b53744
BLAKE2b-256 checksum
How to use checksums
6bed18fb34cb38fc3ae5b42415fb869c14c43e8e5303c84e6c52c9e32f4e1044
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page