ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Continuum

โดย pouyahasanamrejiรุ่น 0.3.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.pouyahasanamreji/continuum

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Shared memory + orchestration for your coding agents. Local-first MCP, vector RAG.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): Streamable HTTP
  • หมวด: ค้นข้อมูลและความจำของ AI

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • Dockerติดตั้ง Docker ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "continuum": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ORCHESTRATOR_DB_PATH",
        "-e",
        "EMBEDDER_URL",
        "-e",
        "EMBEDDER_MODEL",
        "-e",
        "EMBEDDER_DIM",
        "docker.io/pouyahasanamreji/continuum:0.3.0"
      ],
      "env": {
        "ORCHESTRATOR_DB_PATH": "ใส่ค่าของคุณ",
        "EMBEDDER_URL": "ใส่ค่าของคุณ",
        "EMBEDDER_MODEL": "ใส่ค่าของคุณ",
        "EMBEDDER_DIM": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add continuum --env ORCHESTRATOR_DB_PATH='ใส่ค่าของคุณ' --env EMBEDDER_URL='ใส่ค่าของคุณ' --env EMBEDDER_MODEL='ใส่ค่าของคุณ' --env EMBEDDER_DIM='ใส่ค่าของคุณ' -- docker run -i --rm -e ORCHESTRATOR_DB_PATH -e EMBEDDER_URL -e EMBEDDER_MODEL -e EMBEDDER_DIM docker.io/pouyahasanamreji/continuum:0.3.0

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "continuum": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ORCHESTRATOR_DB_PATH",
        "-e",
        "EMBEDDER_URL",
        "-e",
        "EMBEDDER_MODEL",
        "-e",
        "EMBEDDER_DIM",
        "docker.io/pouyahasanamreji/continuum:0.3.0"
      ],
      "env": {
        "ORCHESTRATOR_DB_PATH": "ใส่ค่าของคุณ",
        "EMBEDDER_URL": "ใส่ค่าของคุณ",
        "EMBEDDER_MODEL": "ใส่ค่าของคุณ",
        "EMBEDDER_DIM": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "continuum": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ORCHESTRATOR_DB_PATH",
        "-e",
        "EMBEDDER_URL",
        "-e",
        "EMBEDDER_MODEL",
        "-e",
        "EMBEDDER_DIM",
        "docker.io/pouyahasanamreji/continuum:0.3.0"
      ],
      "env": {
        "ORCHESTRATOR_DB_PATH": "ใส่ค่าของคุณ",
        "EMBEDDER_URL": "ใส่ค่าของคุณ",
        "EMBEDDER_MODEL": "ใส่ค่าของคุณ",
        "EMBEDDER_DIM": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • ORCHESTRATOR_DB_PATH env
    SQLite path inside container
  • EMBEDDER_URL env
    Optional HTTP embedder (Ollama/TEI/OpenAI-compatible). Unset = in-process embedder.
  • EMBEDDER_MODEL env
    Embedding model id
  • EMBEDDER_DIM env
    Embedding vector dimension

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub pouyahasanamreji ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด ค้นข้อมูลและความจำของ AIi

  • ดาวมากกว่า 0% ของอีก 5684 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 13% ของอีก 5684 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 5684 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Continuum ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.0) เข้า registry 6 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Context7, Codebase Memory, Exa

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Context7

ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว

โดย upstashใช้กันมาก↓ 972.7K/สัปดาห์★ 64.2Kอัปเดต เมื่อวานซืน

บนเครื่องหรือคลาวด์

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

โดย DeusDataใช้กันมาก↓ 18K/สัปดาห์★ 48.1Kอัปเดต 22 วันที่ผ่านมา

รันบนเครื่อง

Exa

Connect AI agents to Exa for web search, content fetching, and multi-step research.

โดย exa-labsกำลังโต★ 5.2Kอัปเดต 2 เดือนที่ผ่านมา

รันบนคลาวด์✓ exa.ai

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Shared memory + orchestration for your coding agents.

One MCP server. Tell any client to read the plot — it becomes the orchestrator.

Dispatches fresh agents in isolated worktrees, shares lessons across every Claude Code / Codex / Cline chat on the project.

Quick Start • Memory & Vectors • Workflow • MCP Tools • Wire It In • Configuration


Your agents forget. Continuum remembers.

Point any MCP client at Continuum and tell it to read the plot. The client becomes an orchestrator — it researches the codebase, verifies the plan, persists a dispatch record, and hands you a ready-to-paste prompt for a fresh agent in an isolated git worktree. Every other Claude Code / Codex / Cline chat on the project sees what's reserved, shares what's been learned, and never re-explains the codebase. One local server: vector knowledge base, orchestration protocol, agent registry — shared across every MCP-speaking app on your machine.

flowchart TD

CC["Claude Code"] CX["Codex"] CL["Cline"] YOU["YOU"]

subgraph CONTINUUM["CONTINUUM ORCHESTRATOR"] direction LR PLOT["PLOT.md protocol"] KNOW["KNOWLEDGE (vectorized)"] AGENTS["AGENTS registry"] PANEL["WEB PANEL (humans)"] end

DB[("SQLite + sqlite-vec one file, your disk")]

CC -- MCP --> CONTINUUM CX -- MCP --> CONTINUUM CL -- MCP --> CONTINUUM YOU -- HTTP --> CONTINUUM CONTINUUM --> DB

No SaaS. No telemetry. No keys to manage. Boots in seconds. Survives reboots. Scales with you.


What you get

🧠 Vectorized memoryEvery lesson your agents learn becomes a 768-dim embedding indexed in sqlite-vec. Recall is semantic, fuzzy, and instant — no exact-match games.
🔍 RAG-native searchknowledge_search({q: "how do we handle webhook retries?"}) returns ranked metadata (slug + kind + agentSlug + timestamps); follow up with knowledge_get({slug}) for the body. Metadata first keeps top-K context cheap; only fetch what's worth reading.
🗺️ Canonical workflowEvery project gets a PLOT.md seeded with a 4-phase dispatch protocol — Intake → Research → Verify → Handoff. Stop re-explaining your process.
🤖 Multi-agent registryState machine + reserved-path tracking stops parallel agents from clobbering each other across git worktrees.
📚 Two-tier knowledgefundamental lessons are binding rules loaded on every dispatch. situational lessons surface via semantic search when relevant.
🖥️ Human web panelAstro + React UI to browse projects, agents, plot, and knowledge while AI clients drive everything via MCP.
🔌 Client-agnosticStandard MCP / Streamable HTTP. Works with Claude Code, Codex, Cline, Cursor, or anything that speaks the protocol.
🔒 Local-firstOne SQLite file. WAL mode. No cloud. Optional embedder is your call (Ollama, TEI, anything OpenAI-shaped).
📦 One container in prodSingle image, one HTTP port, one mounted volume. Drop on any host, point your MCP clients at it.

Why Continuum exists

Without ContinuumWith Continuum
Session ends → context gone.Lessons persist as embedded vectors. Recall survives reboots, models, and clients.
You re-explain conventions every session.knowledge_search ranks lessons by relevance; knowledge_get pulls the body when needed.
Two parallel agents edit the same file.reserved_paths + status state machine surfaces collisions before dispatch.
Each new task improvises orchestration.PLOT.md protocol seeded into every project — Intake → Research → Verify → Handoff.
"What did Claude do last week?"registry_list paginates dispatch metadata (slug, status, branch, reserved paths). agent_get({slug}) pulls the full record.
Knowledge scattered across chat logs.One SQLite database. One vector index. One source of truth.

Quick start

🐳 The easy path — one Docker command
docker compose -f docker-compose.dev.yml up

That's it. The whole stack comes up with hot reload, a SQLite browser, and a single shared volume — no Node, no pnpm, no native-build dance on your host machine.

What you get:

ServiceURLWhat it is
apihttp://localhost:6685NestJS + MCP server. Swagger at /docs. Hot-reloaded on file change.
webhttp://localhost:6680Astro + React panel. Hot-reloaded.
sqlite-webhttp://localhost:6667Browser UI for the live SQLite database — inspect projects, agents, knowledge, vectors. Loads sqlite-vec automatically.
embedder (optional)http://localhost:8080Hugging Face TEI running an HTTP embedder. Off by default.

The API embeds in-process by default (Snowflake/snowflake-arctic-embed-m-v1.5 via Transformers.js, 768-dim, ONNX q8). No external service required for semantic search. Override via EMBEDDER_URL to point at any HTTP-based embedder (Ollama, TEI, OpenAI-compatible). Turn the bundled TEI container on with the embedder profile:

HF_TOKEN=hf_xxx docker compose -f docker-compose.dev.yml --profile embedder up

Bind mounts keep the source tree on your host — edits are instant. Named volumes hold node_modules so installs survive restarts. Database lives at ./.local-data/dev-orchestrator.db on your host, gitignored, safe to wipe.

Stop everything:

docker compose -f docker-compose.dev.yml down            # keep data

docker compose -f docker-compose.dev.yml down -v # nuke volumes too

🛠️ Or run on bare metal
pnpm install

pnpm dev

API + MCPhttp://localhost:7776 (Swagger at /docs)
Web panelhttp://localhost:7777

Dev SQLite at ./.local-data/orchestrator.db. Gitignored. Wipe to reset — next boot recreates and migrates forward.

Requires Node >=22.12.0 and pnpm 10.33+. The compose path skips both.


Memory & vectors

This is the headline. Continuum's knowledge layer is what makes your agents stop being amnesiac.

How a lesson becomes memory
agent finishes a dispatch

│ ▼ knowledge_create({ project, agentSlug, slug, content: "When wiring rate-limit guards in Nest, register them in app.module.ts AFTER the auth guard, not before. Order matters.", kind: 'situational' }) │ ▼ content → embedder (in-process by default, or Ollama / TEI / OpenAI-compatible) │ Snowflake Arctic Embed v1.5 → 768-dim vector ▼ SQLite row + sqlite-vec index entry │ freshness profile = (URL, model, dim) ▼ forever queryable by ANY future agent on this project

How recall works

Phase 1 of every dispatch (the orchestrator does this automatically):

knowledge_list({ project, kind: 'fundamental' })

└─ returns metadata for every binding lesson — slug + agentSlug + timestamps. knowledge_get({ project, slug }) // for each fundamental slug └─ full body — base branch, worktree convention, no-AI-attribution, etc.

knowledge_search({ project, q: "rate limit middleware nest interceptor order" }) └─ vector similarity over your prose └─ returns top-K ranked metadata (no content) └─ does NOT need exact wording — natural language works knowledge_get({ project, slug }) // for each relevant hit └─ pulls the full lesson body

Search and list return metadata only — slug + kind + agentSlug + timestamps. Call knowledge_get for the body of any lesson worth reading. Keeps top-K context cheap; the orchestrator triages first, fetches second.

The result: the agent that's about to plan your task already knows what your last five agents learned the hard way. No prompt engineering. No "here's our convention" copy-paste.

Two kinds of knowledge
KindLoaded whenUse for
fundamentalEvery dispatch, unconditionallyProject-wide rules: base branch, worktree naming, commit conventions, append-only files
situationalOnly if semantically relevant to the taskSpecific gotchas: "auth guard ordering," "regen artifact merge strategy," "Stripe webhook idempotency keys"
The freshness profile

Vectors are pinned to a (EMBEDDER_URL, EMBEDDER_MODEL, EMBEDDER_DIM) triple. Change any one and Continuum marks stale vectors for rebuild on next boot. You stay in control of which embedder owns your memory — local Ollama, self-hosted TEI, or anything OpenAI-shaped.

Pluggable embedders

The embedder is required and runs in-process by default (Snowflake/snowflake-arctic-embed-m-v1.5, 768-dim, ONNX q8). The model weights are bundled in the API image — no extra container, no extra config, semantic search works out of the box.

Override via EMBEDDER_URL to delegate embedding to an HTTP service:

# Option A — Ollama (simplest, fully local)

ollama pull

EMBEDDER_URL=http://127.0.0.1:11434/api/embed

EMBEDDER_MODEL= EMBEDDER_DIM=768

Option B — Hugging Face TEI (production-grade, batched)

HF_TOKEN=hf_xxx docker compose -f docker-compose.dev.yml --profile embedder up embedder

EMBEDDER_URL=http://127.0.0.1:8080/v1/embeddings

EMBEDDER_MODEL= EMBEDDER_DIM=768

Option C — anything OpenAI-compatible /v1/embeddings

Works out of the box. Match the dim.

Built on sqlite-vec

The vector index lives in the same SQLite file as your projects, agents, and plot. One file. One backup. One restore. No separate vector DB to provision, no Pinecone bill, no Chroma daemon to babysit. WAL mode keeps reads concurrent with writes; foreign keys keep your registry consistent; busy_timeout = 5000 keeps things calm under contention.


Wire it into your AI client

Claude Code
// ~/.claude.json  →  mcpServers

{ "mcpServers": { "continuum": { "transport": "streamable-http", "url": "http://127.0.0.1:7776/mcp" } } }

Restart Claude Code. Tools appear under mcp__continuum__*.

Codex
# ~/.codex/config.toml

[mcp_servers.continuum] transport = "streamable-http" url = "http://127.0.0.1:7776/mcp"

Anything else (Cline, Cursor, custom)

Point any MCP-compatible client at http://127.0.0.1:7776/mcp. Streamable HTTP, stateful sessions (UUID-keyed). Server name continuum.


Your first project

Inside any wired client:

Create a Continuum project for /absolute/path/to/my/repo,

then read the PLOT.md and act as orchestrator for the following task: .

What happens:

  1. Client calls project_create({project: "/absolute/path/..."})
  2. Server seeds PLOT.md (the orchestration protocol) and an empty knowledge base
  3. Client calls plot({project}), reads the protocol, enters orchestrator mode
  4. Client follows the 4-phase workflow — researches, verifies, persists a dispatch record, hands you a ready-to-p

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx