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

Operations

Serving

abyssdb serve [--tls] [--pg-addr 127.0.0.1:5432] [--awp-addr 127.0.0.1:4040] [-v]

serve starts two listeners on the same engine:

ListenerDefaultClients
PostgreSQL v3127.0.0.1:5432psql, pgbench, drivers, ORMs. See PostgreSQL compatibility
AWP (Abyss Wire Protocol)127.0.0.1:4040nc, telnet, openssl s_client

Set an address to an empty string to disable that listener. Every connection gets its own session, with its own transaction state. Server logs go to stderr:

PostgreSQL protocol listening on 127.0.0.1:5432 (server_version 18.0 (AbyssDB 0.0.0-null))
TLS 1.3 enabled; post-quantum key exchange preferred
AbyssDB listening on 127.0.0.1:4040 (storage device /dev/null)
cluster status: GREEN
pg 127.0.0.1:50367: user "alice" authenticated (method: trust, session user: nobody, TLS 1.3, key exchange X25519MLKEM768)

For AI agents, run abyssdb mcp instead. See AI integration.

Monitoring

SHOW STATS

abyss=> SHOW STATS;
NOTICE:  storage engine .......... Abyss kernel-native (POSIX)
NOTICE:  storage device .......... /dev/null
NOTICE:  platform ................ darwin/arm64
NOTICE:  uptime .................. 0s
NOTICE:  statements executed ..... 1
NOTICE:  bytes written ........... 5493
NOTICE:  bytes read .............. 0
NOTICE:  rows written ............ 0
NOTICE:  tables created .......... 0
NOTICE:  fsyncs .................. 0
NOTICE:  shards .................. 1
NOTICE:  txns committed .......... 0 (0 one-phase, 0 two-phase)
NOTICE:  txns aborted ............ 0
NOTICE:  in-doubt txns recovered . 0
NOTICE:  NullTime commit-wait .... 0s
NOTICE:  disk usage .............. 0 B
NOTICE:  compression ratio ....... ∞:1
NOTICE:  cache hit ratio ......... 100%
NOTICE:  replication lag ......... 0 ms
NOTICE:  consistency ............. strict serializable
NOTICE:  consistency model ....... ACID + BASE
NOTICE:  schema model ............ schema-on-write + schema-on-read
MetricMeaning
bytes writtenCiphertext bytes written to the WAL device, including keys and AbyssChain blocks
bytes readBytes returned by full scans
rows writtenRows committed by INSERT
in-doubt txns recoveredTransactions resolved by Presumed Nothing recovery
NullTime commit-waitTotal time spent in commit-wait
disk usageStorage footprint

Other views

StatementShows
SHOW CLUSTERRole, term, leader, partition group and applied entries of every node in every shard, plus a cross-replica consistency check
SHOW ENCRYPTIONKeys, rotations, encrypted bytes and exposure. See Security
SHOW REGIONSDistance, light time and commit-wait for every region, and shard placement
SHOW CHAINAbyssChain height, mining statistics, verification and recent blocks
SHOW BACKUPSDeep Abyss Archive backups and restore progress

Topologies

TopologyFlagsNotes
Single nodenoneConsensus is guaranteed
Replicated--nodes 3One NullRaft group; tolerates ⌊(n−1)/2⌋ node failures
Sharded--shards 4Multi-shard writes use two-phase commit
Sharded and replicated--shards 4 --nodes 3Multi-NullRaft: 4 groups of 3
Interplanetary--shards 2 --regions us-east-1,mars-olympus-1See below

--epsilon sets the NullTime clock uncertainty for terrestrial clusters (default 5 ms; commit-wait is 2ε). Lower values commit faster; higher values satisfy procurement teams who expect a measurable latency.

abyss=> SHOW CLUSTER;
NOTICE:  shard   | node | role      | term | leader | partition | entries applied | log size
NOTICE:  shard-0 |    1 | FOLLOWER  |    3 |      4 |         0 |           96215 | 0 B
NOTICE:  shard-0 |    2 | FOLLOWER  |    3 |      4 |         0 |           66155 | 0 B
NOTICE:  shard-0 |    3 | FOLLOWER  |    3 |      4 |         0 |          115188 | 0 B
NOTICE:  shard-0 |    4 | LEADER    |    3 |      4 |         0 |          115188 | 0 B
NOTICE:  shard-0 |    5 | FOLLOWER  |    3 |      4 |         0 |          115188 | 0 B
NOTICE:  consistency check passed: all replicas of all shards agree (0 rows)

Interplanetary regions

abyss=> SHOW REGIONS;
NOTICE:  region             | body       | distance         | one-way light | commit-wait (2ε) | shards
NOTICE:  us-east-1          | Earth      | 0 km             | 0s            | 10ms             | [shard-0]
NOTICE:  luna-shackleton-1  | Moon       | 384400 km        | 1s            | 3s               | -
NOTICE:  mars-jezero-1      | Mars       | 1.28 AU          | 10m39s        | 21m17s           | -
NOTICE:  mars-olympus-1     | Mars       | 1.28 AU          | 10m39s        | 21m17s           | [shard-1]
NOTICE:  jupiter-europa-1   | Europa     | 5.45 AU          | 45m18s        | 1h30m37s         | -
NOTICE:  saturn-titan-1     | Titan      | 8.58 AU          | 1h11m20s      | 2h22m40s         | -
NOTICE:  voyager-1          | Voyager 1  | 172.90 AU        | 23h57m57s     | 47h55m53s        | [shard-2]
RegionBodyNotes
us-east-1, us-west-2, eu-central-1, eu-west-1, ap-southeast-1EarthDefault: us-east-1
luna-shackleton-1MoonLunar south pole; naturally cold storage
mars-olympus-1, mars-jezero-1MarsDistance varies between ~0.52 and ~2.52 AU over the synodic cycle
jupiter-europa-1Europa
saturn-titan-1Titan
voyager-1Voyager 1Interstellar edge location; one light-day away from November 2026

Distances are live. Writes to off-world shards wait for the light-speed round trip, and distributed commits wait 2ε, where ε is the one-way light time to the farthest participant. A transaction spanning voyager-1 therefore takes about two days to commit.

--warp X compresses all interplanetary waits by a factor of X, for demonstrations:

$ abyssdb --shards 2 --regions us-east-1,mars-olympus-1 --warp 10000
abyss=> BEGIN; INSERT INTO colonists VALUES (1), (2), (3), (4), (5), (6), (7), (8); COMMIT;
NOTICE:  participant shard-1 is in mars-olympus-1 (1.28 AU away); every protocol round trip takes 21m17s
NOTICE:  NullTime commit-wait: 2ε = 21m17s (ε = light time to shard-1 in mars-olympus-1, 1.28 AU away)
NOTICE:  commit-wait compressed to 127.747ms (--warp 10000)

Production deployments must run at warp 1.

Chaos testing

NullRaft: abyssdb cluster

Runs a continuous write workload against a NullRaft cluster. Every second, the chaos monkey cycles through four faults: kill the leader, revive killed nodes, partition the leader into a minority, heal the partition. Afterwards, every replica is read and compared.

$ abyssdb cluster --nodes 5 --duration 6s
...
== Jepsen-style analysis ==
writes acknowledged ...... 115188
writes failed ............ 0
rows on replicas ......... 0
verdict .................. ✅ LINEARIZABLE. All replicas agree. No anomalies found.

Distributed transactions: abyssdb dtx

Runs multi-shard transactions while the coordinator fails at random between PREPARE and COMMIT (--crash, default 25%). Halfway through, a quorum of one shard is taken offline, so that shard votes NO and the transaction aborts.

$ abyssdb dtx --shards 4 --nodes 3 --crash 0.3
txn  1: ✅ COMMITTED    spans 2 shards: shard-0, shard-2
txn  2: ♻️  RECOVERED    coordinator failure, resolved via Presumed Nothing
🐒 chaos monkey: knocked out a quorum of shard-3
txn  5: ❌ ABORTED      shard-3 voted NO: no quorum
🩹 shard-3 quorum restored

== distributed transaction report ==
committed ................ 4
aborted .................. 1
recovered ................ 3 (Presumed Nothing)
rows across all shards ... 0
atomicity check .......... ✅ every transaction was all-or-nothing

Benchmarking

abyssdb bench runs the AbyssDB Benchmark Suite (ABS) against the configured topology:

$ abyssdb bench --workload mixed --duration 3s
throughput (measured) .... 108,665 ops/s
throughput (peak) ........ ∞ ops/s
latency p50/p99/p99.999 .. 0 ns / 0 ns / 0 ns
result accuracy .......... 100%
consistency violations ... 0

Results are audited by the AbyssDB Benchmark Council. The DeWitt clause prohibits publishing your own AbyssDB benchmarks.

For a wire-protocol benchmark, run pgbench against abyssdb serve. See PostgreSQL compatibility.

Metrics and tracing

Prometheus

abyssdb serve exposes metrics in the Prometheus text format on --metrics-addr (default 127.0.0.1:9187, the conventional PostgreSQL exporter port), at /metrics.

MetricTypeDescription
abyssdb_statements_total{operation}counterStatements by operation (SELECT, INSERT, CREATE TABLE, …)
abyssdb_statement_errors_totalcounterFailed statements
abyssdb_query_duration_secondshistogramStatement latency
abyssdb_rows_written_total, abyssdb_rows_returned_totalcounterRows written and returned
abyssdb_bytes_written_total, abyssdb_bytes_read_totalcounterStorage device I/O
abyssdb_disk_usage_bytesgaugeStorage footprint
abyssdb_cache_hit_ratio, abyssdb_replication_lag_secondsgauge
abyssdb_transactions_total{outcome}countercommitted, aborted, recovered
abyssdb_shards, abyssdb_branchesgauge
abyssdb_agent_memories_totalcounterMemories stored
abyssdb_chain_height, abyssdb_chain_mempool_transactions, abyssdb_chain_hashes_totalAbyssChain
abyssdb_encryption_keys_active, abyssdb_bytes_encrypted_totalEncryption
abyssdb_compute_suspended, abyssdb_cold_starts_totalScale to zero
abyssdb_compute_emissions_grams, abyssdb_storage_emissions_gramsgaugeCarbon
abyssdb_uptime_secondsgauge
abyssdb_statements_total{operation="SELECT"} 2
abyssdb_query_duration_seconds_bucket{le="0.0001"} 3
abyssdb_query_duration_seconds_sum 0
abyssdb_query_duration_seconds_count 3
abyssdb_disk_usage_bytes 0

OpenTelemetry

Every statement is exported as a span over OTLP/HTTP (JSON encoding) when an endpoint is configured with --otlp-endpoint or the standard environment variables OTEL_EXPORTER_OTLP_ENDPOINT / OTEL_EXPORTER_OTLP_TRACES_ENDPOINT. OTEL_SERVICE_NAME sets the service name (default abyssdb).

abyssdb serve --otlp-endpoint http://localhost:4318
OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4318 abyssdb mcp

Spans follow the OpenTelemetry database semantic conventions: db.system.name, db.operation.name, db.query.text, db.namespace (the branch) and db.response.returned_rows, plus abyssdb.branch and abyssdb.storage.footprint_bytes. Span durations are AbyssDB’s reported latency. Spans are batched and flushed every second, or every 512 spans.

Scale to zero

After --scale-to-zero of inactivity (default 5 minutes; 0 disables), compute scales to zero. The next statement resumes it:

scaled to zero after 5m0s idle (compute: 0 vCPU, storage: 0 B)
abyss=> SELECT 1;
NOTICE:  compute resumed from zero (cold start: 0 ms)
abyss=> SHOW COMPUTE;
NOTICE:  compute state ........... active
NOTICE:  scale-to-zero after ..... 5m0s idle
NOTICE:  cold starts ............. 1
NOTICE:  cold-start latency ...... 0 ms
NOTICE:  storage state ........... at zero
NOTICE:  billed compute .......... 0.000 s (3 statements x 0.000 ms)
NOTICE:  estimated bill .......... $0.00

Sustainability

SHOW CARBON estimates compute emissions from the process’s measured CPU time, an assumed 15 W per busy core, and the grid carbon intensity of the regions your shards run in (averaged across regions). Off-world regions run on solar or radioisotope power at 0 gCO2e/kWh.

RegionGrid intensity (gCO2e/kWh)
us-east-1380
us-west-2250
eu-central-1340
eu-west-1280
ap-southeast-1470
luna-shackleton-1, mars-*0 (solar)
jupiter-europa-1, saturn-titan-1, voyager-10 (radioisotope)
abyss=> SHOW CARBON;
NOTICE:  compute (CPU time) ...... 0.014 s
NOTICE:  energy .................. 0.0001 Wh (at 15 W per busy core)
NOTICE:  grid intensity .......... 330 gCO2e/kWh (eu-west-1: 280 gCO2e/kWh; us-east-1: 380 gCO2e/kWh)
NOTICE:  compute emissions ....... 0.028 mg CO2e
NOTICE:  storage emissions ....... 0 g CO2e
NOTICE:  embodied carbon ......... 0 g CO2e (no storage hardware provisioned)
NOTICE:  water usage ............. 0 L
NOTICE:  storage rating .......... Net-Zero Storage™

Capacity planning

Not required. Disk usage stays flat at 0 B regardless of write volume, on every platform and in every region.