axonio 0.2.0

Rust client for Axonio: persistent memory for AI agents (formerly clawdb-client).
Documentation

axonio

Rust client for Axonio: persistent memory for AI agents.

Formerly the clawdb-client crate. That crate belongs to a GitHub account that is no longer available, so the client continues here as axonio. The old crate's calls did not work against a real server (its search used a route that does not exist and it never opened a session); this is a rewrite with the same method names where they made sense.

Install

[dependencies]
axonio = "0.2"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

TLS is rustls; no system OpenSSL is needed.

Quick start

Create an API key in the Axonio dashboard and export it:

export AXONIO_API_KEY="ck_live_..."
use axonio::{Axonio, RememberOptions, SearchOptions};

#[tokio::main]
async fn main() -> axonio::Result<()> {
    let db = Axonio::from_env()?; // an API key alone means the Axonio cloud

    let id = db
        .remember_typed(
            "The user prefers concise answers",
            RememberOptions { tags: Some(vec!["preferences".into()]), ..Default::default() },
        )
        .await?;

    // Matches by meaning, not only keywords.
    for hit in db.search("how should I phrase answers?", SearchOptions::default()).await? {
        println!("[{:.2}] {}", hit.score, hit.content);
    }

    db.delete_memory(&id).await?;
    db.close().await;
    Ok(())
}

For a self-hosted server: Axonio::builder().endpoint("https://db.example.com").api_key(key).build()?, or set AXONIO_URL.

Behaviour

  • A session is opened on the first call, renewed a minute before it expires, and renewed once more (retrying the call) if the server rejects it. db.connect().await opens it up front so a bad key fails early. Clones of the client share the session.
  • Network errors, timeouts and 502/503/504 are retried with backoff; 429 waits for Retry-After.
  • Environment variables are read as AXONIO_* first, then the older CLAWDB_*: API_KEY, URL, AGENT_ID, ROLE, TIMEOUT_MS.
  • The agent id can be any name; it maps to a stable UUID, identical across the TypeScript, Python, Go and Rust SDKs.
  • Errors are axonio::Error; is_retriable() tells transient from permanent.

What it covers

Memory (remember, remember_typed, search, get_memory, recall, list_memories, update_memory, delete_memory), branches (branch, list_branches, diff, merge, discard_branch, archive_branch, ...), transactions, reflection, sync, sessions and health.

Test

cargo test
AXONIO_LIVE_KEY=ck_live_... cargo test --test client live_cloud -- --ignored   # against the Axonio cloud

License

Apache-2.0