Skip to content

Repository files navigation

Continuum

Cross-tool MCP memory server with a local dashboard for resuming work across long-running agent sessions.

When a conversation hits context limits, Continuum stores thread history locally and produces mode-sized handoffs so a new session can continue with continue build, resume build, or /continuum instead of manually copying prior context.

Requirements

  • Node.js 22.5+
  • npm (workspaces monorepo)

Optional: OPENAI_API_KEY or ANTHROPIC_API_KEY for LLM-backed summarization. Without either key, summarization falls back to a local heuristic merge.

Installation

npm install
npm run build
chmod +x .cursor/hooks/continuum-capture.sh

npm run build compiles the MCP server and embeds the dashboard into packages/continuum-mcp/dist/dashboard/.

Enable Continuum

Continuum is off by default. Enable it before capture or handoff tools will return a disabled status.

Option A — Dashboard

  1. Start the server (see Cursor below, or run node packages/continuum-mcp/dist/index.js).
  2. Open http://localhost:3847 and turn on Continuum in Settings.

Option B — MCP tool

Call continuum_set_enabled with { "enabled": true }.

Cursor

The workspace ships with .cursor/mcp.json preconfigured:

{
  "command": "node",
  "args": ["packages/continuum-mcp/dist/index.js"],
  "env": { "CONTINUUM_DATA_DIR": "${userHome}/.continuum" }
}

After npm run build, reload MCP in Cursor settings. Cursor hooks in .cursor/hooks.json append turns automatically when Continuum is enabled and finalize on session end.

Claude Code

Project-level MCP config lives in .mcp.json (same server definition as Cursor). From the repo root:

claude mcp list

Ensure the project is trusted and reload MCP after building.

Codex

Add the server to ~/.codex/config.toml or .codex/config.toml. See codex-mcp.example.toml for a template — use absolute paths for args and CONTINUUM_DATA_DIR.

How it works

Tier When Cost
Capture Hooks or memory_commit append raw turns No LLM
Summarize memory_commit with finalize: true, or session-end hook Incremental LLM/heuristic over new turns only
Handoff memory_get_handoff Mode-sized output; concise truncates without an extra LLM call

Modes (concise | medium | detailed) control handoff size. Set per thread or globally via memory_set_mode.

MCP tools

Tool Purpose
memory_commit Append turns; use finalize: true to summarize
memory_get_handoff Return a handoff for resuming work in a new session
memory_list_threads List stored threads
memory_get_thread Thread detail with turns and summary
memory_set_mode Set concise / medium / detailed
continuum_set_enabled Turn capture and handoff on or off
continuum_open_dashboard Return the dashboard URL

Dashboard

  • Production: served by the MCP process at http://localhost:3847 after npm run build.
  • Development UI: run npm run dev:dashboard for Vite hot reload (proxies /api to port 3847). In a separate terminal, run node packages/continuum-mcp/dist/index.js for the API.

Browse threads, view timelines, trigger summarization, and copy handoffs from the dashboard.

Development

# MCP server with watch (TypeScript)
npm run dev -w continuum-mcp

# Dashboard dev server
npm run dev:dashboard

# HTTP API only (no MCP stdio)
node packages/continuum-mcp/dist/index.js http-only

Project layout

packages/continuum-mcp/   MCP server, HTTP API, embedded dashboard
packages/dashboard/       Vite dashboard UI
.cursor/mcp.json        Cursor MCP config
.cursor/hooks/          Turn capture hooks
~/.continuum/           Local data (config.json, data.db)

Override the data directory with CONTINUUM_DATA_DIR. Override the API port with CONTINUUM_PORT or config.json.

Troubleshooting

MCP shows "Errored" in Cursor

Usually port 3847 is already in use (for example, a leftover http-only process). Free the port and reload MCP:

lsof -ti :3847 | xargs kill

Tools return "disabled"

Call continuum_set_enabled({ enabled: true }) or enable Continuum in the dashboard Settings.

Dashboard shows a placeholder page

Run npm run build to embed the dashboard assets into packages/continuum-mcp/dist/dashboard/.

Hooks not capturing turns

Confirm Continuum is enabled, packages/continuum-mcp/dist/index.js exists after build, and .cursor/hooks/continuum-capture.sh is executable.

Data

All data is stored locally under ~/.continuum/ by default:

  • config.json — enabled flag, port, default mode
  • data.db — threads, turns, summaries

No cloud sync. Set CONTINUUM_DATA_DIR to use a different location.

About

Pick up every agent session where you left off.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages