Metrics collection for fleets that are too small to need a data platform.

A single static agent samples host and service counters on a fixed cadence, batches them, and posts them to one HTTP endpoint. No broker, no agent-side database, no sidecars to schedule.

Read the docs Ingest format

What it does

Four moving parts, deliberately.

Fixed cadence

Samples are taken on a wall-clock interval, not on demand. Buckets line up across hosts, so aggregation never has to interpolate.

Batched delivery

The agent holds a bounded in-memory window and flushes it as one request. A dropped connection costs one window, never the series.

Plain HTTP

One POST to one path. Anything that can reach the endpoint through a proxy or an egress gateway can ship metrics.

Stateless agents

No local spool, no WAL, no upgrade migrations. Replacing an agent is copying a binary over the old one.

Sending a batch

The whole client surface is one endpoint. This is the complete request.

POST /api/v1/data HTTP/1.1
Host: slatecadence.com
Content-Type: application/json
X-Agent-Key: <agent key>

{
  "host": "web-03",
  "window": 30,
  "ts": 1789102800,
  "series": [
    {"k": "cpu.busy",  "v": 0.41},
    {"k": "mem.used",  "v": 6291456},
    {"k": "disk.io.r", "v": 128},
    {"k": "svc.p95",   "v": 214}
  ]
}
FieldMeaning
hostStable identifier for the reporting machine.
windowSampling interval in seconds.
tsUnix time at the close of the window.
kDotted series key.
vNumeric value. Counters are sent as deltas.

Accepted batches return 204 with an empty body. Malformed series are dropped individually and reported in the response headers rather than failing the batch.

Running the agent

No package repository, no daemon manager of our own.

# install (builds are key-gated; use the key from your account)
curl -fsSL -H "X-Agent-Key: $SC_KEY" \
     https://slatecadence.com/dl/agent-linux-amd64 -o /usr/local/bin/sc-agent
chmod +x /usr/local/bin/sc-agent

# configure
cat > /etc/sc-agent.conf <<'EOF'
endpoint = https://slatecadence.com/api/v1/data
key      = sk_live_xxxxxxxxxxxxxxxx
window   = 30s
collect  = cpu, mem, disk, net, systemd
EOF

# run
systemctl enable --now sc-agent

Limits

Worth knowing before you start.

Retention

Raw windows are kept for 14 days, five-minute rollups for 13 months. Rollups are computed on write, not on query.

Cardinality

2,000 distinct series per host. Keys are not free-form labels; there is no tag explosion to manage because there are no tags.

Not a tracing system

No spans, no per-request sampling, no log shipping. If you need request-level causality this is the wrong tool.