Skip to main content

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 history
  • get_decision — full content of a specific decision by number
  • search_decisions — keyword search across decision titles and rationale
  • get_raw_file — raw markdown content of any store file
  • diff_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 validation
  • flag_question — flag an unresolved question
  • update_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nauro-0.1.1.tar.gz (84.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nauro-0.1.1-py3-none-any.whl (108.8 kB view details)

Uploaded Python 3

File details

Details for the file nauro-0.1.1.tar.gz.

File metadata

  • Download URL: nauro-0.1.1.tar.gz
  • Upload date:
  • Size: 84.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nauro-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e57c5fa3c70923de81bda6ccf4ff2789ee5816f34371e991dc25b8d71a8be5a6
MD5 e1df28a19ed2818b69057599f7a40879
BLAKE2b-256 49491a0ccba06d63467dcbb622d0c549f8434a9df8037197e9d36e820e4a97b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for nauro-0.1.1.tar.gz:

Publisher: publish-nauro.yml on Nauro-AI/nauro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nauro-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: nauro-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 108.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nauro-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 db8596623a651391b676cba238f947c722c135bacb4735c2719b31dd413f5aab
MD5 2f9024ce109b382ccade78e3173549af
BLAKE2b-256 822a2def9765d25f726f28a8579978a49cd2afe2061b597ef1236c0a11a3fa9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nauro-0.1.1-py3-none-any.whl:

Publisher: publish-nauro.yml on Nauro-AI/nauro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page