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
- Subclass
AgentAdapterinmemloom/collectors/your_agent.py. - Implement
discover()(return list ofSource) andpull()(yield(MemoryRecord, Watermark)pairs). - Register in
memloom/collectors/__init__.py:_REGISTRY. - 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_recordfor OpenClaw. - v0.3: Graph layer (relationships between records, projects, agents).
License
MIT
Metadata
Release files for memloom 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| memloom-0.9.0.tar.gz | 597.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| memloom-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / memloom-0.9.0.tar.gz
| Download URL | memloom-0.9.0.tar.gz |
|---|---|
| Size | 597.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07513046eca933959bd254aa3369cfddc1db8bb9412f6e3ed5dbd4c8a4a31dec
|
|
BLAKE2b-256 checksum How to use checksums |
0068b0522519908908e43371e162ee3811f40262d9ef64f960b01ef1ff2739e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency logRelease files / memloom-0.9.0-py3-none-any.whl
| Download URL | memloom-0.9.0-py3-none-any.whl |
|---|---|
| Size | 461.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea07daec839bec64b7050fbf59d6725b9466f79091a44ebcb65e6f533e9053fa
|
|
BLAKE2b-256 checksum How to use checksums |
53f1f886d843e0fae4c71a4130cb6c043803d89f0d9d037aebcc9eb2785c05c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 19, 2026.
Transparency log