FAQ
Applies to OML v0.6.x · Status: Stable · Last verified 2026-11-06
Short answers, each linked to the page that owns it. For a symptom, see troubleshoot the client or troubleshoot the server.
Choosing OML
How is OML different from other agent memory products?
OML governs who can read a write and when: a write is held until a different identity approves it. It does not try to extract memories on its own or answer questions. See why a write is held and Evaluate OML.
Does it use embeddings or a language model?
Not in the default path. The default pipeline, bm25-postings, is keyword scoring, and the scan is fixed rules. Two optional pipelines add a cross-encoder reranker or a learned sparse model. See retrieval.
What does it cost, and is the public server free?
The software is Apache-2.0 and you can run it yourself on PostgreSQL. Access to the public server is by invitation. See Is OML for you? and install.
How long until a write is readable by others?
Until a reviewer approves it. How long that takes depends on your reviewers, and we have no measured figure. The author reads its own write at once with include_unreviewed.
Can I turn review off?
No. A development home with one person is the one exception: that person's approval of their own memory counts once and is marked self_signed. See why a write is held.
Which agents does it work with?
Claude Code through a plugin, claude.ai and the Claude phone apps through a connector, and Codex CLI, Cursor, Gemini CLI, VS Code and Claude Desktop through the agent kit. See integrations at a glance.
Install and connect
Which platforms can I install on?
Linux x86_64 and arm64, and Windows x86_64. There is no macOS build, so build from source on a Mac. See install.
The installer says the signature was not checked. Is that a failure?
No. Without cosign it checks the SHA-256 against SHA256SUMS, which catches a damaged download but not a tampered release. Install cosign and rerun with --require-signature.
Why does oml say "command not found" after install?
The script writes one file to $HOME/.local/bin and edits no profile. Add the PATH line it printed. See install.
Why does the plugin show no tools?
Set api_key and url in the plugin settings, not OML_API_KEY in the shell. See troubleshoot the client.
Can claude.ai or my phone reach a server on my laptop?
No. It needs a public HTTPS address with oauth.issuer set to it. See claude.ai and mobile.
Where do I get the connect code?
From your account page, before you add the connector. Open /web on your server and sign in, find Connect Claude on the web or a phone, type a name, keep writer and click Issue connector key. Copy the connect code it shows once, then paste it on the /oauth/authorize page Claude opens. If it is lost or expired, click New connect code on that key's row (connector keys only). See claude.ai and mobile.
Write, review and recall
I wrote a memory and my agent cannot see it. Why?
A new memory is held until a different reviewer approves it. Its author can see it with include_unreviewed: true. See write and read memories.
It was approved but recall finds nothing. Why?
Recall returns memories that hold any of your words, best first. Check that your key has a reader grant on the workarea, or you get access.not_found.
Can I read my own unreviewed work while I develop?
Yes, in an in-progress workarea. Readers see unreviewed memories, labeled as such, until a person commits the workarea. See workareas.
Why was my write refused with submission.scan_veto?
The scan found something it blocks, such as a leaked key. details.finding names the class. Remove it and write again. See errors.
Can I approve my own memory?
No. The author, and the author of anything the memory derives from, cannot approve it. A development home with one person is the exception: the approval counts once and is marked self_signed.
How do I review many memories at once?
List them with oml review list, then approve or reject the set. Each item gets its own verdict. See review held memories.
What can an agent not do?
An agent can write and read. It can never approve, sign, demote or delete. See MCP tools.
Run a server
Why does oml quickstart fail?
Port 8080 may be in use, so pass --port. Docker must be installed. See run your own server.
Why does /readyz answer 503?
One of postgres, fork_check or names_assigned is not ok. See troubleshoot the server.
Why do writers get 503 system.unavailable?
Writes in one tenant serialize on the journal, so a lead takeover or a failed fork check refuses them for a time. Retry after Retry-After. For the limits, see limits.
Is my data sent anywhere, and can I delete it?
On the public server, its operator can read stored memories, and logs are kept 30 days. OML does not delete memories; rejected and retired ones stay as history. See commitments.