Client Drivers

Talk to Anvil in Your Language

Official anvilent drivers for Rust, TypeScript, Python, and Go. Every driver speaks the same anvil:// connection scheme and exposes the same core surface — connect, run Cypher with parameters, and manage transactions.

Connection URI

All drivers accept the same URI. Use anvil+tls:// to require TLS. The default HTTP port is 7474.

connectionuri
anvil://username:password@host:7474/database
anvil+tls://username:password@host:7474/database

Rust

Synchronous
cargo add anvilentcrates.io
main.rsrust
use anvilent::{AnvilClient, Params};

let mut client = AnvilClient::new("anvil://admin:pass@localhost:7474/default")?;
client.connect()?;

let result = client.query(
    "MATCH (p:Person) RETURN p.name AS name",
    Params::new(),
)?;

for row in &result.rows {
    if let Some(name) = row.get("name").and_then(|v| v.as_str()) {
        println!("{name}");
    }
}

TypeScript

Async / Promise-based
npm install anvilentnpm
query.tstypescript
import { AnvilClient } from "anvilent";

const client = new AnvilClient("anvil://admin:pass@localhost:7474/default");
await client.connect();

const result = await client.query(
  "MATCH (p:Person) WHERE p.age > $min RETURN p.name AS name",
  { min: 21 },
);

for (const [name] of result.rows) {
  console.log(name);
}

Python

Synchronous
pip install anvilentPyPI
query.pypython
from anvilent import AnvilClient

client = AnvilClient("anvil://admin:pass@localhost:7474/default")
client.connect()

result = client.query(
    "MATCH (p:Person) WHERE p.age > $min RETURN p.name AS name",
    {"min": 21},
)

for (name,) in result.rows:
    print(name)

Go

Synchronous
go get github.com/devforge-io/anvil/drivers/gogo modules
main.gogo
import anvil "github.com/devforge-io/anvil/drivers/go"

client, err := anvil.NewClient("anvil://admin:pass@localhost:7474/default")
if err != nil { log.Fatal(err) }
if err := client.Connect(); err != nil { log.Fatal(err) }

result, err := client.Query(
    "MATCH (p:Person) WHERE p.age > $min RETURN p.name AS name",
    map[string]interface{}{"min": 21},
)
if err != nil { log.Fatal(err) }

for _, row := range result.Rows {
    fmt.Println(row[0])
}

Feature parity

Every driver ships the same core capabilities. Pick the one that fits your stack.

CapabilityRustTypeScriptPythonGo
Installcargo add anvilentnpm i anvilentpip install anvilentgo get …/drivers/go
Concurrency modelSynchronousAsync / PromiseSynchronousSynchronous
Parameterized queriesYesYesYesYes
TransactionsYesYesYesYes
TLS (anvil+tls://)YesYesYesYes
Health checkYesYesYesYes

Transactions follow the same shape everywhere: begin_transaction (or beginTransaction / BeginTransaction) returns a handle with query, commit, and rollback.