Frequently asked questions
Short answers to the first questions people ask. Each links to the page that explains it.
Using it
What is the fastest way to try Loom?
If a Loom server already exists, install the Claude Code or Codex plugin and point it at the
server: connect a coding agent. To run a server
on a laptop, loom up boots one in a few minutes: quickstart.
Why are my search results nonsense?
The install runs a fake embedder: its .env (a checkout's, or ~/.loom/.env) names
fake-ngram-*, whose vectors make retrieval meaningless. Switch its embedder, which
re-embeds what is stored (Models and keys); a fresh
install of the released stack embeds with a local model already. A hosted embedder
retrieves better on paraphrase-heavy questions
(providers).
Why does memory.search say abstain instead of returning something?
No hit cleared the similarity floor calibrated for your embedder, so Loom says it doesn't know rather than hand back the nearest weak match. The reason is in the response. See retrieval and ranking.
Why was my write flagged as a conflict, or refused?
A write close in meaning to an existing memory is marked conflicted and linked to it; a
close write against a pinned memory is refused with 409 PINNED_CONFLICT; a write matching a
blacklist pattern gets 422 BLACKLISTED. Resolve conflicts in the dashboard's Review queue or
with conflicts.resolve. See conflicts and refusal.
Can I use Loom just for myself?
Yes. Run the local stack, which has no login and one
namespace, and connect your agents with the plugin or loom install.
On a server with login, each person gets a personal-<slug> namespace that their MCP
clients write to by default and nobody else reads without a grant. Memory saved from
Claude Code is then there for Codex, Cursor and the dashboard.
Can two agents see each other's memories?
Every member of a namespace can read its rows. Each agent writes into its own layer, and an
admin can copy a memory into the namespace's shared layer with memory.promote. A token can read several
namespaces while writing one. See identities and namespaces.
When should I use knowledge documents instead of memories?
A memory is one short claim that can be revised. A document, a long page or anything over a
couple of kilobytes goes in the knowledge plane with knowledge.add, which chunks and embeds
it. See memory and knowledge documents.
How do I make Loom forget something?
memory.delete tombstones one memory (restorable for a grace window);
erasure.request removes everything a user or namespace owns, across every table, and
verifies nothing is left. Loom deletes nothing on its own schedule unless an operator sets a
retention window. See retention and erasure.
How do I find out why a result ranked where it did?
Call memory.search with explain=true: each hit's score_components carry the ranking
signals and, after a reranker, its move (rerank_from, rerank_pos, rerank_delta) and,
when the reranker changed the order, its own fused score (rank_score_pre_rerank).
memory.search_trace scores the vector leg alone. See search and
ask.
Can Loom answer questions about my code?
Yes, for repositories the server indexes: code.search, code.symbol, code.callers,
code.impact and more, each answer saying which commit and index tier backs it. See the
code index and adding a repository.
Why doesn't my coding agent use the code index?
The plugin attaches the index only when the session starts inside a git checkout whose
remote is an indexed repository you can read. Start the session from the repository's
checkout, check the repository is listed under Repositories in the dashboard (<server>/repositories), and see
when the code index is used.
Running it
Do I need ClickHouse Cloud?
No. Loom runs against ClickHouse OSS too, and the laptop stack starts one in Docker. Cloud is the intended production path because single-node OSS has no replication or point-in-time recovery. See deployment.
Can I use Anthropic or Gemini models?
Yes. The LLM provider can be OpenAI or Anthropic, and embeddings can come from OpenAI,
Gemini or a local CPU model. Changing the embedding model changes the vector space, so run
loom reembed afterwards. See LLM and embeddings.
How do I give someone access?
Mint a token (loom mint-token, or the dashboard's Settings → Tokens) and grant a role on a
namespace. See tokens and grants.
Something is wrong. Where do I start?
loom doctor on the server, /loom:loom-status in Claude Code, and /v1/health. Then
troubleshooting, which is organised by symptom.
The project
Why is an operation missing from my MCP tool list?
The MCP listing depends on the toolset (?toolset= or LOOM_MCP_TOOLSET, default
core), and code tools are listed only with LOOM_MCP_CODE_TOOLS=true. Under all, an
op that neither the core nor the atomic roster lists and that is marked experimental is
left out. Every op is still callable by name through loom_op (reads only on
readonly), over HTTP and from the SDKs. See MCP toolsets.
How good is the retrieval, and how do you know?
Loom ships its benchmark suite with the method, datasets and exact commands. Only results reproducible from committed files are stated. See benchmarks.
How is Loom different from putting a vector database next to my app?
Under the default ClickHouse authority, one ClickHouse database holds the rows, vectors, text index, graph, audit and erasure state, so nothing has to be kept in sync. The Postgres memory authority holds live memory and knowledge state in Postgres, and Loom keeps the two stores in step itself. Each write is checked against what is stored. The overview lists what each property costs and when Loom does not fit.