Client Libraries

Geode provides official client libraries for multiple programming languages. All clients speak the same Protobuf wire protocol over QUIC (default) or gRPC, while higher-level APIs vary by language.

Available Libraries

Quick Start

Go

go get geodedb.com/geode
import (
    "database/sql"

    _ "geodedb.com/geode"
)

db, err := sql.Open("geode", "quic://localhost:3141")

Python

pip install geode-client
from geode_client import open_database

client = open_database("quic://localhost:3141")
async with client.connection() as conn:
    page, _ = await conn.query("RETURN 1 AS ok")

Rust

cargo add geode-client
use geode_client::Client;

let client = Client::from_dsn("quic://localhost:3141")?;
let mut conn = client.connect().await?;

Node.js

npm install @geodedb/client
import { createClient } from '@geodedb/client';

const client = await createClient('quic://localhost:3141');
const rows = await client.queryAll('RETURN 1 AS ok');

Zig

const geode = @import("geode_client");

var client = geode.GeodeClient.init(allocator, "localhost", 3141, true);

Protocol Consistency

All clients speak the same Protobuf message set (Hello, Execute, Pull, Begin, Commit, Rollback) and surface ISO/IEC 39075 status classes in errors. Connection pooling and query builders are provided where available.

Choosing a Client

  • Go: database/sql integration with standard pooling and prepared statements.
  • Python: Async workflows, connection pooling, and gRPC/QUIC support.
  • Rust: tokio-based performance with typed values and DSN parsing.
  • Node.js: TypeScript-first API with pooling, query builders, and batching.
  • Zig: Low-level QUIC/gRPC access for native integrations.

Next Steps

Pages