Skip to main content

Bloom

Persistent cross-session memory for Claude Code and any MCP-compatible client.

Bloom is a single-file SQLite memory that survives between sessions. Ask Claude Code "what did we decide about X last week" and it can actually answer — by searching every prior turn it has saved.

$ pipx install bloom-mcp
$ bloom-mcp init
$ # Bloom is now wired into Claude Code. Open a new session and ask it to recall.
  • Works offline. Default scoring is keyword + recency — no API key, no network.
  • Optional embeddings. OpenAI, Voyage (Anthropic-recommended), or local sentence-transformers.
  • Six MCP tools. recall, remember, recent, sessions, forget, stats.
  • One file, one process. SQLite at ~/.bloom/loom.db. No daemon, no Docker, no cloud.
  • MIT-licensed. Use it however you want.

Note — Bloom is an independent open-source project, not affiliated with Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic PBC.


Quickstart

1. Install

The recommended way is pipx (isolates Bloom from your system Python):

pipx install bloom-mcp

Or if you prefer plain pip / uv:

pip install bloom-mcp
# or
uv tool install bloom-mcp

2. Set up

bloom-mcp init

The wizard will:

  1. Pick a database location (default: ~/.bloom/loom.db).
  2. Choose an embedder (none is recommended — works offline, no API key).
  3. Tune recall settings.
  4. Register Bloom with Claude Code automatically (if claude is on your PATH).

3. Use it

In Claude Code, the assistant now has six new tools available. Try:

"Search Bloom for what we said about the postgres migration."

Claude will call recall("postgres migration") and surface relevant past turns.


What Bloom does

Bloom solves one problem: Claude Code forgets every session. Even with --resume, you lose context across days/weeks/projects. Bloom adds a tiny memory layer:

  • remember — store a turn (decision, learning, summary) so future sessions can find it.
  • recall — search by query; get the top-k most relevant past turns ranked by keyword overlap, recency, and (optionally) semantic similarity.
  • recent — pull the last N turns of a specific session.
  • sessions — list known sessions and their turn counts.
  • forget — delete a single turn by id.
  • stats — DB size, schema version, embedder.

You can use it as a Python library too:

from bloom.config import Config
from bloom.db import Database
from bloom.tools import tool_remember, tool_recall

cfg = Config.load()
db = Database(cfg.db_path)

tool_remember(db, cfg, content="we picked Postgres SKIP LOCKED for the queue", session="proj-x", tags="decision")
print(tool_recall(db, cfg, query="queue choice"))

Embedders (optional)

Bloom's default none embedder uses keyword + recency scoring. It's fast, offline, and good enough for most use cases.

If you want semantic search ("find turns about that thing we discussed" without needing the exact words), pick one of:

Provider Install Auth Cost
none (default) — Free
openai pip install bloom-mcp[openai] OPENAI_API_KEY ~$0.02 / 1M tokens
anthropic (Voyage AI) pip install bloom-mcp[anthropic] VOYAGE_API_KEY ~$0.02 / 1M tokens
local pip install bloom-mcp[local] — (downloads model) Free, ~80 MB

Set in ~/.bloom/config.toml or via bloom-mcp init:

[embedder]
provider = "openai"
model = "text-embedding-3-small"

Configuration

~/.bloom/config.toml:

[storage]
db_path = "/home/you/.bloom/loom.db"

[recall]
top_k = 5
max_chars = 4000
snippet_max_chars = 600

[embedder]
provider = "none"

[logging]
level = "INFO"

All values can also be set via env vars: BLOOM_DB_PATH, BLOOM_EMBEDDER, BLOOM_LOG_LEVEL.


Sharing Bloom with a team

Bloom is per-user, local-first by design. Every install gets its own SQLite file. There is no cloud component, no telemetry, no shared backend. Your conversations live on your machine.

If you want a shared team memory, the right approach is:

  1. Each person installs Bloom locally (they get private memory).
  2. Run a second Bloom instance on a shared host with a team-only namespace.
  3. Use a small wrapper (not yet shipped — track issue #1) that fans out remember to both.

A first-party "team Bloom" mode is on the roadmap but not in v0.1.


How it compares

  • vs mem0 — Bloom is local-first, single-file, MCP-native. Mem0 is hosted/cloud-first with richer extraction.
  • vs raw vector DBs (Qdrant, pgvector) — Bloom is the application, not the storage layer. You get tools, scoring, CLI, and Claude Code integration out of the box.
  • vs Claude Code's --resume — Resume is one session. Bloom is every session, searchable.

Roadmap

  • v0.2 — embedding-augmented recall (hybrid keyword + cosine)
  • v0.3 — multi-tenant team mode (shared host, per-user namespaces)
  • v0.4 — pruning + compaction (auto-summarize old turns to save space)
  • v0.5 — alternative backends (Postgres, DuckDB)

Documentation


License

MIT — © 2026 Jonah Tebaa.

Metadata

Release files for bloom-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bloom-mcp 0.2.0
File Size Uploaded Provenance Actions
bloom_mcp-0.2.0.tar.gz 28.8 kB Without provenance Details for bloom_mcp-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bloom-mcp 0.2.0
File Interpreter ABI Platform Actions
bloom_mcp-0.2.0-py3-none-any.whl Python 3 none any Details for bloom_mcp-0.2.0-py3-none-any.whl

Total release size: 52.0 kB

Release files / bloom_mcp-0.2.0.tar.gz

Download URL bloom_mcp-0.2.0.tar.gz
Size 28.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e4f3866c2f650ed819584df984027c5b699909e77484d2405b6a4d845e6d22b9
BLAKE2b-256 checksum
How to use checksums
ca412bbca764b592377739721f2368fc96cf5ddd5ff5ba0aefc572838c889100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / bloom_mcp-0.2.0-py3-none-any.whl

Download URL bloom_mcp-0.2.0-py3-none-any.whl
Size 23.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f97e7d5a43fbb66178ad6c666d7bb6ac2f0c75dceb0fd7bbc41e14e5759cbcbd
BLAKE2b-256 checksum
How to use checksums
737060f6ee2a619814d75e804de66ff738a8ec554f187c69d1082271cc8caa72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for bloom-mcp 0.2.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page