Every meaningful change to the hosted service, documented. Types are tagged: add for new features, fix for bug fixes, change for behaviour changes, perf for performance work.
Public status pages got a full redesign: per-node sparkline graphs (CPU + memory over 60 minutes), a live summary banner, and an incident strip when nodes go offline. A new backend endpoint streams history data for the graphs without blocking the 5-second refresh cycle. The landing page was also rebuilt with a live dashboard preview, richer feature set, and proper roadmap and changelog pages.
/api/public/status/<token>/history endpoint that returns downsampled data (max 30 points per node). The chart updates live — every 5-second poll appends a new point to the rolling buffer and redraws the SVG in place./api/public/status feed now includes uptime_seconds. Node cards display it as a human-readable string. Partial in-place updates to cards (badge, metric values, chart) prevent flicker on every 5-second refresh when the node list hasn't changed.GET /api/public/status/<token>/history endpoint(server_id, ts) to keep response times flat regardless of retention window./roadmap/changelogThree substantial additions to the hosted layer: opt-in SSE push for the overview dashboard, team roles (owner / admin / viewer), and per-workspace usage metering with public status share links. Ingest hardening with rate limiting and an audit log also shipped alongside a rollup system to keep long-range graphs fast.
/status/<token>. The token can be revoked from settings. Previously, status pages were only accessible to logged-in members.POST /api/v1/telemetry endpoint now enforces a per-agent rate limit. Agents that exceed the limit receive a 429 with a Retry-After header. Bursts (batch payloads covering a catchup window) are allowed within the rate budget.ts field format (UTC naive vs aware) than the raw telemetry query expected. Fixed by normalising all timestamps to UTC-aware datetimes at rollup write time and at query time.insert_many. This allows agents to recover from a network outage without flooding individual requests.User-Agent header, which caused some requests to be rejected by Cloudflare with a 1010. Fixed by adding a static User-Agent: peek-cloud/1 header to all Resend API calls.|e consistently and testing with a node named web-01.telemetry.ts, keyed to the global PEEK_RETENTION_DAYS config value. Previously retention was enforced by a periodic cleanup job that could fall behind under high ingest load.Initial hosted service launch. Core agent and dashboard built from the open-source Peek project with a multi-tenant auth layer on top.
tenant_id. Install tokens carry the tenant at generation time. A server registered with one tenant's token can never appear in another tenant's dashboard./adminPEEK_ADMIN_LOGINS env var.