BreakingPeer-reviewable proof: ACID, BASE and all three letters of CAP. At the same time.Read our paper
Docs/Reference

CLI reference

abyssdb <command> [flags]
CommandPurpose
repl (default)Interactive SQL shell
execExecute SQL from -e or stdin
servePostgreSQL protocol server and AWP server
mcpModel Context Protocol server for AI agents
benchAbyssDB Benchmark Suite
clusterJepsen-style NullRaft chaos test
dtxDistributed transactions under chaos
versionPrint the version
helpPrint usage

Topology flags

repl, exec, serve, mcp, bench and dtx accept the same topology flags.

FlagDefaultDescription
--shards N1 (dtx: 4)Number of shards on the consistent-hashing ring
--nodes N1 (dtx: 3)NullRaft replicas per shard; values above 1 enable consensus
--regions a,b,…us-east-1Regions to place shards in, round-robin. See Operations
--warp X1Compresses interplanetary waits by factor X (demo mode)
--epsilon D5msNullTime clock uncertainty; commit-wait is 2ε
--edition Ecommunitycommunity or deep-abyss
--chain-difficulty N12AbyssChain proof-of-work difficulty, in leading zero bits
--block-size N1024Transactions per AbyssChain block
--storage-engine Ekernelkernel (the operating system’s device) or rust (abyss-core via WebAssembly). See Rust
--scale-to-zero D5mScale compute to zero after this long idle; 0 disables
--otlp-endpoint URL$OTEL_EXPORTER_OTLP_ENDPOINTOpenTelemetry OTLP/HTTP endpoint for traces
--row-keystrueSeal every row under its own unique key, derived from ML-KEM-768. See Security
--threads N0 (all cores)Maximum OS threads running Go code at once (GOMAXPROCS)

Setting --shards, --nodes above 1, or --regions starts the in-process cluster. AbyssDB waits for every shard to elect a leader before accepting statements.

repl

abyssdb [repl] [topology flags]

Starts the interactive shell. Statements end with ; and may span lines. Meta-commands start with \ at the beginning of an input: \?, \h, \q, \dt, \du, \stats, \cluster, \crypto, \chain, \regions.

exec

abyssdb exec [-e SQL] [topology flags]

Runs a script and prints every result. Without -e, the script is read from stdin. Execution stops at the first error, and the exit code is non-zero.

abyssdb exec -e "CREATE TABLE t (id INT); INSERT INTO t VALUES (1);"
abyssdb exec --shards 4 < migration.sql

serve

abyssdb serve [--pg-addr ADDR] [--pg-socket-dir DIR] [--pg-io MODE] [--awp-addr ADDR] [--tls] [-v] [topology flags]
FlagDefaultDescription
--pg-addr127.0.0.1:5432PostgreSQL wire protocol listener; empty disables it
--pg-socket-dir(none)Also listen on a Unix-domain socket, DIR/.s.PGSQL.<port>, like PostgreSQL. Connect with psql -h DIR
--pg-iothreadConnection I/O: thread gives every connection its own OS thread with blocking socket I/O, as PostgreSQL does with processes; poller uses Go’s network poller
--awp-addr127.0.0.1:4040AWP (Abyss Wire Protocol) listener; empty disables it
--tlsoffTLS 1.3 on both listeners, with a self-signed certificate and post-quantum key exchange
-voffLog NullRaft cluster events to stderr
--metrics-addr127.0.0.1:9187Prometheus /metrics listener; empty disables it

AWP is a line protocol: send one SQL script per line and receive the rendered results. \q ends the session. Any line-oriented tool works as a client:

nc 127.0.0.1 4040
openssl s_client -quiet -connect 127.0.0.1:4040   # with --tls

mcp

abyssdb mcp [--http ADDR] [topology flags]

--metrics-addr ADDR additionally serves Prometheus metrics (disabled by default, so stdio mode opens no ports). Without --http, speaks MCP over stdio. With --http 127.0.0.1:8808, serves streamable HTTP at /mcp. See AI integration.

bench

abyssdb bench [--duration D] [--workload W] [topology flags]
FlagDefaultDescription
--duration3sBenchmark duration
--workloadmixedinsert, select or mixed (INSERT, SELECT, UPDATE, DELETE)

See Operations.

cluster

abyssdb cluster [--nodes N] [--duration D]
FlagDefaultDescription
--nodes5Cluster size
--duration6sTest duration

Runs a continuous write workload against a NullRaft cluster while a chaos monkey kills leaders, revives nodes and partitions the network, then checks all replicas for linearizability. See Operations.

dtx

abyssdb dtx [--txns N] [--crash P] [-v] [topology flags]
FlagDefaultDescription
--txns12Number of distributed transactions
--crash0.25Probability that the coordinator fails between PREPARE and COMMIT
-voffPrint protocol details for every transaction

Halfway through the run, the chaos monkey also takes a quorum of one shard offline, forcing a NO vote and a clean abort.

Build targets

TargetProduces
make build./abyssdb
make testGo and Rust test suites
make rustRebuilds the Rust engine and re-embeds it
make wasidist/abyssdb.wasm (WASI). See WebAssembly
make webThe browser playground in web/