nautilus-compass

Local long-term memory and prompt drift checks for coding agents, with an optional hosted gateway

By chunxiao (individual) Python Remote (hosted) · Streamable HTTPLocal · stdio Knowledge and memory

55 popularity score ★ 1.3k ↓ 704/mo

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Its docs show no set-up for a particular client: add this address in your client the way it adds a remote MCP server.

Addresssent with Authorization: Bearer <COMPASS_TOKEN>
https://compass.nautilus.social/mcp/
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

FirstTerminal
git clone https://github.com/chunxiaoxx/nautilus-compass <ABSOLUTE_PATH_TO_CLONE>
pip install -e <ABSOLUTE_PATH_TO_CLONE>
bash <ABSOLUTE_PATH_TO_CLONE>/daemon_start.sh
Claude CodeTerminal
claude mcp add nautilus-compass -- python3 '<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "nautilus-compass": {
      "command": "python3",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "nautilus-compass": {
      "command": "python3",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "nautilus-compass": {
      "type": "stdio",
      "command": "python3",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.nautilus-compass]
command = "python3"
args = ["<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py"]
Gemini CLITerminal
gemini mcp add --scope user nautilus-compass python3 -- '<ABSOLUTE_PATH_TO_CLONE>/mcp_server.py'

Settings 6

NAUTILUS_COMPASS_PROJECT Optional: Project memory folder to use; defaults to the most recently changed project.
COMPASS_AGENT_TYPE Optional: Agent name recorded with writes and recalls (claude-code, cursor, custom...).
ZMM_BGE_MODEL Optional: Path to a downloaded BGE-m3 model, to skip the 2.3 GB download.
COMPASS_PLATFORM_QUEUE_URL Optional: Send platform tasks by HTTP instead of writing queue files.
COMPASS_USE_INOTIFY Optional: Set to 0 to stop new-file discovery; recall then misses fresh writes.
COMPASS_MCP_TOKEN Optional: Shared token for the TCP transport; ignored over stdio.

What it does

nautilus-compass is a memory layer for coding agents such as Claude Code, Cursor, Cline, Continue.dev and Zed. Its MCP server stores observations as Markdown files, searches them with the BGE-m3 embedding model plus keyword matching, and scores incoming prompts against a fixed set of good and bad example prompts to flag when an agent may be drifting from its instructions.

The server itself is a thin stdio process: every recall and drift call is forwarded to a separate local daemon on 127.0.0.1:9876 that keeps the model in memory, and the tools return an error while that daemon is down. At v3.3.0 the source registers 17 tools, not the seven the onboarding guide and protocol guide still list: besides memory write, recall, session search, profile and drift tools, it carries governance tools that split tasks into queue files and audit session logs, a hash-lock check on its own core files, and a bridge that queues tasks for the maker's Nautilus platform (mcp_server.py at v3.3.0).

The recall tool searches the Markdown memory files under ~/.claude/projects/<project>/memory/, the folder Claude Code uses for its own project memory, and picks the most recently changed project when none is given and NAUTILUS_COMPASS_PROJECT is unset. A token-scoped hosted gateway at compass.nautilus.social, described by its makers as an open beta, serves the same memory over HTTPS for people who do not want to run the daemon.

What it needs

To run it yourselfPython 3.10+

Python 3.10 or newer and a git clone of the repository; installing its dependencies brings sentence-transformers. The BGE-m3 daemon must be started with daemon_start.sh (daemon_start.ps1 on Windows) before the tools work; its first run downloads about 2.3 GB of model weights unless ZMM_BGE_MODEL points to a local copy. The hosted endpoint needs an account at compass.nautilus.social/signup and a token made in its web console.

Limits

The onboarding guide and protocol guide still describe the seven tools of v1.0; the server at v3.3.0 exposes 17. The pip package names a compass-mcp program, but pyproject.toml at v3.3.0 does not package the mcp_durable module that mcp_server.py imports, so the docs' own configs run mcp_server.py from a clone instead. The first recall after the daemon has been idle can take up to 90 seconds while the model reloads. Setting COMPASS_USE_INOTIFY=0 makes recall miss newly written memories without an error. The hosted gateway is an open beta, adds roughly 0.9 to 1.7 seconds per call, and its docs give a free-tier limit of 100 requests a minute.

Who it suits

It suits a developer who wants memory across Claude Code or Cursor sessions kept on their own machine and is willing to run a model daemon with a multi-gigabyte download. People who want project memory without a background process, or without the extra governance and platform-queue tools in the tool list, may prefer a lighter memory server. Those who would rather not install anything can use the hosted gateway, which keeps the memory on the maker's servers and is still in beta. It is a third-party project and not tied to any one vendor's product.

Tools 17

ingest_obs
Save one observation (title, body, drift self-rating) to memory
recall
Search memory files by meaning and keywords, returning the top matches
thread_recall
Return all messages tagged with one thread id in time order
session_search
Keyword search across saved session logs, filterable by drift or type
profile
Summarise work across sessions: main projects, work types, drift spread
drift_check
Score a prompt against good and bad example prompts and flag likely drift
drift_history
Show drift ratings over time across projects
feedback_log
Record whether a drift alert was right, for later retraining
long_task
Test tool that sends progress updates and honours cancellation
submit_platform_task
Queue a task for the Nautilus platform as a file, or by HTTP when configured
ingest_platform_task_result
Store a finished platform task's result so it can be searched
governance_dispatch
Split a multi-channel task into routed sub-task queue files
governance_audit
Scan recent sessions for tasks marked done without real output
governance_lock_check
Compare hashes of core files with a lock file, writing one if missing
governance_plan
Turn a complex task into a dependency graph of queued sub-tasks
proof_of_impact
Score how a cited memory contributed to an action and log the result
add_worker
Record a worker specification in a local registry file

Similar servers