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.0.tar.gz (84.2 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.0-py3-none-any.whl (108.5 kB view details)

Uploaded Python 3

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

Hashes for nauro-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fee9d8fd947407ee16e501e8253d975762a685f042c2b28a09c4fc0e6d67e24e
MD5 1ef746f1fbf6f3da5d3ef5840d2b3acc
BLAKE2b-256 291cbc8798aee7ee644594747140dbcccc5ff0b3ee544ecf5e1743a3e5cf6d4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nauro-0.1.0.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.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

Hashes for nauro-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43699e97c50ab392a20e6f2f4cc41cc42e6a145a272234fc27ab03dafb3b2461
MD5 b4ab14b71416f5745912bc4c19ca0ecf
BLAKE2b-256 2489ff00128ac92b1aacbe552cc92d143d5002bada3d28c2987c86e1974b0ed7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nauro-0.1.0-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