Official Clients

Connect to SoliDB from your favorite programming language. Robust, type-safe, and high-performance libraries maintained by the SoliDB team.

Rust Client

Official Support Stable v0.1.0

Installation

solidb = "0.1.0"

Stable official release maintained by the SoliDB core team.

Quick Start

let mut client = SoliDBClient::connect("localhost:6745").await?;
client.auth("_system", "admin", "password").await?;
let doc = client.insert("db", "col", None, json!({"id": 1})).await?;

Full API Reference

Status: Connected
Method Signature Description
Connect
connect(addr: &str)
Establish connection
Auth
auth(db, user, pass)
Authenticate session
Ping
ping()
Check connection health
Insert
insert(db, col, key, doc)
Add new document
Get
get(db, col, key)
Retrieve document
Update
update(db, col, key, doc, merge)
Modify document
Delete
delete(db, col, key)
Remove document
Query
query(db, sdbql, vars)
Execute SDBQL
Transaction
begin_transaction(db, iso)
Start ACID transaction
Commit
commit()
Commit transaction
Rollback
rollback()
Abort transaction

Node.js / Bun Client

Official Support Stable v0.1.0

Installation

npm install solidb-client

Stable official release maintained by the SoliDB core team.

Quick Start

const client = new Client('127.0.0.1', 6745);
await client.connect();
await client.auth('_system', 'admin', 'password');
const doc = await client.insert('db', 'users', { name: 'Alice' });

Full API Reference

Status: Connected
Method Signature Description
connect
connect(): Promise<void>
Async connection
auth
auth(db, user, pass)
Login to database
ping
ping()
Heartbeat check
insert
insert(db, col, doc, key?)
Store JSON document
get
get(db, col, key)
Fetch stored document
update
update(db, col, key, doc, merge?)
Partial/Full update
delete
delete(db, col, key)
Erase document
query
query(db, sdbql, vars?)
Run SDBQL engine
beginTransaction
beginTransaction(db, iso?)
Open transaction context
commitTransaction
commitTransaction(txId)
Permanently save changes
rollbackTransaction
rollbackTransaction(txId)
Discard all changes

Go Client

Official Support Stable v0.1.0

Installation

go get github.com/solisoft/solidb-go-client

Stable official release maintained by the SoliDB core team.

Quick Start

client := solidb.NewClient("127.0.0.1", 6745)
client.Connect()
client.Auth("_system", "admin", "password")
doc, _ := client.Insert("db", "users", data, nil)

Full API Reference

Status: Connected
Method Signature Description
Connect
Connect() error
Thread-safe dial
Auth
Auth(db, user, pass) error
Identify client
Ping
Ping() error
Network roundtrip
Insert
Insert(db, col, doc, key) (map, error)
Create record
Get
Get(db, col, key) (map, error)
Read record
Update
Update(db, col, key, doc, merge) error
Apply changes
Delete
Delete(db, col, key) error
Remove record
Query
Query(db, sdbql, vars) ([]interface, error)
SDBQL statement
BeginTransaction
BeginTransaction(db, iso) (interface, error)
Start tx
CommitTransaction
CommitTransaction(txID) error
Finalize tx
RollbackTransaction
RollbackTransaction(txID) error
Cancel tx

Elixir Client

Official Support Stable v0.1.0

Installation

{:solidb, "~> 0.1.0"}

Stable official release maintained by the SoliDB core team.

Quick Start

{:ok, client} = SoliDB.Client.connect()
:ok = SoliDB.Client.auth(client, "_system", "admin", "pass")
{:ok, doc} = SoliDB.Client.insert(client, "db", "users", %{name: "Alice"})

Full API Reference

Status: Connected
Method Signature Description
connect
connect(host, port)
Start TCP session
auth
auth(client, db, user, pass)
Login
ping
ping(client)
Alive?
insert
insert(client, db, col, doc, key?)
Put document
get
get(client, db, col, key)
Get document
update
update(client, db, col, key, doc, merge?)
Patch document
delete
delete(client, db, col, key)
Drop document
query
query(client, db, sdbql, vars?)
SDBQL call
begin_transaction
begin_transaction(client, db, iso?)
Begin unit of work
commit_transaction
commit_transaction(client, tx_id)
Confirm transaction
rollback_transaction
rollback_transaction(client, tx_id)
Abort transaction

Python Client

Official Support Stable v0.1.0

Installation

pip install solidb

Stable official release maintained by the SoliDB core team.

Quick Start

client = Client("127.0.0.1", 6745)
client.connect()
client.auth("_system", "admin", "password")
doc = client.insert("db", "users", {"name": "Bob"})

Full API Reference

Status: Connected
Method Signature Description
connect
connect()
Socket connect
auth
auth(db, user, pass)
Login session
ping
ping()
Ping server
insert
insert(db, col, doc, key=None)
Insert dict
get
get(db, col, key)
Retrieve dict
update
update(db, col, key, doc, merge=True)
Update dict
delete
delete(db, col, key)
Delete by key
query
query(db, sdbql, vars=None)
SDBQL Query
begin_transaction
begin_transaction(db, iso=None)
Start Tx
commit_transaction
commit_transaction(tx_id)
Commit Tx
rollback_transaction
rollback_transaction(tx_id)
Rollback Tx

PHP Client

Official Support Stable v0.1.0

Installation

composer require solidb/php-client

Stable official release maintained by the SoliDB core team.

Quick Start

$client = new Client('127.0.0.1', 6745);
$client->auth('_system', 'admin', 'password');
$doc = $client->insert('db', 'users', ['name' => 'Alice']);

Full API Reference

Status: Connected
Method Signature Description
auth
auth($db, $user, $pass)
Login
ping
ping()
Ping
insert
insert($db, $col, $doc, $key = null)
Create document
get
get($db, $col, $key)
Read document
update
update($db, $col, $key, $doc, $merge = true)
Update document
delete
delete($db, $col, $key)
Delete document
query
query($db, $sdbql, $vars = [])
Execute SDBQL
beginTransaction
beginTransaction($db, $iso = null)
Begin Trans
commitTransaction
commitTransaction($txId)
Commit Trans
rollbackTransaction
rollbackTransaction($txId)
Abort Trans

Ruby Client

Official Support Stable v0.1.0

Installation

gem install solidb

Stable official release maintained by the SoliDB core team.

Quick Start

client = SoliDB::Client.new('127.0.0.1', 6745)
client.connect
client.auth('_system', 'admin', 'password')
doc = client.insert('db', 'users', { name: 'Charlie' })

Full API Reference

Status: Connected
Method Signature Description
connect
connect
TCPSocket conn
auth
auth(db, user, pass)
Auth
ping
ping
Ping
insert
insert(db, col, doc, key: nil)
Insert hash
get
get(db, col, key)
Fetch hash
update
update(db, col, key, doc, merge: true)
Update hash
delete
delete(db, col, key)
Remove record
query
query(db, sdbql, vars: {})
SDBQL statement
begin_transaction
begin_transaction(db, iso: nil)
Start Transaction
commit_transaction
commit_transaction(tx_id)
Commit changes
rollback_transaction
rollback_transaction(tx_id)
Rollback changes

iOS Client

Official Support Stable v0.1.0

Installation

pod 'SoliDB'

Native performance via UniFFI. Offline-first with built-in SQLite sync.

Quick Start

let client = SoliDBClient(host: "localhost", port: 6745)
try await client.connect()
try await client.auth(database: "_system", username: "admin", password: "password")
let doc = try await client.insert(database: "db", collection: "users", document: ["name": "Alice"])

Full API Reference

Status: Connected
Method Signature Description
connect
connect() async throws
Establish connection
auth
auth(database:user:password:)
Authenticate session
ping
ping() async throws
Check connection health
insert
insert(database:collection:document:key:)
Add document with optional key
get
get(database:collection:key:)
Retrieve document by key
update
update(database:collection:key:document:merge:)
Modify existing document
delete
delete(database:collection:key:)
Remove document by key
query
query(database:sdbql:vars:)
Execute SDBQL query
beginTransaction
beginTransaction(database:isolation:)
Start ACID transaction
commitTransaction
commitTransaction() async throws
Commit transaction
rollbackTransaction
rollbackTransaction() async throws
Abort transaction
Native Mobile SDK: Built for offline-first mobile apps with automatic SQLite synchronization, background sync queues, and battery-efficient networking. View full iOS documentation →

Android Client

Official Support Stable v0.1.0

Installation

implementation 'com.solidb:solidb-android:0.1.0'

Native performance via UniFFI. Offline-first with built-in SQLite sync.

Quick Start

val client = SoliDBClient("localhost", 6745)
client.connect()
client.auth("_system", "admin", "password")
val doc = client.insert("db", "users", mapOf("name" to "Alice"))

Full API Reference

Status: Connected
Method Signature Description
connect
connect()
Establish connection
auth
auth(db, user, pass)
Authenticate session
ping
ping()
Check connection health
insert
insert(db, col, doc, key)
Add document with optional key
get
get(db, col, key)
Retrieve document by key
update
update(db, col, key, doc, merge)
Modify existing document
delete
delete(db, col, key)
Remove document by key
query
query(db, sdbql, vars)
Execute SDBQL query
beginTransaction
beginTransaction(db, iso)
Start ACID transaction
commitTransaction
commitTransaction()
Commit transaction
rollbackTransaction
rollbackTransaction()
Abort transaction
Native Mobile SDK: Built for offline-first mobile apps with automatic SQLite synchronization, background sync queues, and battery-efficient networking. View full Android documentation →

React Native Client

Official Support Stable v0.1.0

Installation

npm install @solidb/react-native

Stable official release maintained by the SoliDB core team.

Quick Start

import { useSoliDB, useSync } from '@solidb/react-native';

function App() {
  const client = useSoliDB('localhost:6745');
  const { data, loading, error } = useSync(
    'db', 'users',
    FOR doc IN users FILTER doc.active RETURN doc
  );
  return <UserList users={data} />;
}

Full API Reference

Status: Connected
Method Signature Description
useSoliDB
useSoliDB(host, port)
Initialize client hook
useSync
useSync(db, col, sdbql, vars?)
Live reactive query hook
useAuth
useAuth(client)
Authentication hook
insert
insert(db, col, doc, key?)
Add document async
get
get(db, col, key)
Fetch document async
update
update(db, col, key, doc, merge?)
Update document async
delete
delete(db, col, key)
Remove document async
query
query(db, sdbql, vars?)
Execute SDBQL async
beginTransaction
beginTransaction(db, iso?)
Start transaction context
commitTransaction
commitTransaction(txId)
Commit changes async
rollbackTransaction
rollbackTransaction(txId)
Rollback async
Cross-platform. Works with Expo and bare React Native. Hooks-based API with useSync for live queries. View full React Native documentation →

Flutter Client

Official Support Stable v0.1.0

Installation

flutter pub add solidb

Stable official release maintained by the SoliDB core team.

Quick Start

final client = SoliDBClient('localhost', 6745);
await client.connect();
await client.auth('_system', 'admin', 'password');
final docs = await client.query('db', 'FOR doc IN users RETURN doc');

Full API Reference

Status: Connected
Method Signature Description
connect
connect()
Establish socket connection
auth
auth(db, user, pass)
Authenticate session
ping
ping()
Check connection health
insert
insert(db, col, doc, key?)
Add document async
get
get(db, col, key)
Fetch document async
update
update(db, col, key, doc, merge?)
Update document async
delete
delete(db, col, key)
Remove document async
query
query(db, sdbql, vars?)
Execute SDBQL async
beginTransaction
beginTransaction(db, iso?)
Start ACID transaction
commitTransaction
commitTransaction()
Commit transaction async
rollbackTransaction
rollbackTransaction()
Abort transaction async
Cross-platform. Widget-based reactive API with streams. Works on iOS, Android, Web, and Desktop. View full Flutter documentation →

Performance Benchmarks

10,000 inserts • Ubuntu 24.04 (16 cores) • Native Binary Protocol

Sequential

Single connection, one-by-one inserts

Multi-Core Batch

16 parallel connections

Rust
v1.2.0
Seq Insert
32008
Seq Read
43270
Parallel
91775
Go
v1.2.0
Seq Insert
34102
Seq Read
47586
Parallel
90409
PHP
v1.2.0
Seq Insert
26770
Seq Read
44964
Parallel
79291
Python
v1.2.0
Seq Insert
36809
Seq Read
50434
Parallel
73233
Ruby
v1.2.0
Seq Insert
30423
Seq Read
44909
Parallel
72268
Bun/JS
v1.2.0
Seq Insert
22727
Seq Read
38462
Parallel
46729
Seq Insert
Seq Read
Parallel (16 workers)
Ops / Second
Rust Gain
2.9 x
Go Gain
2.7 x
PHP Gain
3.0 x
Python Gain
2.0 x
Ruby Gain
2.4 x
Bun/JS Gain
2.1 x
Why are sequential results similar? In single-connection mode, network latency is the bottleneck, not client CPU speed. Each operation requires a full round-trip (serialize → send → wait → receive → deserialize), making language speed nearly irrelevant. The multi-core benchmark reveals true client performance by using 16 parallel connections, where Rust's async runtime and Go's goroutines excel.

Methodology: Sequential: 1,000 inserts/reads, single connection. Multi-core: 10,000 parallel inserts, 16 concurrent workers. Run ./bench_all.sh to reproduce.