· observability
ingest · 4.2k/s
audit funnel · semantic search · beacon HMAC

One funnel for everything

Every state-changing op across the ecosystem lands on orbit:audit. Obs server consumes, indexes, archives to MinIO. Beacons are HMAC-signed; mismatched beacons drop with audit.

Cold export
Events / sec
4,217
7d avg 3,800
Today
214M
vs 198M y-day
Crashes (24h)
38
3 new clusters
Beacons rejected
2
HMAC mismatch

Ingest · last 24h

events / min

Funnel health

healthy
99.6% indexed
Backlog
218 events (≤ 1s)
Hot retention
7 days · Redis
Cold archive
MinIO orbit-audit/ · 4.2 TB
Index lag
0.8 ms p50
Cluster
n3bul41 + n3bul42
Top event classes (1h)

edge_request

1.2M
sampled at 1% · 12,000 events

runner_step_*

4,124
94% complete · 6% failed

auth_login_*

1,082
98% ok · 2% fail

keyvault_unwrap

28,914
bulk · 482/min
semantic crash search

Semantic search

Type a symptom; the engine finds matching crash clusters via embeddings across crashes + runner_step_failed + audit_error.

exit 137OOMpublish.luawalzpunktstep 4/6~ Mon 8m
3 matches · 96% confidence
nopolarities/publish.lua · step sign · exit 137
14 occurrences · since 2026-05-22 · last 17:20
prod
docker container killed by OOM (memory.limit_in_bytes=2147483648) during step `sign` ~ minute 8
walzpunkt/deploy · step build-image · exit 137
2 occurrences · since 2026-05-26 · last 12:02
dev
buildx oom during layer export — same fingerprint as nopolarities cluster
brain-melt/publish · step bundle · exit 137
1 occurrence · 2026-05-28
dev
node heap OOM in webpack ssg pass — investigate worker pool memory cap
crash clusters · symptom-grouped

Crashes

Stack-trace + message fingerprinted; new fingerprints surface here automatically.

CrashFirstLastCountSurface
exit 137 · docker buildx · sign step
runtime: cgroup memory limit exceeded · oom_killer invoked
2026-05-2217:2014runner
e.au.in_pw · password mismatch · candidate@
user-input-only · expected after brute-force pattern
2026-05-2617:528auth
obs-3 · sse stream eof · client peer reset
backend reset connection after 60s idle — fix HSTS idle timeout
2026-05-2514:113edge
tsig_key_mismatch · zone notify rejected
secondary notify from 87.245.x.x · TSIG key wrong
2026-05-2817:091dns
beacons · HMAC-signed

Beacon stream

Live SSE tail. Beacons are tenant-tagged, signed with the producer's Tier-B HMAC key; verification fails route the event to the rejected bin.

Pause
time
source
payload
hmac
17:52:18.412
orbit-edge
edge_request walzpunkt.ch:/api/checkout 200 142ms (sampled)
verified
17:52:17.881
orbit-git
git_push walzpunkt main 8a4c…f2 · 1 ref · 12 objects
verified
17:52:16.221
orbit-runner
runner_step_start walzpunkt/deploy.lua step=build-image
verified
17:52:14.001
orbit-auth
token_minted scope=runner.write user=astra.kepler
verified
17:52:11.412
orbit-auth
auth_login_failed e.au.in_pw operator.candidate@orbit
verified
17:52:09.117
orbit-dns
zone_resigned orbit.zuerich 47 rrsigs in 312ms
verified
17:52:08.401
unknown
beacon dropped · hmac mismatch · from 87.245.x.x
REJECT
17:52:06.014
orbit-keyvault
tier_b_unwrap bulk count=482 (1m window)
verified
17:52:04.001
orbit-mail
outbound_signed k=orbit-2026q1 · 250 OK
verified
cold archive · MinIO orbit-audit/

Archive

After 7 days hot retention in Redis, events flush to MinIO as gzipped Parquet shards keyed by date · tenant · source.

DateTenantSourcesEventsSizeChecksum
2026-05-27all12 sources214,008,1423.2 GBblake3 · 8c2a…
2026-05-26all12 sources198,142,4013.0 GBblake3 · 4f12…
2026-05-25all12 sources189,884,2122.9 GBblake3 · 71fd…
2026-05-24all11 sources142,012,8842.1 GBblake3 · 89a1…
2026-05-23all11 sources128,442,0011.9 GBblake3 · 22c0…
obs_audit · dashboard mutations + beacon rejects

Audit

TimeEventSubjectActor
17:52beacon_rejectedhmac mismatch · from 87.245.x.xsystem
14:11archive_completed2026-05-27 · 214M eventsscheduler
12:02crash_cluster_newbrain-melt/publish · exit 137system
08:14retention_trimmedorbit:audit · 7d windowscheduler
RUM · first-party · cookieless

Page views

First-party, cookieless pageview analytics from the obs beacon. No third-party trackers, no fingerprinting — aggregate counts only, IP truncated at ingest.

Last 24h
Views · 24h
182k
+6.4% vs 7d
Unique visitors
41.2k
+3.1%
Avg time on page
1m 12s
median 42s
Bounce
38%
−2pts
PagePropertyViewsUniquesAvg timeBounce
/orbit.zuerich52,10918,4020m 38s41%
/launch-2026orbit.zuerich31,88412,9102m 04s22%
/shopwalzpunkt.ch14,2215,0031m 31s34%
/offertewalzpunkt.ch8,4402,9813m 12s18%
/codex/edenanno-20706,9023,1142m 47s29%
Core Web Vitals · field data · p75

Web vitals

Real-user Core Web Vitals at the 75th percentile, from the beacon's web-vitals hook. Thresholds per Google's good / needs-improvement / poor bands.

LCP

good
1.9s
largest contentful paint · p75 · < 2.5s good

INP

needs work
214ms
interaction to next paint · p75 · 200–500ms

CLS

good
0.04
cumulative layout shift · p75 · < 0.1 good
PageLCP p75INP p75CLS p75Samples
orbit.zuerich/1.6s142ms0.0218,402
walzpunkt.ch/shop2.4s288ms0.075,003
anno-2070/codex3.1s196ms0.123,114
server-side · cap-token scoped · per-method

RPC latency

Per-method latency + error rate across the ecosystem's JSON-RPC / REST surfaces, sampled from the audit funnel envelopes. Slowest + erroring methods float to the top.

MethodServiceCalls 24hp50p95p99Err %
repo.pushorbit-git4,201142ms880ms2.1s0.04%
token.mintorbit-auth14,2018ms22ms61ms0.00%
zone.resignorbit-dns312298ms512ms1.1s0.00%
run.dispatchorbit-runner84244ms180ms420ms1.2%
keyvault.unwraporbit-keyvault28,1103ms9ms28ms0.00%
grouped by fingerprint · client + server

Errors

Uncaught exceptions + rejected promises grouped by stack fingerprint, deduped across releases. Distinct from Crashes (native/process-level).

Unresolved
ErrorTypeCount 24hLast seenReleaseStatus
TypeError: cannot read 'id' of nullclient4122m agostation@1.9.2unresolved
AbortError: signal abortedclient18814m agostation@1.9.2ignored
FetchError: 502 from upstreamserver611h agoorbit-git@0.8resolved
RangeError: invalid time valueclient233h agovapply@0.3unresolved
from orbit-auth events · aggregate

Auth

Sign-in + sign-up funnels, WebAuthn step-up rates, and failure reasons — derived from auth_* events on the funnel. No PII; counts only.

Logins · 24h
3,902
+4%
Sign-ups
128
+12 vs 7d
WebAuthn step-up
71%
of admin actions
Failed logins
214
31 rate-limited
Failure reasonCount 24hTop tenantTrend
e.au.in_pw · bad password142Orbit AGflat
e.au.rl_lo · rate-limited31Orbit AG↑ spike 17:48
e.au.we_fl · webauthn timeout28Heinrich Grafflat
e.au.tk_dl · token denylisted13Brain-Melt↓
consent · DNT · retention · GDPR/FADP

Privacy

The beacon honours Do-Not-Track and consent state; IPs are truncated at ingest and raw events expire on a fixed window. Swiss FADP + GDPR posture at a glance.

Consent rate
82%
analytics opt-in
DNT honoured
9.1%
sessions not tracked
Raw retention
7d
then aggregate-only
Data requests
2
1 export · 1 erasure

Controls in effect

enforced
IP truncation
last octet zeroed at ingest
Cookies
none · cookieless beacon
Fingerprinting
disabled
Cross-site
first-party only
Data residency
CH · MinIO n3bul41/42
goals · funnels · per-property

Conversions

Operator-defined goals + multi-step funnels built on beacon events. Drop-off surfaces per step so a stalling checkout or sign-up is obvious.

Funnel · Walzpunkt offer request

7d
Visit /shop
5,003 · 100%
View product
2,704 · 54%
Open offer form
1,051 · 21%
Submit offer
442 · 9%
GoalPropertyCompletions 24hRateTrend
Offer submittedwalzpunkt.ch639.2%↑ +0.8pts
Launch signuporbit.zuerich1284.1%↑ +1.2pts
NFC card activatedorbit.zuerich1461%flat