Skip to content

Releases: chinesewebman/mnelo

v1.1.0 — Multi-Agent 共用版

Choose a tag to compare

@chinesewebman chinesewebman released this 10 Aug 04:08

v1.1.0 is the Multi-Agent 共用版 of mnelo. Building on v1.0.0 (single-agent Task/Loop subsystem feature-complete), this release crosses the single-agent → multi-agent boundary:

  • Entity host namespace guard — multiple agents writing to the same DB use host:<agent> prefix to avoid id collisions
  • Tailscale CGNAT hosts accepted by mcp_server — cross-network multi-agent access (loopback / Tailscale mesh listen modes)
  • MneloRemoteClient wrapper — Hermes gateway wrapper with source='hermes-gw' attribution
  • streamable-http transport (MCP 2025-03-26 spec) — replaces SSE as the main transport
  • Linux systemd supportinstall.sh auto-installs systemd unit, full $10/year VPS deployment story
  • Config 化[rate_limit], [validation], [task], [client] four sections extracted to config.toml for multi-agent tuning

PR #6 + #7 close out fresh-DB CI stability + drop Python 3.9 (usearch>=2.26 wheels are 3.10+ only). CI matrix now Python 3.10 / 3.11 / 3.12, all green.

Schema

  • task_states / state_transitions tables — Task/Loop state machine persisted (M1 v0.2 schema bump)
  • audit_log — L2 autonomous 自主层 audit (H-1 §3)
  • host: namespace validation — multi-agent write isolation
  • schema_version → 1.1

Tools (27 total)

Group Count Examples
Memory core 19 remember / recall / relate / update / forget / graph_query / stats / audit_list / audit_undo / maintenance
Task/Loop 8 task_create / task_transition / task_list / task_replay / loop_create / loop_update / loop_list / loop_tick

Migration from v1.0.0

  • No data migration required. Existing single-agent v1.0.0 DBs work as-is in v1.1.0.
  • New writes enforce host: namespace prefix — v1.0.0 entities without prefix will trigger ValidationError on first remember() in v1.1.0. Run scripts/migrate_stock_namespace_2026_08_09.py to add host:default prefix in bulk before the first v1.1.0 remember().
  • install.sh now offers listen mode for multi-agent — re-run bash scripts/install.sh to enable.
  • Config additions: see config.toml.example for new [rate_limit], [validation], [task], [client] sections.

Breaking changes

  • None. v1.1.0 is backwards-compatible with v1.0.0 single-agent deployments.

CI status

✅ Lint (ruff)         success
✅ Security (bandit)   success
✅ Tests Python 3.10   success
✅ Tests Python 3.11   success
✅ Tests Python 3.12   success

Contributors

  • chinesewebman (owner) — multi-agent architecture + review + releases
  • Hermes (agent) — CI stability (PR #6 + #7) + CHANGELOG
  • Yanru-cafe (PR #2) — PII audit_log UNIQUE collision + tool count docs consistency

📖 Full changelog: see CHANGELOG.md

v1.0.0 — Task/Loop subsystem feature-complete (M1-M5)

Choose a tag to compare

@chinesewebman chinesewebman released this 06 Aug 14:15

v1.0.0 — Task/Loop subsystem feature-complete (M1-M5)

DESIGN §12 milestones M1-M5 all shipped. Task and Loop entities gain a full state-machine
core with audit log, concurrent safety, crontab-style recurring tasks, and stuck-task
proposals.

Highlights

  • State machine: transition / list / replay with 6 task states + 3 loop states
    • bi-temporal valid_from/valid_until windows
  • Concurrent safety: BEGIN IMMEDIATE cross-connection for apply_stale_proposal,
    forget_task, forget_loop — eliminates check-then-update races
  • loop_tick_cron: recurring tasks with configurable intervals
  • propose_stale_tasks: open>7d / waiting>14d / blocked>3d / in_progress>3d
    thresholds → audit_log proposals → apply/resolution loop
  • Forgetting with reason: explicit corrective gate (D8) — min length + strip +
    str type guards
  • usearch f16 runtime contract: double assertion (init + load) prevents the
    mixed-precision file corruption class entirely

MCP tools (22 total)

Group Tools
Memory core remember / recall / lanes / compact / digest / start
Task/Loop list_tasks / get_task_state / propose_stale_tasks /
list_stale_proposals / apply_resolution / forget_task /
forget_loop / start_loop / list_loops / loop_state / forget

Plus 8 other tools across lanes, audit, vector maintenance.

API boundary guards

Every public function enforces isinstance + range + whitelist for each
parameter. M33-M36 series:

Pass Concern
M30 race fix + threshold validation + digest ≤2000 chars
M33 forget race fix + reason ≥5 chars
M34 status/limit whitelist on list_stale_proposals
M35 reason isinstance(str) on forget path
M36 transition() reason/task_id/to_state/evidence guards

Search backend

Backend Status
usearch HNSW (f16) default; load+init runtime f16 assertion
zvec HNSW + INT8 + FTS5 optional; auto-preferred over usearch

Operational changes

  • WAL checkpoint warning persists (MCP long connections block truncate);
    manual wal_checkpoint(TRUNCATE) recommended when MCP is down
  • usearch.index rebuild path: scripts/rebuild_index.py --backend usearch --fresh (data-loss-safe; rebuilds from SQLite chunks only)
  • RUNBOOK § usearch-f16 + index-corruption diagnosis added

Stats

Metric Value
Commits since v0.5.12.1 162 (51 feat / 39 fix / 62 docs)
Tests passing 103 (full suite, isolated DB)
Review-pass audits 5 (M28-M37), all findings closed
Tags v1.0.0 (this)
Latest commit 6e06dbf

Upgrade notes

  • transition() reason is now always required (was force-only);
    callers must supply a non-empty string ≥1 char (post-strip)
  • list_stale_proposals accepts {proposed, applied, reverted, all}
    for status; limit clamped to 1-1000
  • forget_task / forget_loop reason is now validated (isinstance str,
    strip, min length 5)
  • transition() race fix: callers no longer need explicit
    BEGIN/COMMIT wrapping for atomicity on the simple API path; the
    function still accepts a caller-provided connection for full
    transaction control

Docs: DESIGN_TASK_LOOP.md ·
RUNBOOK.md ·
REVIEW_LOG.md

mnelo v0.1.1 — Documentation update

Choose a tag to compare

@chinesewebman chinesewebman released this 18 Jul 14:52

"# mnelo v0.1.1 — Documentation update\n\nDocs-only patch bump. No code or API changes — this release makes mnelo easier to discover and to install.\n\n## What changed\n\n### Top-of-README blurb\n- New "Why 4-way recall wins" paragraph on the README landing — explains in one read what each lane catches (vector misses literals like stock codes, meta misses semantic paraphrases, graph misses orphaned chunks, entity misses long-form prose), why RRF fuses them without score normalization, and links down to the math + latency numbers.\n- GitHub repo description rewritten from a flat tech-stack list to a hook that names real use cases: "The memory layer that remembers your stock picks, your wife's birthday, AND where you left your keys."\n\n### RRF finally explained\n- New "🔀 What is RRF?" section after At a glance. Cormack et al. 2009 paper link, a worked 3-lane example with hand-computed scores, and a side-by-side comparison table vs weighted-score fusion (normalization cost, robustness, extensibility, LOC). Closes the "RRF mentioned 5 times, defined 0 times" gap in v0.1.\n\n### Install fixed\n- Quick start now runs cd mnelo after git clone (v0.1 silently piped pip install into system Python) and adds a venv step.\n- New "🤖 One-line agent install" subsection — a copy-paste prompt for Hermes / Claude / Cursor / Codex that handles venv + plist + health probe. Typical install: ~90s (bge-small-zh model download is the slow part, ~95 MB).\n\n### Embedding model links\n- BAAI/bge-small-en-v1.5 now linked in both Acknowledgements and Known limitations (was bare text in v0.1). Swap target is now discoverable from the README without opening HuggingFace.\n\n### Bilingual parity\n- Every change above is mirrored in README.zh.md. No drift.\n\n## Diff\n\n\nREADME.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++--------\nREADME.zh.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++-----\n2 files changed, 103 insertions(+), 13 deletions(-)\n\n\n## Upgrade notes\n\nNo action required. Re-pull, re-read the README, profit.\n\n## Languages / 语言\n\n- English: see README.md\n- 中文: see README.zh.md\n\n## Install (unchanged from v0.1)\n\nbash\ngit clone https://github.com/chinesewebman/mnelo.git\ncd mnelo\npip install \"mcp[cli]>=1.26.0\" \"sqlite-vec>=0.1.9\" \"fastembed>=0.8.0\"\npython scripts/init_db.py\n\n\n## License\n\nMIT"

mnelo v0.1

Choose a tag to compare

@chinesewebman chinesewebman released this 18 Jul 10:32

mnelo v0.1 — Initial Public Release

Local-first knowledge-graph memory layer for AI agents. Single SQLite file + sqlite-vec + MCP + RRF. Bilingual (English + 中文).

Languages / 语言

Highlights

  • Storage: single SQLite file (~24 MB @ 4500 chunks, 4600 entities)
  • Vector: sqlite-vec (vec0) + BAAI/bge-small-zh-v1.5 (512-dim, CN-native)
  • Graph: native relations table, 2-hop BFS traversal
  • Recall: 4-way concurrent (vec + graph + meta + entity) → RRF fusion
  • Protocol: MCP over SSE (127.0.0.1:8086), 7 tools
  • Latency (warm): p50 = 12.5 ms, p95 = 36 ms
  • Bilingual: English + 中文 (auto-detect locale)
  • Test coverage: 50 tests passing

Install

git clone https://github.com/chinesewebman/mnelo
cd mnelo
pip install "mcp[cli]>=1.26.0" "sqlite-vec>=0.1.9" "fastembed>=0.8.0"
python scripts/init_db.py

Full docs: see RUNBOOK.md in this repo.

License

MIT