Skip to content

What is Belvador

Error tracking, traces, logs, cron and uptime monitoring for your apps, with the data on your workspace's own Hetzner server, set up and maintained by Belvador.

Markdown
On this page

Belvador catches the errors your apps throw — a crash in the browser, a failed server request, an exception you report yourself — groups them into issues and tells your team. Next to errors it keeps OpenTelemetry traces and logs, watches your cron jobs, checks your URLs and tracks SLOs. The difference from other error trackers: this data is stored on a server in your own Hetzner Cloud account, and Belvador sets up and maintains that server for you.

How it fits together#

Text
your app ──(SDK + DSN)──▶ ingest.belvador.dev ──▶ your node, in your Hetzner project                                                        ▲your browser ──▶ Belvador app ──▶ edge.belvador.dev ────┘  signed read tickets
  1. Your app sends errors with a Belvador SDK. The project's DSN tells the SDK where to send them.

  2. The ingest edge at https://ingest.belvador.dev checks the DSN key and your limits, then forwards each error to your node. If the node is briefly unreachable, the edge keeps the data encrypted to your node's own key — Belvador cannot read it — and delivers it when the node is back.

  3. Your node is a small server in your Hetzner project. It scrubs sensitive fields a second time, groups errors into issues and stores them.

  4. The Belvador app shows issues, the Fleet overview and node health. Your browser reads error data straight from your node through edge.belvador.dev with signed tickets that expire within minutes. Belvador's own database only keeps account, project and configuration metadata.

What you do and what Belvador does#

YouBelvador
Create a Hetzner Cloud account, a dedicated project and an API tokenPicks, creates and hardens the server, sets the firewall and installs the node software
Pay Hetzner directly for the serverChecks node health, installs signed updates and runs daily encrypted backups once backup storage is set up
Create a project per app and install the SDKReceives, scrubs and groups errors, sends alerts
Decide who holds the backup decryption keyKeeps the key in the Belvador vault — or never sees it, if you keep a recovery kit yourself

You do not need SSH, Docker or a server login to get started. Setup and maintenance happen from the Belvador app.

What Belvador captures — and what it does not#

  • Errors from the Belvador SDKs, traces and logs from OpenTelemetry. The 0.x SDKs send error events and cron check-ins; their own tracing, session replay, logs and profiling are dropped inside your app before anything leaves it. Traces and logs come from the standard OpenTelemetry SDKs with a project ingest key and are stored on your node as well. See Traces and logs.

  • Automatic capture is what you wire up. In the browser, uncaught errors and unhandled promise rejections are captured as soon as the SDK starts. React error boundaries and root hooks, the TanStack Start router and middleware, and the Cloudflare Workers wrapper each capture their own part once added. See Choose an SDK.

  • Handled errors stay handled. An error your code catches and deals with is not sent unless you call captureException yourself.

  • Sensitive data is filtered twice — by the SDK and again on the node. Filtering works by field names and patterns, so it reduces risk but cannot recognise every secret. See Data protection.

What is available today#

Available nowNot available yet
SDKs for the browser, React 18/19, TanStack Start (Lovable apps) and Cloudflare Workers — version 0.6.1Performance dashboards and profiling
Node.js and Python through the official Sentry SDKsSession replay
Issues with search, filters, assignment, resolve and archiveGitHub, Linear and status-page integrations
Traces and logs from OpenTelemetry SDKs, linked to errorsYour own ingest hostname
Cron monitors and uptime checks
SLOs with error-budget alerts
Fleet overview of every project in a workspace
Managed node: setup, health, backups, updates, resize, rebuild, delete
Alerts to your own Telegram bot, Slack webhook, email sender or webhook
REST API with personal and service tokens, or OAuth sign-in from apps you approve (beta)MCP server

Belvador is in beta and free during the beta; you pay Hetzner for the server. Belvador does not bill per event.

Where to go next#

Spotted something wrong or missing? Tell us: hello@belvador.dev