Torwarden

Monitoring that never leaves your network.

Servers, endpoints and certificates, watched from inside your own perimeter. Two static binaries, two SQLite files, ten minutes.

A real Torwarden watching a synthetic fleet — read-only, and the sign-in page tells you how to get in.

Your metrics never leave your network. No cloud, no telemetry.

The Torwarden overview page: fleet status counts, CPU, memory and storage gauges,
              and tables of the busiest hosts and fullest filesystems.
The overview — what the fleet is doing, and what is about to need attention.

Up and running in two commands

Both scripts verify what they download against a published checksum, and both re-run to upgrade in place without touching your config or your data.

Step one

The server

Runs as its own unprivileged user. Every file it writes is readable by nobody else.

curl -fsSLO https://releases.torwarden.com/install-server.sh
sudo sh install-server.sh

It asks for the listen address, or take it up front with --listen :8080. First start runs the schema migrations, so give it a few seconds before the dashboard answers. The setup URL that creates your first administrator is printed in the log:

journalctl -u torwarden-server | grep -A2 'no accounts yet'

Step two

The agent

Register the host in the dashboard, copy the key it gives you, then run this on the machine you want to watch.

curl -fsSLO https://releases.torwarden.com/install-agent.sh
sudo sh install-agent.sh \
  --url      https://torwarden.example.com \
  --key      twd_xxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  --hostname web-01

Windows uses the PowerShell installer, with the same two arguments:

Invoke-WebRequest -Uri https://releases.torwarden.com/install-agent.ps1 -OutFile install-agent.ps1
powershell -ExecutionPolicy Bypass -File .\install-agent.ps1 `
  -CollectorUrl "https://torwarden.example.com" `
  -ApiKey       "twd_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Installing behind a proxy or without direct internet? Both installers take TORWARDEN_RELEASE_BASE, so they fetch the binaries from your own internal mirror rather than from us. The server itself needs to reach api.polar.sh to validate its licence — twice a day, sending the licence key and nothing else.

Three things to watch, one place to watch them

Most estates are monitored by two or three tools that do not know about each other. Torwarden covers the parts that page you at three in the morning.

Hosts

Machines, in detail

CPU per core, memory and swap, load, every filesystem and block device, every interface, processes and uptime. A Go agent on Linux or Windows, reporting outbound only.

Endpoints

Things you do not run

HTTP and TCP checks against any URL, from the server, with status, latency and keyword matching — including catching a maintenance page served with a 200.

Certificates

Expiry, before it is an outage

Full chain analysis, weak algorithms, self-signed detection and domain expiry. Warnings scale with the certificate's own lifetime rather than a fixed day count.

Alerting built to be trusted

An alert nobody believes is worse than no alert. Every mechanism here exists because of a specific way monitoring tools cry wolf.

N-of-M, not one bad sample

A rule fires when N of the last M samples agree. One spike during a backup does not page anyone.

Separate recovery thresholds

Fires at 90, clears at 85. A metric sitting on the line produces one alert, not forty.

An explicit no-data policy

Per rule: treat a missing reading as a problem, as recovered, or ignore it. A reading that legitimately stops does not freeze an alert nobody can clear.

Maintenance windows

Scheduled in advance, before the work starts. A host-level window covers that host's filesystems and interfaces automatically.

Backtesting

Replay a rule against 30 days of stored history before you enable it, and see exactly how often it would have fired and on what.

Why did this fire?

Every alert can explain itself: which samples, which threshold, which window — and why an alert you expected did not fire.

The alerts page listing firing alerts with state, rule, host, current value and
              threshold, and bulk acknowledge controls.
Acknowledge, snooze or close in bulk with one shared reason.

Availability you can put in a contract

Targets are derived from alert history, not from a second measurement system — so the number on the page and the incident it came from cannot disagree. Rolling or calendar windows, error budget and burn rate, with planned maintenance excluded by default.

The availability page showing SLA targets with availability percentage, downtime,
              error budget remaining and a day-by-day uptime matrix.

Dashboards you lay out yourself

A twelve-column grid with drag-and-drop panels, a panel library, and JSON export so a dashboard can live in version control alongside everything else you deploy.

A Torwarden dashboard with time-series panels laid out on a grid.

Pricing

You pay for the size of the estate, not for the features. Every capability on this page is in every tier, including the free one. What you are buying is seats and someone to call.

Free

Homelab, small office

€0

No account, no card, no key.

Hosts
10
Support
Community

Starter

Outgrew the free tier

€29/mo €290/yr

or €290 a year

€24.17 a month

Hosts
25
Support
Email, best effort

Business

Growing estate

€299/mo €2,990/yr

or €2,990 a year

€249.17 a month

Hosts
500
Support
Next business day

Unlimited

No host limit

€799/mo €7,990/yr

or €7,990 a year

€665.83 a month

Hosts
Unlimited
Support
Next business day

What counts as a host. A seat is one machine running an agent. Endpoints and certificates are watched from the server and cost nothing, however many you add — so a 100-host licence can also be monitoring four hundred URLs and every certificate you own.

The limit applies when a host is enrolled, and only then. Going over it never stops monitoring a machine that is already reporting, and never silences an alert — it refuses the next enrolment. A monitoring tool that switches itself off is a monitoring tool that lied to you.

If a licence is cancelled or refunded the instance returns to the free limit of ten hosts at its next check, which is within twelve hours. Everything already enrolled keeps reporting; only new enrolments are refused. If it cannot reach us at all, the last good answer stands for seven days before that happens, so an outage on our side is never an outage on yours.

Billing and refunds. Plans are billed in advance and renew until you cancel. Cancel any time from the customer portal and the licence runs to the end of the period you have paid for. Want your money back? Ask within 14 days of a payment and you get it, no questions. Full terms.

Deployment is deliberately boring

Two binaries

A server and an agent, both static Go binaries with no runtime, no JVM, no package tree. The dashboard is embedded in the server.

SQLite, not a cluster

Two database files you can copy, back up and restore with cp. No external time-series database to run, tune or lose.

Measured, not estimated

Benchmarked at 5,000 hosts and 270,000 series on a four-core machine — the host list still rendered in 0.07 s and chart queries in single-digit milliseconds. What to size, and torwarden-server bench reproduces it on your hardware.

What leaves your network

Your metrics do not. Not a sample, not a hostname, not an aggregate — there is no telemetry and no usage reporting, and the dashboard reads from a database on your own disk. That is the part that matters for a regulated estate, and it is unconditional.

Torwarden makes exactly three kinds of outbound request, all of them yours to see: the notification channels you configure, domain expiry lookups if you switch them on, and a licence check to Polar roughly twice a day. The licence check sends your licence key and nothing else — no machine identifier, no host count, no inventory. If it cannot get through, the last answer stands for seven days and every host you already monitor keeps reporting regardless.