› STOIC · DATA INGESTION · LIVE MONITOR 00 / 03
stoic data platform

Ingestion
{{ verdict.word }}

{{ status?.day ?? '…' }} · updated {{ clock(status?.updated_at) }} · {{ taskCount }} tasks · {{ groupCount }} feeds · refresh 2s · dev → {{ apiBase.replace('https://', '') }}
api error: {{ fetchError }}

{{ cell.label }}
{{ cell.value }}{{ cell.unit }}
{{ cell.sub }}
› HOST · SYSTEM GAUGES 01 / 03

The box the controller runs on — CPU, memory, the local data disk, and this daemon's own footprint. Sparklines cover the selected window (line = avg, band = per-bucket max, so bursts survive); the ring is in-memory and restarts empty with the daemon.

cpu load
{{ pct(sys.cpu?.percent) }}%
{{ sys.cpu?.vcpus ?? '–' }} vCPU · load {{ sys.cpu?.load_avg_1m ?? '–' }} / {{ sys.cpu?.load_avg_5m ?? '–' }} / {{ sys.cpu?.load_avg_15m ?? '–' }}
memory
{{ pct(sys.memory?.percent) }}%
{{ bytes(sys.memory?.used) }} / {{ bytes(sys.memory?.total) }} used
disk · {{ sys.disk?.path ?? '–' }}
{{ pct(sys.disk?.percent) }}%
{{ bytes(sys.disk?.used) }} / {{ bytes(sys.disk?.total) }} used
network · ↓ download
{{ rate(sys.network?.recv_bps) }}
↑ {{ rate(sys.network?.sent_bps) }} · Σ ↓ {{ bytes(sys.network?.recv_total) }} since boot
daemon · ingests running
{{ sys.ingests?.running ?? 0 }} / {{ sys.ingests?.tasks ?? '–' }} tasks
rss {{ bytes(sys.process?.rss) }} · {{ sys.process?.num_threads ?? '–' }} thr · {{ sys.process?.num_fds ?? '–' }} fd · up {{ dur((sys.process?.uptime_s ?? 0) * 1000) }}
› TASKS · LIVE STATE 02 / 03

Every feed's tasks at a glance — the coarse state, what each is doing right now, the days it still owes, and its pipeline stages. One tile per task, colour-coded by feed.

{{ t.id }} {{ statusLabel(t.status) }}
{{ t.phase }}
{{ (t.datasets || []).join(' · ') }}
detect
checked {{ ago(t.detect?.checked_at) }}
ingest
{{ t.ingest?.state ?? 'idle' }} · day {{ t.ingest.cursor.index }}/{{ t.ingest.cursor.total }} · {{ t.ingest.cursor.current }}
{{ stageIcon(s.name) }}{{ s.name }}
{{ t.detect?.error || t.ingest?.error }}
› TIMELINE · WHERE THE TIME GOES 03 / 03

Every execution of the day on a real time axis — one lane per task, its detect probes, ingests and stages. Each task keeps its colour; the glyph + label tell which stage. Running work pulses live at the right edge.

span {{ spanLabel }}
{{ g.name }}
lane
{{ lane.label }}
{{ tk.label }}
{{ cursorTime }}
no executions recorded for {{ dateStr }} yet
{{ b.icon }} {{ b.label }}
loading…
{{ l }}