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 formatFour moving parts, deliberately.
Samples are taken on a wall-clock interval, not on demand. Buckets line up across hosts, so aggregation never has to interpolate.
The agent holds a bounded in-memory window and flushes it as one request. A dropped connection costs one window, never the series.
One POST to one path. Anything that can reach the endpoint through a proxy or an egress gateway can ship metrics.
No local spool, no WAL, no upgrade migrations. Replacing an agent is copying a binary over the old one.
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}
]
}
| Field | Meaning |
|---|---|
host | Stable identifier for the reporting machine. |
window | Sampling interval in seconds. |
ts | Unix time at the close of the window. |
k | Dotted series key. |
v | Numeric 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.
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
Worth knowing before you start.
Raw windows are kept for 14 days, five-minute rollups for 13 months. Rollups are computed on write, not on query.
2,000 distinct series per host. Keys are not free-form labels; there is no tag explosion to manage because there are no tags.
No spans, no per-request sampling, no log shipping. If you need request-level causality this is the wrong tool.