Python SDK & server binaries for ArqonDB — agent memory with KV, vector search, and temporal causal graphs in one database
Project description
ArqonDB Python SDK
Agent memory with KV, vector search, and temporal causal graphs — in one database.
Quick Start
pip install arqondb
High-Level Client
from arqondb import Client
# No auth (local dev without GATEWAY_JWT_SECRET)
db = Client("localhost:9379")
# With auth (auto-login, fetches JWT from gateway management API)
db = Client("localhost:9379", username="admin", password="admin")
# With a pre-obtained token
db = Client("localhost:9379", token="eyJ...")
# KV — keys can be str or bytes
db.put("key", b"value")
print(db.get("key")) # b"value"
db.delete("key")
Agent State: Causal Graph
from arqondb import Client
db = Client("localhost:9379", username="admin", password="admin")
# Add steps to the causal graph
s1 = db.add_step("agent-1", "Observe", content=b"user clicked buy")
s2 = db.add_step("agent-1", "Think", content=b"should confirm order")
s3 = db.add_step("agent-1", "Act", content=b"sent confirmation email")
# Link them causally
db.add_edge(s1, s2, "Triggers")
db.add_edge(s2, s3, "Triggers")
# Traverse the chain
result = db.traverse(s1, direction="forward", max_depth=5)
for step in result.steps:
print(f" [{step.step_type}] {step.content}")
# Find similar causal chains by embedding
chains = db.find_similar_chains(query_embedding=[0.1] * 128, k=3, chain_depth=3)
Agent State: Branching (Fork)
# Fork a speculative branch
branch_id = db.fork("experiment-a")
# Write to the branch (isolated from main timeline)
db.branch_put(branch_id, "config:model", b"gpt-4o")
val = db.branch_get(branch_id, "config:model")
# Merge back or discard
db.merge_branch(branch_id)
# db.discard_branch(branch_id)
# List all branches
for b in db.list_branches():
print(f" branch {b.id}: {b.label} ({b.status})")
Agent State: Reactive State
# Compare-and-swap for optimistic concurrency
result = db.cas_put("counter", expected_seq=0, new_value=b"1")
if result.success:
print(f"written, new version: {result.new_seq}")
else:
print(f"conflict, current version: {result.actual_seq}")
# Watch for changes (streaming)
for event in db.watch_prefix("agent-1", "state:"):
print(f" {event.event_type}: {event.key} = {event.value}")
Async Client
import asyncio
from arqondb import AsyncClient
async def main():
async with AsyncClient("localhost:9379", username="admin", password="admin") as db:
await db.put("key", b"value")
print(await db.get("key"))
step_id = await db.add_step("agent-1", "Observe", content=b"hello")
step = await db.get_step(step_id)
print(step)
asyncio.run(main())
Agent Memory (High-Level 3-Primitive API)
from arqondb import AgentMemory
memory = AgentMemory("127.0.0.1:9379")
# Store observations
obs1 = memory.observe("user prefers dark mode", metadata={"source": "settings"})
obs2 = memory.observe("user switched to light mode after update")
# Link them causally
memory.link(obs1, obs2, relation="caused")
# Recall relevant memories
results = memory.recall("what theme does the user prefer?", k=5)
for r in results:
print(f" [{r.id}] {r.text} (distance={r.distance:.3f})")
Low-Level Client (bytes keys, direct gRPC)
from arqondb import ArqonDBClient, VectorIndexConfig
with ArqonDBClient("127.0.0.1:9379") as client:
# KV
client.put(b"key", b"value")
print(client.get(b"key")) # b"value"
# Vector search
client.create_vector_index("my_index", VectorIndexConfig(dim=768, metric="cosine"))
client.vector_put("my_index", 1, [0.1] * 768)
results = client.vector_search("my_index", [0.1] * 768, k=5)
# Graph
client.create_graph_index("my_graph", dim=768, metric="cosine")
client.graph_add_node("my_graph", node_id=1, properties=b'{"type":"event"}')
client.graph_add_edge("my_graph", src=1, dst=2, edge_type="caused", valid_from=1700000000)
API Reference
Client (recommended)
| Method | Description |
|---|---|
put(key, value) |
Write a KV pair (str or bytes key) |
get(key) |
Read a value (returns None if not found) |
delete(key) |
Delete a key |
scan(prefix, limit=100) |
Scan keys by prefix |
add_step(agent_id, step_type, ...) |
Add a causal step |
add_edge(src, dst, edge_type) |
Add a causal edge |
get_step(step_id) |
Get step metadata |
get_content(step_id) |
Get step content |
get_edges(step_id, direction=...) |
Query edges |
traverse(start, direction=..., max_depth=...) |
BFS graph traversal |
find_similar_chains(embedding, k=...) |
Vector-anchored chain search |
fork(label) |
Create a speculative branch |
merge_branch(branch_id) |
Merge branch to main |
discard_branch(branch_id) |
Discard branch |
branch_put(branch_id, key, value) |
Write to branch |
branch_get(branch_id, key) |
Read from branch |
cas_put(key, expected_seq, new_value) |
Compare-and-swap |
watch_prefix(agent_id, prefix) |
Stream write events |
expire_edge(src, dst, type, at) |
Expire a temporal edge |
edge_history(src, dst, type) |
Get edge version history |
AsyncClient
Same API as Client, all methods are async.
Why ArqonDB?
| Redis + Pinecone + Neo4j | mem0 | ArqonDB | |
|---|---|---|---|
| Deploy | 3 clusters | depends on external DBs | 1 process |
| Causal reasoning | DIY | flat triplets | native temporal causal graph |
| Vector + graph query | 3 round-trips | not supported | 1 query |
| Streaming writes | Pinecone rebuilds index | depends on backend | SPFreshLSM incremental |
Requirements
- ArqonDB server running (see arqondb.com)
- Python >= 3.9
Project details
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 arqondb-0.1.7-py3-none-win_arm64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-win_arm64.whl
- Upload date:
- Size: 12.5 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27e325f863f07087e914667edad158fb4d140b77b1dd36ac40f63071cfcba894
|
|
| MD5 |
ff43c1d36ce5994f4ec6a83b851100ea
|
|
| BLAKE2b-256 |
230a433dd2569b03e85dfba21531b1a0267999800e37cba539cd7cfdd34ab9f3
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-win_arm64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-win_arm64.whl -
Subject digest:
27e325f863f07087e914667edad158fb4d140b77b1dd36ac40f63071cfcba894 - Sigstore transparency entry: 1183752678
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file arqondb-0.1.7-py3-none-win_amd64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-win_amd64.whl
- Upload date:
- Size: 13.8 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cc395be906484abb0b52d736753178f5efa72d6dfdc363984d8734dfdc7d4a5
|
|
| MD5 |
a6a54f5341e1c8122f1f9b1200291506
|
|
| BLAKE2b-256 |
f4987155edb7d0399818f026de66641e949d91d125a12f41e8a5274aa6b4dd22
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-win_amd64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-win_amd64.whl -
Subject digest:
0cc395be906484abb0b52d736753178f5efa72d6dfdc363984d8734dfdc7d4a5 - Sigstore transparency entry: 1183752707
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file arqondb-0.1.7-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 16.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f600c3f52b7a6d89269c0ed718605ac0d195c3d71fb2b33d98f3dcd82fbb91b
|
|
| MD5 |
4844c43ca80a83441a558c94a0354f51
|
|
| BLAKE2b-256 |
2a4d377bb731f0d13d49100d3dbbf0af0708654bd5fc2fdd83182feb9d73014d
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-manylinux_2_17_x86_64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-manylinux_2_17_x86_64.whl -
Subject digest:
7f600c3f52b7a6d89269c0ed718605ac0d195c3d71fb2b33d98f3dcd82fbb91b - Sigstore transparency entry: 1183752719
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file arqondb-0.1.7-py3-none-manylinux_2_17_aarch64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-manylinux_2_17_aarch64.whl
- Upload date:
- Size: 15.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e6f12abe9f9fae096bde4622a00475c6bed98eec4ae74229110ca1b079e238f
|
|
| MD5 |
f3898c73d7cdc294f7f7c27e36f5825f
|
|
| BLAKE2b-256 |
825ee4330843da23a92729ae2e965628abc0b59b647f4a337bc270d4b67c601d
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-manylinux_2_17_aarch64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-manylinux_2_17_aarch64.whl -
Subject digest:
8e6f12abe9f9fae096bde4622a00475c6bed98eec4ae74229110ca1b079e238f - Sigstore transparency entry: 1183752656
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file arqondb-0.1.7-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 14.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
845e0a9015abd10cd06889bf8a8e76f0059ec310b79f61a999af259fea074b17
|
|
| MD5 |
e78677eb9e06ae6219218ab3fa54854b
|
|
| BLAKE2b-256 |
05f4af2e7eb57e0a8cfcafa209acfea4b8c22024c33594fa114e631274f953b2
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-macosx_11_0_arm64.whl -
Subject digest:
845e0a9015abd10cd06889bf8a8e76f0059ec310b79f61a999af259fea074b17 - Sigstore transparency entry: 1183752641
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file arqondb-0.1.7-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: arqondb-0.1.7-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 14.9 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7da87e99886a6bad96e70ab50541ff043b0f2d603d6b1b3328ca92a5952aa946
|
|
| MD5 |
e5d59160ef8960fe3709b5519ea6c3d5
|
|
| BLAKE2b-256 |
ba3ed26c32dbeaf65ab797c4ca2b3fd14f42fc96df098c9d66ce71c4a2e36f3b
|
Provenance
The following attestation bundles were made for arqondb-0.1.7-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on AlbericByte/ArqonDB
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arqondb-0.1.7-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
7da87e99886a6bad96e70ab50541ff043b0f2d603d6b1b3328ca92a5952aa946 - Sigstore transparency entry: 1183752621
- Sigstore integration time:
-
Permalink:
AlbericByte/ArqonDB@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AlbericByte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@62d3234f4cb964cf9ba336d17c1c2dbe3e3dcfcb -
Trigger Event:
workflow_dispatch
-
Statement type: