Local CLI + MCP server that maintains versioned project context for AI coding agents.
Project description
Nauro
Persistent project context for AI coding agents.
Nauro maintains versioned project context (decisions, state, open questions) and delivers it to Claude, Perplexity, ChatGPT, Cursor, and any MCP client. Think git log for why your project is the way it is.
Install
pipx install nauro
Or with pip:
pip install nauro
Requires Python 3.11+.
Quickstart
Try the demo locally (1 minute)
nauro init --demo
nauro setup claude-code
Open Claude Code and ask:
"What did we decide about the database?"
The demo creates a sample project with three decisions, project state, and open questions. No account needed.
Try it across surfaces (2 minutes)
To access the same project context from Claude AI, Perplexity, or ChatGPT:
nauro auth login
nauro sync
Then add mcp.nauro.ai as a remote MCP connector in your tool's settings. Ask the same question — same answers, different surface.
Use with your project
# Register your project
nauro init my-project
# Log a decision directly
nauro note "Chose Postgres over MongoDB for ACID compliance"
# Set your Anthropic API key to auto-extract decisions from commits
nauro config set api_key sk-ant-...
nauro extract
Why Nauro?
| Approach | Cross-tool | Extracted from commits | Versioned | Format |
|---|---|---|---|---|
| Nauro | All MCP clients | Yes (via Haiku) | Snapshots + diffs | Portable markdown |
| AGENTS.md (manual) | Tools with repo access | No | Git history only | Markdown |
| Cursor Rules | Cursor only | No | No | Proprietary |
| Claude Memory | Claude only | Partial | No | Proprietary |
check_decision catches when a new approach conflicts with a past decision, across any connected surface.
How it works
A Python CLI extracts decisions from your git history using Haiku, stores them as flat markdown in ~/.nauro/projects/, and validates new decisions against existing ones (structural screening, embedding similarity, LLM evaluation). An MCP server delivers context to any connected AI tool. Cloud sync keeps everything in sync via S3.
~/.nauro/projects/<n>/
project.md # goals, constraints
state.md # current focus, blockers
decisions/ # one markdown file per decision
open-questions.md # unresolved threads
snapshots/ # versioned store captures
All content is plain markdown. No database, no proprietary format.
MCP tools
11 tools (7 read, 4 write) exposed to any connected MCP client:
Read:
get_context— project summary at three detail levels (L0/L1/L2)list_decisions— browse the full decision historyget_decision— full content of a specific decision by numbersearch_decisions— keyword search across decision titles and rationaleget_raw_file— raw markdown content of any store filediff_since_last_session— what changed since your last session (or N days ago)check_decision— check a proposed approach for conflicts without writing
Write:
propose_decision/confirm_decision— write decisions with conflict validationflag_question— flag an unresolved questionupdate_state— report progress
Your data
Local extraction (free tier): Code diffs go directly from your machine to your Anthropic API key. Nauro is never in the data path.
Cloud sync: Project context (decisions, state, open questions — not source code) is stored encrypted in AWS S3 (SSE-S3). Each user's data is isolated under a unique prefix.
Remote MCP: When connected, your project context is read from S3 and delivered to the AI tool. The AI tool's own data policies apply after delivery.
Pricing
Free tier: unlimited local usage + 100 remote MCP calls/month. Pro ($9/mo) adds unlimited remote MCP and hosted extraction.
Contributing
Contributions welcome. See the project structure in CLAUDE.md for architecture context.
pip install -e ".[dev]"
pytest tests/ -x -q -m "not integration"
870+ tests across nauro, nauro-core, and mcp-server. Apache 2.0 license.
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 nauro-0.1.0.tar.gz.
File metadata
- Download URL: nauro-0.1.0.tar.gz
- Upload date:
- Size: 84.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fee9d8fd947407ee16e501e8253d975762a685f042c2b28a09c4fc0e6d67e24e
|
|
| MD5 |
1ef746f1fbf6f3da5d3ef5840d2b3acc
|
|
| BLAKE2b-256 |
291cbc8798aee7ee644594747140dbcccc5ff0b3ee544ecf5e1743a3e5cf6d4a
|
Provenance
The following attestation bundles were made for nauro-0.1.0.tar.gz:
Publisher:
publish-nauro.yml on Nauro-AI/nauro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nauro-0.1.0.tar.gz -
Subject digest:
fee9d8fd947407ee16e501e8253d975762a685f042c2b28a09c4fc0e6d67e24e - Sigstore transparency entry: 1301911193
- Sigstore integration time:
-
Permalink:
Nauro-AI/nauro@0a9a13287c7e609d3f8ed64b7a541a9e01884f4b -
Branch / Tag:
refs/tags/nauro-v0.1.0 - Owner: https://github.com/Nauro-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nauro.yml@0a9a13287c7e609d3f8ed64b7a541a9e01884f4b -
Trigger Event:
push
-
Statement type:
File details
Details for the file nauro-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nauro-0.1.0-py3-none-any.whl
- Upload date:
- Size: 108.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43699e97c50ab392a20e6f2f4cc41cc42e6a145a272234fc27ab03dafb3b2461
|
|
| MD5 |
b4ab14b71416f5745912bc4c19ca0ecf
|
|
| BLAKE2b-256 |
2489ff00128ac92b1aacbe552cc92d143d5002bada3d28c2987c86e1974b0ed7
|
Provenance
The following attestation bundles were made for nauro-0.1.0-py3-none-any.whl:
Publisher:
publish-nauro.yml on Nauro-AI/nauro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nauro-0.1.0-py3-none-any.whl -
Subject digest:
43699e97c50ab392a20e6f2f4cc41cc42e6a145a272234fc27ab03dafb3b2461 - Sigstore transparency entry: 1301911323
- Sigstore integration time:
-
Permalink:
Nauro-AI/nauro@0a9a13287c7e609d3f8ed64b7a541a9e01884f4b -
Branch / Tag:
refs/tags/nauro-v0.1.0 - Owner: https://github.com/Nauro-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nauro.yml@0a9a13287c7e609d3f8ed64b7a541a9e01884f4b -
Trigger Event:
push
-
Statement type: