Skip to main content

Cross-agent distributed memory over a mesh transport (currently Zenoh)

Project description

kioku-mesh

PyPI Python License

Shared memory for AI coding agents, across tools and machines.

One agent saves a decision; another agent recalls it over the mesh

kioku (記憶) means memory.

kioku-mesh gives coding agents a shared memory store. Claude Code, Codex CLI, Gemini CLI, and other MCP clients can save and search the same observations from one machine or from several machines on a trusted LAN/VPN mesh.

The default setup is local and needs no daemon. Mesh mode is available when you want the same memory pool replicated between hosts.

Why kioku-mesh

Coding-agent context gets fragmented across machines: which laptop did that work, what did the agent on the other host decide, and why does a secondary agent have to re-read everything from scratch just to give a quick second opinion? kioku-mesh keeps that memory in one shared pool so any agent, on any of your machines, can recall it.

Unlike long-term memory tools that store everything in one place, the shared pool is a peer-to-peer mesh you run yourself across your own machines (LAN / VPN / Tailscale) — no SaaS, no central account. The same memory is readable by Claude Code, Codex CLI, Gemini CLI, and any other MCP client.

Quickstart

pip install kioku-mesh

kioku-mesh init --mode local
kioku-mesh save "Chose Postgres over SQLite for analytics"
kioku-mesh search "Postgres"

Install the MCP server for your agent:

kioku-mesh mcp install --client claude-code
kioku-mesh mcp install --client codex-cli

The package installs two commands:

  • kioku-mesh: the CLI.
  • kioku-mesh-mcp: the stdio MCP server launched by your agent.

Modes

Mode Use it when Persistence Extra service
local You want memory on one machine SQLite none
localhost You want to smoke-test Zenoh locally in-memory zenohd
hub This machine is the always-on mesh hub RocksDB zenohd
spoke This machine connects to a hub RocksDB zenohd

local is the easiest starting point. Re-run kioku-mesh init --mode <mode> --force when you want to switch.

In mesh mode the Zenoh/RocksDB store is the source of truth, and each host's SQLite is a fast local read cache rebuilt from it — not a separate copy you have to reconcile. local mode is a standalone, SQLite-only setup for a single machine, so its saves live only in that local store and are not replicated to a mesh.

CLI

kioku-mesh save "Decided to keep billing events append-only" \
  --memory-type decision \
  --importance 4 \
  --subject billing

kioku-mesh search "billing events"
kioku-mesh get-memory <observation_id>
kioku-mesh delete <observation_id>
kioku-mesh gc --retention-days 30
kioku-mesh doctor

Useful environment variables:

Variable Purpose
MESH_MEM_AGENT_FAMILY Agent family, such as claude or codex
MESH_MEM_CLIENT_ID Client name, such as claude-code
MESH_MEM_SESSION_ID Optional stable session id
MESH_MEM_STATE_DIR State directory; defaults under the user data dir
MESH_MEM_FORCE_REBUILD=1 Rebuild the local index at CLI startup
MESH_MEM_DISABLE_INDEX=1 Use the legacy Zenoh scan path instead of SQLite index

MCP Clients

kioku-mesh mcp install handles the common setups:

kioku-mesh mcp install --client claude-code
kioku-mesh mcp install --client codex-cli

For Claude Desktop, Gemini CLI, ChatGPT Desktop, manual JSON/TOML examples, SessionStart hooks, and multi-agent identity recipes, see docs/mcp-clients.md and docs/multi-agent.md.

Multi-Host Mesh

Each host serves its agents from a fast local SQLite read index, backed by a Zenoh router + RocksDB store, and hosts replicate to each other over the mesh:

flowchart LR
  subgraph HostA["🖥️ Host A"]
    direction TB
    A1["Claude Code"]
    A2["Codex CLI"]
    AS[("SQLite index<br/>local read path")]
    AZ["zenohd<br/>Zenoh router + RocksDB<br/>(source of truth)"]
    A1 & A2 -->|"save / search"| AZ
    AZ -->|"subscriber · rebuild"| AS
    A1 & A2 -.->|"fast reads"| AS
  end
  subgraph HostB["🖥️ Host B"]
    direction TB
    B1["Codex CLI"]
    B2["Gemini CLI"]
    BS[("SQLite index<br/>local read path")]
    BZ["zenohd<br/>Zenoh router + RocksDB<br/>(source of truth)"]
    B1 & B2 -->|"save / search"| BZ
    BZ -->|"subscriber · rebuild"| BS
    B1 & B2 -.->|"fast reads"| BS
  end
  AZ <==>|"Zenoh mesh replication<br/>LAN / VPN / Tailscale · TCP 7447"| BZ

The recommended topology is one hub and any number of spokes. The hub listens on addresses reachable from the spokes; every spoke dials only the hub.

flowchart TB
  HUB["⭐ Hub<br/>always-on peer<br/>listens on LAN / Tailscale / VPN"]
  S1["Spoke · laptop"]
  S2["Spoke · desktop"]
  S3["Spoke · CI / server"]
  S1 -->|"dials hub (TCP 7447)"| HUB
  S2 -->|"dials hub"| HUB
  S3 -->|"dials hub"| HUB
  S1 -.->|"router transit<br/>(no direct link)"| S3
  S2 -.->|"router transit"| S3
# hub
kioku-mesh init --mode hub \
  --listen 127.0.0.1 \
  --listen 192.168.3.10

# spoke
kioku-mesh init --mode spoke \
  --listen 127.0.0.1 \
  --connect 192.168.3.10

Mesh mode requires zenohd and zenoh-backend-rocksdb on PATH. The current target is Zenoh 1.9.0.

zenohd -c ~/.config/kioku-mesh/zenohd.json5

kioku-mesh is designed to run inside a closed, trusted network. Keep port 7447/tcp reachable only between trusted peers, and do not expose it to the internet or an untrusted LAN. Today it relies on network admission (Tailscale, WireGuard, firewall rules, or a trusted LAN) rather than transport-level authentication; mTLS-based peer authentication is being considered for setups where network admission alone is not enough.

For a full walkthrough with firewall notes, five-peer examples, add/remove procedures, and smoke tests, see config/peers/example_5peer.md.

Development

pip install -e '.[dev,test]'
pytest tests/ -q

Run focused MCP checks with:

pytest tests/test_mcp_server.py tests/test_mcp_cli.py -v

Notes

  • Python 3.10+ is required.
  • Linux is the primary development and deployment target.
  • Windows users should prefer WSL2. Native setup notes are in docs/windows-setup.md.
  • macOS support is not verified yet.
  • delete writes a tombstone. gc performs physical cleanup.
  • 0.x releases are experimental; breaking changes can happen in minor versions.

More detail lives in docs/Spec.md, CHANGELOG.md, and the design records under docs/adr/.

Acknowledgments

kioku-mesh was influenced by engram and claude-mem. No code is copied from either project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kioku_mesh-0.3.3.tar.gz (864.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kioku_mesh-0.3.3-py3-none-any.whl (79.0 kB view details)

Uploaded Python 3

File details

Details for the file kioku_mesh-0.3.3.tar.gz.

File metadata

  • Download URL: kioku_mesh-0.3.3.tar.gz
  • Upload date:
  • Size: 864.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kioku_mesh-0.3.3.tar.gz
Algorithm Hash digest
SHA256 e4f52d2c65055dcece0bd762d428d74b78d0db0039511946e51118f7adf57d67
MD5 d36528f198cb65feb8a47b23701abd77
BLAKE2b-256 256b51a7d6c8ab0b85fb2c2a3958d7bd01b432fbaf995f692e5a757228b64bab

See more details on using hashes here.

Provenance

The following attestation bundles were made for kioku_mesh-0.3.3.tar.gz:

Publisher: publish.yml on h-wata/kioku-mesh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kioku_mesh-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: kioku_mesh-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 79.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kioku_mesh-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bf6278a26e6d3706063ca553918ecd577ba5b65d6576817f31e5bb36d2edc34c
MD5 88490e8216cda00dd93fa3ed0f02a720
BLAKE2b-256 2c2107dbe26b6f603bbafbd9e5b88f1e755794decb87743cb41e86b8af375009

See more details on using hashes here.

Provenance

The following attestation bundles were made for kioku_mesh-0.3.3-py3-none-any.whl:

Publisher: publish.yml on h-wata/kioku-mesh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page