Skip to main content

Weave your agents' memories into one searchable fabric — local-first, pluggable, raw-preserving.

Project description

memory-pipeline

Unified agent memory collection + local knowledge base.

Collects memory from multiple AI agents (OpenClaw, Claude Code, Codex, etc.) on local or SSH-reachable hosts, stores them as a raw-preserving data lake (JSON + markdown + SQLite FTS5), and exposes full-text search via a CLI.

Why

Every agent has its own memory. None of them talk to each other. This tool is the bottom layer of a stack that lets you grep/search/retrieve across all of them from one place.

The v0.1 design keeps everything raw — original files are copied (or referenced) to disk in their original form, with derived layers (facts, vector indices, graph relations) added on top later. You can always go back to the source.

v0.9 scope (Hub + Collector)

  • Hub (memloom serve): ingest → store → embed → search / MCP / dashboard
  • Collector (memloom collector): runs where data lives, pushes via ingest key
  • Sources: OpenClaw, LibreChat, OpenCode, Codex, Hermes, Kilo, Qoder, …
  • Legacy: memloom collect (local Runner) and SSH transport — not recommended
  • See docs/collector.md and hub-collector design

Install

uv sync
# or: pip install -e .

Quick start

# 1. Drop a starter config
mp init-config ./config/memory-pipeline.yaml

# 2. Edit it: pick which agents, which hosts

# 3. Start Hub
export MEMLOOM_INGEST_KEY=...
export MEMLOOM_READ_KEY=...    # optional; falls back to ingest
export MEMLOOM_ADMIN_KEY=...   # optional; falls back to ingest
uv run memloom serve --config ./config/memloom.yaml --host 127.0.0.1

# 4. On each machine with data — run a collector
cp config/collector.yaml.example ~/.config/memloom/collector.yaml
# edit hub + sources
memloom collector run ~/.config/memloom/collector.yaml --once

# 5. Search / dashboard
mp search "memory pipeline"
# http://127.0.0.1:8789/  (see docs/dashboard.md)

Layout

data/                          # Hub data_root
  raw/<source>/<key>.json
  raw/<source>/<key>.md
  index.sqlite
  runs.sqlite

Collector config

# see config/collector.yaml.example and docs/collector.md
hub: http://192.168.5.101:8789/ingest
sources:
  - type: opencode
    db: ~/.local/share/opencode/opencode.db

Architecture

Mac/hz/101 Collectors ──POST /ingest──► Hub (store + embed + MCP + dashboard)
  • Hub: authoritative pipeline and retrieval.
  • Collector: Hub-bound; filesystem/DB adapters; watermarks; batch ingest.
  • Legacy: memloom collect + SSH pull — prefer a collector on the data host.

Adding a new agent

  1. Subclass AgentAdapter in memloom/collectors/your_agent.py.
  2. Implement discover() (return list of Source) and pull() (yield (MemoryRecord, Watermark) pairs).
  3. Register in memloom/collectors/__init__.py:_REGISTRY.
  4. Add a config block under agents:.

That's it — pipeline + transport + store need zero changes.

Commit message format

We follow Conventional Commits (English, unless otherwise stated). Every commit message must match this format:

<type>(<scope>): <subject>     ←  ≤72 chars, imperative, no period

[optional body]                 ←  wrap at ~72 chars, explain WHAT and WHY

[optional footer]               ←  BREAKING CHANGE: or Refs: #123

Types: feat, fix, docs, style, refactor, test, chore, build, ci, perf, revert. Breaking changes use a ! after the type/scope (feat(api)!: drop v1 endpoint) or a BREAKING CHANGE: footer.

Scopes (project-specific): collectors, store, pipeline, transport, vector, mcp, cli, config, docs, deps, ci.

The repo ships with a .gitmessage template and a commit-msg git hook that enforces the format. To enable the hook after cloning:

./scripts/install-hooks.sh
git config commit.template .gitmessage

Examples:

feat(collectors): add OpenCode adapter
fix(privacy): strip ghp_ tokens from raw_meta
docs: add AnythingLLM integration guide
refactor(store)!: drop legacy v1 schema
chore(deps): bump pydantic to 2.13

Future (architecture already supports it)

  • v0.2: GitHub / Feishu / Notion / Email / browser extensions → drop in collectors under collectors/saas/.
  • v0.2: AnythingLLM integration via push to its Custom Embedding API.
  • v0.2: MCP server exposing search_records + get_record for OpenClaw.
  • v0.3: Graph layer (relationships between records, projects, agents).

License

MIT

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

memloom-0.9.0.tar.gz (597.4 kB view details)

Uploaded Source

Built Distribution

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

memloom-0.9.0-py3-none-any.whl (461.2 kB view details)

Uploaded Python 3

File details

Details for the file memloom-0.9.0.tar.gz.

File metadata

  • Download URL: memloom-0.9.0.tar.gz
  • Upload date:
  • Size: 597.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for memloom-0.9.0.tar.gz
Algorithm Hash digest
SHA256 07513046eca933959bd254aa3369cfddc1db8bb9412f6e3ed5dbd4c8a4a31dec
MD5 05384c1841673d35feebe407980d4129
BLAKE2b-256 0068b0522519908908e43371e162ee3811f40262d9ef64f960b01ef1ff2739e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for memloom-0.9.0.tar.gz:

Publisher: publish.yml on atbeta/memloom

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

File details

Details for the file memloom-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: memloom-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 461.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for memloom-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea07daec839bec64b7050fbf59d6725b9466f79091a44ebcb65e6f533e9053fa
MD5 bfb04fdaf1e550c76b64b12e0ca5f7ee
BLAKE2b-256 53f1f886d843e0fae4c71a4130cb6c043803d89f0d9d037aebcc9eb2785c05c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for memloom-0.9.0-py3-none-any.whl:

Publisher: publish.yml on atbeta/memloom

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