Most agent memory systems answer one question: what did we say before? That is useful, and it is also where most of them stop.
An agent that remembers a fact but cannot be held to a promise is still an agent you have to babysit. So we built the boring part too.
Three things in one endpoint
Memory. soma_remember stores a fact with tags and importance. soma_recall searches by meaning — full-text BM25, word stems and tags merged with reciprocal rank fusion. soma_reflect builds an observation and records which facts it came from (derived_from edges). Facts live outside the context window, so long memory does not mean a long prompt.
Obligations. soma_send creates a signed envelope: goal, task, recipient, token budget, mandate, price — all named before work starts. soma_claim takes it exclusively; soma_complete closes it with a signed receipt. A refusal always names the rule that rejected it.
Proofs. Every envelope is signed with Ed25519. soma_verify checks the signature offline, because the public key travels with the signature. No call back to the node, no trust in our server required.
Try it without a token
- https://rta.lat/hub — what it is, with numbers from the live node
- https://rta.lat/hub/status — envelopes, facts, tools, version (JSON)
- https://rta.lat/hub/demo/recall?q=how%20much%20does%20soma%20cost — ask a question, the node searches its own memory
What we measured instead of claiming
A memory without a benchmark is a belief. We keep a small honest one: ten bilingual questions (Russian and English), and the expected answer must be in the top 3.
tests/test_recall_quality.py — recall@3: 10/10
That test caught two real failures: Russian word forms ("подпись" vs "подписан") and English cost questions ranking a tool description above the price. Both are fixed in the ranking, not in the test.
The ideas for multi-channel retrieval, temporal filters and observations came from reading Hindsight (MIT). Credit where it is due: the category moves fast, and the honest thing is to measure against it.
What it costs
- public status and memory demo — free, no account;
- one environment — $49/month;
- one envelope over x402 — $0.005 USDC.
Right to leave
soma_export returns every fact and every envelope as one JSON. No lock-in, no "we will delete it for you". If the node is not useful, you take your memory and go.
Source: https://github.com/mrpkk/soma-protocol (MIT). MCP registry: io.github.mrpkk/soma-protocol.
If you run agents that must remember, promise and prove — the demo is one click away, and I would rather hear what is missing than what is nice.
Top comments (0)