Skip to main content

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

arqondb-0.1.9-py3-none-win_arm64.whl (12.5 MB view details)

Uploaded Python 3Windows ARM64

arqondb-0.1.9-py3-none-win_amd64.whl (13.8 MB view details)

Uploaded Python 3Windows x86-64

arqondb-0.1.9-py3-none-manylinux_2_17_x86_64.whl (16.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

arqondb-0.1.9-py3-none-manylinux_2_17_aarch64.whl (15.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

arqondb-0.1.9-py3-none-macosx_11_0_arm64.whl (14.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

arqondb-0.1.9-py3-none-macosx_10_12_x86_64.whl (14.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file arqondb-0.1.9-py3-none-win_arm64.whl.

File metadata

  • Download URL: arqondb-0.1.9-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

Hashes for arqondb-0.1.9-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 8a7f3dd82ca35f0a592b44e1f0d11846147123ba6d5c1c6a7253cba277350455
MD5 9956783a7a056bb326da70c72c26439a
BLAKE2b-256 edfb1404ca6c0fa7fdfe0e13c12ff540d4adfdf904765f9e05de576f8512d660

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-win_arm64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arqondb-0.1.9-py3-none-win_amd64.whl.

File metadata

  • Download URL: arqondb-0.1.9-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

Hashes for arqondb-0.1.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 13a7a11445969939e5c3c9cecc5230b138775e204809fb37c66ffbbc2915ebaa
MD5 76fb69167dbea960c090f1b415167232
BLAKE2b-256 89e9b137c0bc96b2d2ba4274e8c48ab2853f469cb68af8fd52808a4f1cb2eef3

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-win_amd64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arqondb-0.1.9-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.9-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c49fd8675fb38d70d1f52f0bdf65fbd2eee623f7790619060df5beef05367f8c
MD5 f88bafc31cc7b8240ae44b082f4d91d2
BLAKE2b-256 0b01d1e722915e70f17b0cee2093713251c6aa3a97f1ce8d9dd8d091770a0256

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-manylinux_2_17_x86_64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arqondb-0.1.9-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.9-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 da89f0c35de853bfc9f4a1372f9dbe593072125933e81fc3adc77b60e111246b
MD5 3fdcd9c8aa4180ddd4bb7408427a41ec
BLAKE2b-256 3dd88bbb01243b9e6e3449232316c19950c59d8f2915d2136f3bd5dd3eacd0a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-manylinux_2_17_aarch64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arqondb-0.1.9-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c613f98c5d9156f4333ea9461c821f02b91bc0c87df359507414f713c210ad31
MD5 2b86a8ab45ae0b54e8b77559cc4e7045
BLAKE2b-256 2711859a406024c41d2f4e93e97a3c1d8973d56b497c405b550cc73c88260ddd

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arqondb-0.1.9-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.9-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1d69d3e67ce40577717713ae55a10ba7f609a85b41a1fab522191312c359f28c
MD5 ed0a49d768fb2d13e548766523a340c5
BLAKE2b-256 baca040437b3da4975e2a4d61fd50b43e22465b256a05d3e79e1f8e9154b38ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.9-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on AlbericByte/ArqonDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page