Byzantine-fault-tolerant state sync for AI agent swarms — a drop-in Redis replacement where one prompt-injected agent can't poison the swarm.
Project description
Memora
The Cloudflare Zero Trust of agent state.
Your security stack watches the network. Nothing watches what your agents tell each other.
Memora is the missing layer — Byzantine-fault-tolerant shared memory where one compromised agent is mathematically unable to fork the state of the rest, and every write is signed, attributable, and exactly replayable.
pip install memora-swarm
You aren't paying for message delivery. You're paying for mathematical certainty that a single compromised agent can't fork the swarm.
Why
When you run many agents against one shared memory, that memory is your weakest link. A single agent that gets prompt-injected, goes rogue, or simply malfunctions can write poison that every other agent then reads and trusts. Plain key-value stores (Redis, etc.) have no defense — last write wins, no matter who wrote it.
Memora replaces that shared store with an engine that is correct under adversarial writers:
- CRDTs — concurrent writes merge deterministically; the swarm never forks, no locks.
- Trust-weighted aggregation — numeric contributions are combined by a robust mean that down-weights outliers instead of averaging them in.
- Byzantine conviction (ACFA) — an agent that says different things to different peers (equivocation) is detected and evicted. Up to f malicious agents in a group of ≥ 2f+3 cannot move the agreed result.
Every write is signed by a self-certifying node identity and appended to a replayable log — so any state is attributable and auditable after the fact.
Quickstart
import memora_swarm as memora
# One key is the whole engine. Get a free key at https://memora.optitransfer.ch
db = memora.Blackboard(
"./swarm.memora",
node_id="agent_12",
api_key="opti_sk_...",
)
db.connect("research-swarm") # join a room; every agent in it shares one memory
# Shared key/value state — CRDT-merged. get() returns the set of current values.
db.put("best_hypothesis", "H3")
print(db.get("best_hypothesis")) # -> ['H3']
# Byzantine-tolerant numeric aggregation: submit, then resolve the agreed result.
# resolve(round, f) -> (aggregate_vector, acfa_root, convicted_node_ids)
db.submit_tensor("reward_estimate", [0.71, 0.68, 0.73], round=1)
vector, acfa_root, convicted = db.resolve(round=1, f=1)
print(vector, "convicted:", convicted) # poisoners are evicted, not averaged in
That's it — no server to run. Your key connects you to the hosted relay, which does the CRDT merge, trust-weighting and Byzantine aggregation for you.
Use it with your stack
Memora is a plain shared-memory backend, so it drops under the agent frameworks you already use (LangChain, CrewAI, AutoGen). See the docs for copy-paste adapters: https://memora.optitransfer.ch/docs
Pricing
25,000 semantic ops free on signup — unlimited agents, the full engine, no feature gates.
An "op" is a semantic state transition (a put or a submit_tensor); keepalive, sync and reads
are never billed. At 85% of the free allowance you're prompted to add a card so nothing stops
mid-run; after that it's metered at $0.35 / 1,000 ops ($0.20 / 1,000 above 2M/mo). The same
key upgrades in place — your swarm never re-keys.
Links
- Home & docs — https://memora.optitransfer.ch
- Get a key (dashboard) — https://memora.optitransfer.ch/dashboard
- Live swarm monitor — https://memora.optitransfer.ch/monitor
Made under the optitransfer.ch umbrella.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memora_swarm-0.1.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: memora_swarm-0.1.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e88ddce7507734968bd25cb1bda80aa58678b0728a0eca12ec2e30489a74b14e
|
|
| MD5 |
1fc1a6248fb8a713bdda5439bf91924d
|
|
| BLAKE2b-256 |
0e6450cff2562fe1500fa5d0429e13601a36112b790c41717f312e544809d9cd
|
File details
Details for the file memora_swarm-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: memora_swarm-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d78edcd144f41a2debf4fed5703426b2df1f34d867ad07629b9fb6c1374030a3
|
|
| MD5 |
a1cc2c3ddbc7cd3081fd33af003203aa
|
|
| BLAKE2b-256 |
c1720719c4c079a9f81b20180923d3bbf581b3aa8c3ab253c4fbd67f53e72ac2
|
File details
Details for the file memora_swarm-0.1.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: memora_swarm-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0483ea44cadaf2d2306141a3bc67c73bc2a4c2926ebc594b47e22e58ea5f71fa
|
|
| MD5 |
9cc567f08becd8712f5739a8c2fcb0bf
|
|
| BLAKE2b-256 |
e3a396a25015045658110ffc010db5883655d1515c83189a8211ef0ed0c7f5f3
|
File details
Details for the file memora_swarm-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: memora_swarm-0.1.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.4 MB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8063a827a9b290cc4866c966d9a7d8fa053c27e2ed039bdd5e6f742ede709fa2
|
|
| MD5 |
1e59e31c4908e04a005804ad50951964
|
|
| BLAKE2b-256 |
b0b85cd86f983fbfb9dd7a8495e873a72004052b00f79b6ab15914f7d4bde6dd
|