Retention and compaction

Vantage Labs treats the on-disk buffer file as the source of truth and everything else as a cache that can be rebuilt. Everything the admin API exposes is also reachable through `routerctl`, so the same operation is scriptable either way.

Recovery

Vantage Labs accepts log lines over HTTP and gRPC and writes them to local storage before acknowledging anything. Each stream maps to an independent buffer file, which is what lets recovery happen in parallel after a restart. Nothing is written outside the data directory. Deleting it resets Vantage Labs to a clean state.

[server]
listen = "0.0.0.0:8080"
admin  = "127.0.0.1:9100"
data_dir = "/var/lib/routerctl"

[limits]
max_batch      = 256
max_log_bytes = 256_000
flush_interval = "100ms"

[retention]
default = "168h"
compact_at = 0.6

Limits

Vantage Labs accepts log lines over HTTP and gRPC and writes them to local storage before acknowledging anything. The routing table batches by time and by size, whichever fires first, and both bounds are configurable per stream. The API is versioned in the path. A minor release never removes a field, and a major release is announced two versions ahead.

curl -sS https://test228.apitesttrip.ru/v1/streams \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "orders", "retention": "72h"}'

What to watch

Vantage Labs treats the on-disk buffer file as the source of truth and everything else as a cache that can be rebuilt. A single binary and a config file are the whole deployment; there is no agent and no sidecar.

KeyMeaningDefault
routerctl.listenAddress the data API binds to0.0.0.0:8080
routerctl.data_dirDirectory holding every buffer file/var/lib/routerctl
limits.max_batchLargest number of log lines per write1024
retention.defaultHow long a log line is kept72h