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.7-py3-none-win_arm64.whl (12.5 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

arqondb-0.1.7-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.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

Hashes for arqondb-0.1.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 27e325f863f07087e914667edad158fb4d140b77b1dd36ac40f63071cfcba894
MD5 ff43c1d36ce5994f4ec6a83b851100ea
BLAKE2b-256 230a433dd2569b03e85dfba21531b1a0267999800e37cba539cd7cfdd34ab9f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.7-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.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

Hashes for arqondb-0.1.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0cc395be906484abb0b52d736753178f5efa72d6dfdc363984d8734dfdc7d4a5
MD5 a6a54f5341e1c8122f1f9b1200291506
BLAKE2b-256 f4987155edb7d0399818f026de66641e949d91d125a12f41e8a5274aa6b4dd22

See more details on using hashes here.

Provenance

The following attestation bundles were made for arqondb-0.1.7-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.7-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.7-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7f600c3f52b7a6d89269c0ed718605ac0d195c3d71fb2b33d98f3dcd82fbb91b
MD5 4844c43ca80a83441a558c94a0354f51
BLAKE2b-256 2a4d377bb731f0d13d49100d3dbbf0af0708654bd5fc2fdd83182feb9d73014d

See more details on using hashes here.

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

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.7-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.7-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 8e6f12abe9f9fae096bde4622a00475c6bed98eec4ae74229110ca1b079e238f
MD5 f3898c73d7cdc294f7f7c27e36f5825f
BLAKE2b-256 825ee4330843da23a92729ae2e965628abc0b59b647f4a337bc270d4b67c601d

See more details on using hashes here.

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

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.7-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 845e0a9015abd10cd06889bf8a8e76f0059ec310b79f61a999af259fea074b17
MD5 e78677eb9e06ae6219218ab3fa54854b
BLAKE2b-256 05f4af2e7eb57e0a8cfcafa209acfea4b8c22024c33594fa114e631274f953b2

See more details on using hashes here.

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

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.7-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arqondb-0.1.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7da87e99886a6bad96e70ab50541ff043b0f2d603d6b1b3328ca92a5952aa946
MD5 e5d59160ef8960fe3709b5519ea6c3d5
BLAKE2b-256 ba3ed26c32dbeaf65ab797c4ca2b3fd14f42fc96df098c9d66ce71c4a2e36f3b

See more details on using hashes here.

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

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