
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
project-memory-mcp
Advanced tools
Local project memory for decisions, evidence and outcomes, with bounded MCP retrieval.
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 uv, then run this inside the project you want to remember:
uvx project-memory-mcp@0.6.0b7 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.0b7
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.0b7/project_memory_mcp-0.6.0b7-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.
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.
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.
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.
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.
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.
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.
Packages are published on PyPI and in GitHub Releases.
FAQs
Local project memory for decisions, evidence and outcomes, with bounded MCP retrieval.
The pypi package project-memory-mcp receives a total of 959 weekly downloads. As such, project-memory-mcp popularity was classified as not popular.
We found that project-memory-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.