openchronicle-mcp

io.github.CSOAI-ORG由 GitHub 帳號 CSOAI-ORG 發布v3.0.0.dev1更新於 Oct 27, 2026

Memory database for LLM agents — persistent semantic + keyword memory, project namespacing, served o

已驗證STDIO僅桌面資料庫知識與記憶

概覽

AI 產生的概覽

供 LLM 代理使用的自架記憶資料庫,讓助理擁有依專案隔離的持久語意與關鍵字記憶。

可以做什麼
  • 儲存決策、里程碑與被否決的做法,使其在上下文壓縮與新對話後仍能保留
  • 以全文與語意混合檢索記憶,並查詢服務健康狀態
  • 依專案隔離記憶,避免不同工作流程的上下文互相混雜
  • 對 git 儲存庫進行匯入處理,依關聯性分群提交並回傳可供記憶寫入的摘要
適用情境
適合希望助理跨對話記住決策與理由,或從既有程式碼庫累積長期記憶,同時把資料留在自己硬體上的情境。
執行需求
以本機程序執行;README 提供從原始碼以 pip 安裝並搭配 oc 命令列(oc init、oc serve)的方式,也可使用 Docker 容器。預設綁定 127.0.0.1:8000,透過 HTTP 的 /mcp 存取。容器中需將 OC_API_HOST 設為 0.0.0.0,使用非 localhost 主機名稱時需設定 OC_MCP_ALLOWED_HOSTS。語意檢索依賴嵌入服務供應者。
安裝前請注意
單一使用者、非多租戶;透過 OC_API_KEY 的 Bearer 權杖驗證為選用且預設關閉,若要在可信任區域網路之外暴露服務應先啟用。記憶寫入本機 SQLite 資料庫,選用的異地備份會把加密快照複製到 rclone 遠端。選用指標以 OC_METRICS_ENABLED 開啟。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 openchronicle-mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

OpenChronicle

[code confidence] · claude-fable-5 · 2026-08-30 · details

[License: AGPL-3.0] [Docker] [Python 3.14+]

A memory database for LLM agents. Persistent semantic + keyword memory, project namespacing, git-onboard, served over HTTP REST and MCP from a single ASGI process. Runs on your hardware.

What it does

  • Persistent memory across sessions. Save decisions, milestones, and rejected approaches that survive context compression and new conversations. Retrieve them with hybrid full-text and semantic search via Reciprocal Rank Fusion.
  • Project namespacing. Memory is scoped to projects, so context for one workstream doesn't leak into another.
  • Git onboarding. Clone a repo, cluster commits by relatedness, return summaries ready for memory ingestion. Seeds long-term memory with the WHY behind existing code.
  • One process, two transports. FastAPI hosts both the REST surface (/api/v1/*) and the MCP streamable-HTTP transport (/mcp) on the same port. Single container, single port mapping, single healthcheck.
  • Embedding-failure degradation. When the embedding provider goes down, search degrades cleanly to FTS5-only and surfaces the degraded state via /api/v1/health and the MCP health tool. Backfill catches up when the provider returns; the static /health endpoint remains a minimal liveness probe.
  • Optional operational metrics. Released images (since v3.4.0) include the bounded Prometheus recorder and guarded /metrics endpoint, off by default. Opt in with OC_METRICS_ENABLED=true; enabling it in production stays subject to the performance gates. See the metrics configuration and the optional local monitoring runbook.
  • Schema migration framework. Versioned .sql migrations with savepoint atomicity. Re-runs are idempotent. Future schema changes drop in as NNN_<slug>.sql files.
  • Verified online backups. Uses SQLite's online backup API; each nightly snapshot is published with a verified manifest in OC_BACKUP_DIR, and one that fails verification is quarantined. Backup-before-destructive policy: vacuum runs a backup first as part of the same job. Integrity-check failures trigger emergency backups.
  • Optional encrypted offsite copies. A nightly job encrypts the newest snapshots with age and copies them to any rclone remote, append-only. See cloud_backup.md.

What it isn't

  • Not a conversation engine. v3 has no LLM. Use Claude Code, Goose, Open WebUI, etc. via the MCP server.
  • Not multi-tenant. Single user. Bearer-token auth via OC_API_KEY is supported but optional — disabled by default for trusted-LAN deployments. See docs/configuration/security_posture.md for the when-to-enable guidance.
  • Not a cloud sync layer. The DB lives on your hardware. Backups go to a local backup directory and, optionally, encrypted to a cloud remote, as backup only. Cross-device sync isn't built in (docs/design/0001-cloud-backup.md).

By design.

Install

From source:

bash
pip install -e ".[mcp,openai]"oc initoc serve

The default oc serve binds 127.0.0.1:8000. Override with --host/--port or OC_API_HOST/OC_API_PORT.

Docker (single container, NAS-friendly):

bash
docker run --rm \  -p 8000:8000 \  -e OC_API_HOST=0.0.0.0 \  -v $(pwd)/data:/app/data \  -v $(pwd)/config:/app/config \  ghcr.io/carldog/openchronicle-mcp:latest

OC_API_HOST=0.0.0.0 is required in a container — the app default binds container-loopback, which the port mapping can't reach. To call the server by anything other than localhost (a NAS hostname, a LAN IP), also set OC_MCP_ALLOWED_HOSTS=your-host:* or every request gets a 421 (see env_vars.md).

For a Portainer stack on a NAS, use the docker-compose.nas.yml at the repo root. It needs three things first: OC_TAG set to a release tag (there is no :latest fallback), the data volume created once (docker volume create openchronicle-mcp_oc-data; the compose never creates it, so a missing volume fails the deploy instead of starting empty), and the host exports directory created and owned by uid 1000. The file's header comments list every variable.

Quickstart

bash
# Bootstrap the runtime treeoc init
# Create a projectPROJECT_ID=$(oc init-project "my-project")
# Save your first memoryoc memory add "Decision: SQLite for storage; AGPL for license" \    --project-id $PROJECT_ID --tags decision
# Search itoc memory search "storage decision" --project-id $PROJECT_ID

Or do the same via MCP — register the server with Claude Code:

bash
claude mcp add --scope user --transport http openchronicle \    http://127.0.0.1:8000/mcp

Then ask Claude to call memory_save and memory_search.

Architecture

Hexagonal: domain/ (pure types + ports) → application/ (use cases, services) → infrastructure/ (SQLite, embedding adapters, the maintenance loop). Driver-side adapters in interfaces/ host the HTTP, MCP, and CLI surfaces.

See docs/architecture/ARCHITECTURE.md for the full layout.

Documentation

Development

bash
uv sync --locked --extra dev --extra mcp --extra openai --extra ollama --extra metricspre-commit installuv run pytest

Dependencies are locked in uv.lock, which CI and the Docker image install from; run uv lock after changing anything in [project] in pyproject.toml, including the version.

The architecture is enforced by tests:

  • tests/test_hexagonal_boundaries.py — domain/application/infrastructure layering
  • tests/test_architectural_posture.py — core agnostic of MCP SDK
  • tests/test_no_secrets_committed.py, tests/test_no_soft_deprecation.py — repo hygiene

License

Copyright (C) 2025-2026 CarlDog

AGPL-3.0. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed WITHOUT ANY WARRANTY; see the license for details.

The copyright line lives here rather than inside LICENSE: that file is the AGPL text verbatim, and the <year> <name of author> placeholders in its closing appendix are the license's own instructions for what to put in your source files — not blanks to fill in. Editing them would modify the license text itself.

來源:README.md,提交 bc0658e

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v3.0.0.dev1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分