A glass circle, polygon, and tower connected by a cobalt event path

For fleet, logistics + real-time location systems

Know where every
moving asset is.
Right now.

Ingest live location events and answer radius, polygon, and latest-position queries through one replicated system—without stitching together a database and spatial cache.

Bring your workload, event rate, and topology. We will evaluate the fit before commercial terms.

Same retention. Same indexes. Same durability.

Faster when the
work is equal.

ArcherDB Lite retained and geospatially indexed every event while maintaining latest state—delivering 4.2× Valkey and 26.9× PostgreSQL + PostGIS throughput. Five measured trials, exact result checks, and the full method are published below.

ArcherDB Lite vs Valkey 4.2×
Native client · same node 902,000events/s

The ratio is median durable full-history ingestion at 80,000-event batches through the Python SDK, where ArcherDB also reached 26.9× PostGIS. The native-client figure is the server’s own ceiling on the same node, measured by the repository’s bulk-load harness at maximum batch size — not part of the three-way comparison. Not a blanket performance guarantee.

Full-history events ingested per second higher is better

ArcherDB Lite

200,800

196,073–204,015 range1.5% CV

PostgreSQL + PostGIS

7,478

7,447–7,571 range0.6% CV

Valkey

47,814

47,275–48,809 range1.2% CV

Every system retained 100,000 historical events, indexed them spatially, and maintained 10,000 latest positions.

Coverage: ArcherDB Lite · one node · LAB45. Standard through Ultra and LAB96 have not been benchmarked in this comparison.

Review methodology + evidence

Three ways to ask where.

01 / Radius

Find events within a distance of a point.

02 / Polygon

Search events inside an operational boundary.

03 / Latest

Read the most recent event for each entity.

Three spatial query signal diagrams: radius, polygon, and latest event

Inside the motion engine

Event in.
Position out.

One ordered path through spatial indexing, append-heavy storage, and replicated state.

  1. 01Index / S2Location events are mapped into hierarchical cells for fast spatial queries.
  2. 02Store / LSMLog-structured storage is tuned for sustained ingestion and reads.
  3. 03Replicate / VSRViewstamped Replication keeps ordered state across a trusted network.
Exploded glass machine showing S2 indexing, LSM storage, and three replicated nodes
Event path / indexed, stored, replicated

One engine. Five profiles.

Start light.
Scale deliberately.

Lite reduces fixed overhead for evaluation. Standard through Ultra share ArcherDB's high-performance runtime and increase the RAM index and durable-storage limits available to each node.

Profile Designed for RAM index Approx. latest entities Storage default Storage maximum Runtime
LitePublic download Demo + evaluation 128 MiB ~0.98 million 4 GiB 4 GiB 64 clients · 256 journal slots
StandardCommercial Baseline production 4 GiB ~31 million 64 GiB 256 GiB 256 clients · 1,024 journal slots
ProCommercial Growing production 16 GiB ~125 million 512 GiB 2 TiB 256 clients · 1,024 journal slots
EnterpriseCommercial Large production 32 GiB ~250 million 4 TiB 16 TiB 256 clients · 1,024 journal slots
UltraCommercial Highest packaged capacity 64 GiB ~501 million 16 TiB 64 TiB 256 clients · 1,024 journal slots

Entity estimates use the standard 96-byte RAM-index slot budget at the 70% target load factor. They are capacity-planning estimates, not benchmark guarantees. Storage and RAM-index values are per node.

Choose a production profile

ArcherDB Lite

Download.
Unpack. Run.

Start a local single-node ArcherDB instance from a prebuilt executable. No compiler, package manager, or Zig toolchain required.

macOS Universal

One executable for Apple Silicon and Intel Macs.

Download macOS Universal SHA-256 checksums
macOS quickstart
curl -fLO https://archerdb.io/downloads/archerdb-lite-macos-universal.tar.gz
tar -xzf archerdb-lite-macos-universal.tar.gz
cd archerdb-lite
./archerdb-lite format --cluster=0 --replica=0 --replica-count=1 data.archerdb
./archerdb-lite start --addresses=3000 data.archerdb

Five client SDKs

Connect in
your stack.

Choose a language to see its first ArcherDB connection, position write, and radius query. The examples target the Lite instance running at 127.0.0.1:3000.

C client

Own the request path.

Direct asynchronous access with explicit packet and memory control. Completion callback setup is abbreviated here.

Request C SDK access
C / connect + write
#include <string.h>
#include "arch_client.h"

arch_client_t client;
uint8_t cluster_id[16] = {0};
const char *address = "127.0.0.1:3000";

// on_completion receives the asynchronous result.
arch_client_init(&client, cluster_id, address, strlen(address),
                 0, on_completion);

geo_event_t event = {
  .id = 1,
  .entity_id = 1001,
  .lat_nano = 37774900000,
  .lon_nano = -122419400000,
  .group_id = 1,
};
arch_packet_t packet = {
  .operation = ARCH_OPERATION_INSERT_EVENTS,
  .data = &event,
  .data_size = sizeof(event),
};
arch_client_submit(&client, &packet);

ArcherDB Commercial Edition

Prove the fit
before you commit.

Bring your event volume, query mix, and deployment topology. Cyber Labs will scope a private technical evaluation and commercial agreement around the system you actually need.

Request a technical evaluation

No public signup. No generic pricing. A technical conversation first.

A pale technical wireframe of the ArcherDB mark