Vigil roadmap. Shipped, next, not planned

A roadmap with no dates on it.

Forty-four releases documented. Nothing ahead of it is promised.

Dates are the easiest part of a roadmap to write and the hardest to keep, and Vigil is maintained by one person. So this page states three other things: what shipped and in which version, what the product already admits it does not do, and what it is not going to become.

Shipped

Forty-four releases, 1.0.0 to 1.30.0.

Grouped by theme, each with the version that delivered it. Every line below is an entry in the changelog, where the same work is written up with the bugs named.

Monitoring
1.0.0 · 1.5.0 · 1.7.0 · 1.10.0

1.0.0 shipped HTTP(S) monitors, configurable interval from one minute to one hour, timeout, expected status code and degradation threshold, on a Postgres-backed worker with cron fan-out, per-monitor dedup, drift-corrected scheduling and 90-day check retention, plus SSRF hardening on every target. 1.5.0 added keyword assertions: require the body to contain a string, or in absent mode to not contain one, which catches the error page that still returns HTTP 200. 1.7.0 added TCP/port checks and TLS-certificate expiry, reporting degraded when fewer than the configured days remain. 1.10.0 put check types behind a registry and added four more, ping, DNS records, TLS expiry as a monitor in its own right, and domain-registration expiry, with no new dependencies. The same release made the failure threshold a duration rather than a count of checks, and made the interval a baseline the scheduler tightens on a suspicious target and relaxes on a steady one, down to a two-second floor.

Incidents
1.0.0 · 1.6.0 · 1.8.0 · 1.29.0

1.0.0 shipped incidents that open themselves once a monitor has been failing for as long as you configured and resolve themselves on recovery, alongside manual incidents, severity levels, a strict lifecycle, immutable timelines and postmortems. 1.6.0 added internal notes. Badged, kept on the operator timeline, never sent to the public page and never fired at the organization webhook. 1.8.0 added acknowledgement: halt the escalation ladder without pretending the incident is over. 1.29.0 made an incident carry what was seen when it opened: the failing observation, the last successful one and the difference between them, the layer that broke and how that was established, and the other monitors failing for a signal it can name. Written once, at onset, because everything it is derived from is pruned or rewritten within weeks.

Recovery
1.2.0 · 1.3.0 · 1.4.0 · 1.4.1 · 1.4.2

1.2.0 shipped the thing the product is built around: one saved endpoint per monitor, a fresh probe to confirm the failure is real, a signed recovery.execute POST, then another probe, so success is observed and never assumed. Attempts are bounded per incident with a cooldown; the regular check loop still owns resolution. 1.3.0 added alert holding with an exactly-once claim and a failsafe scheduled up front. 1.4.0 added the restart-loop guard and effectiveness stats; 1.4.1 a test trigger so you can verify your receiver before the first real incident; 1.4.2 closes attempts a killed worker left running.

Status pages
1.0.0 · 1.6.0 · 1.9.0 · 1.10.1

1.0.0 shipped a public per-organization page with live component health, 90-day uptime history and an incrementally cached render. 1.6.0 made visibility a choice, public, private to signed-in members, or password-protected with a scrypt hash and a signed, page-scoped cookie. 1.9.0 added double opt-in email subscriptions: only confirmed addresses are ever mailed, every message carries a one-click unsubscribe, and internal notes and quietly self-healed incidents never reach subscribers. 1.10.1 fixed a page that published monitors the operator had deliberately left off it, a security fix if you run a page that is not everything you monitor.

Escalation and on-call
1.1.0 · 1.8.0

1.1.0 taught the organization webhook to speak Slack and Discord, detected by exact host so nothing else is misclassified. 1.8.0 shipped on-call schedules, a named rotation advancing one shift every N days from a fixed anchor, and escalation policies: ordered steps, each firing a set delay after the incident opened, targeting the on-call person, all responders or one named person, over email, SMS or voice. SMS and voice run on your own Twilio credentials; without them those steps are a clean logged no-op and the rest of the ladder still runs.

Platform
1.0.0 · 1.0.1 · 1.9.1 · 1.9.2 · 1.9.3 · 1.10.0 · 1.30.0

1.0.0 shipped multi-tenant organizations, invitations and four roles enforced by a single permission matrix across server actions, API and UI, plus signed webhooks, email with a structured-log fallback, an audit trail, and an optional AI copilot on your own Anthropic key. The patch releases record real defects: 1.0.1 fixed a container that could not start and a Postgres volume that lost its data on docker compose down; 1.9.1 shipped the .env.example the ignore rule had been silently swallowing, so a fresh clone could finally follow its own setup instructions, and added backup, restore and troubleshooting docs; 1.9.2 fixed a cache key that left out the status-page slug, so a deployment publishing more than one status page could serve one client's page under another client's URL, found in an audit, reproduced, fixed, and covered by a test that fails without the fix. 1.9.3 removed a 100-member cap that came from a library default nobody had set, it silently truncated the members list as well as refusing invitations, and it contradicted the pricing page, which has always said unlimited seats. 1.30.0 separated process liveness from traffic readiness, made readiness verify the complete migration ledger on a bounded pool of its own, and shipped a Localtonet overlay for a host that cannot accept an inbound connection.

Editions, migration and trust
1.11.0 · 1.11.1 · 1.12.0 · 1.13.0 · 1.30.0

1.11.0 ended the split: Core is generated from this tree by deleting the commercial code, in a required build job, so both editions are cut from one commit and carry one version number, 1.11.1 fixed the lockfile that still named the commercial license inside the Apache-2.0 mirror. 1.12.0 added eight more check types and white-label status pages. 1.13.0 is the migration and trust release: twenty-six more types to forty, an Uptime Kuma 2.4.0 importer that maps all 31 of its selectable monitor types and reports what it cannot carry, uptime weighted by duration rather than by how many stored rows agree, a durable outbox so a crash between deciding to alert and sending one delivers late instead of never, and a separate data plane for checks that run every half second. What that plane was measured doing, including where it stops holding cadence, is published with the raw results rather than summarised. 1.30.0 removed the commercial Twilio escalation environment from Core while keeping Core’s database-configured Twilio notification providers.

Probes you host
1.14.0

A monitor can be executed by probe agents you run on your own machines, with a quorum deciding the verdict: any, majority, all or K-of-N, plus a floor on how many fresh responders it takes to have an opinion at all. A probe that does not answer is never counted as a failure, and one incident opens per aggregate transition rather than one per probe. Vigil ships the agent and operates nothing.

Being told
1.15.0 · 1.16.0 · 1.17.0 · 1.18.x

1.15.0 put ten providers behind one channel editor and one delivery pipeline; 1.16.0 removed the cap on how many channels a workspace may have; 1.17.0 took it to 25 native provider types plus a bridge to an Apprise server you run, which is counted as a bridge and never as a twenty-sixth integration. 1.18.x is the delivery engine underneath: retries out to six hours, lease fencing, an append-only record of every attempt, and fair draining so one noisy tenant cannot own the queue.

Migration, planned work and routing
1.19.0 · 1.20.0

1.19.0 shipped the migration system: fifteen sources, fourteen over their own API plus an Uptime Kuma database file, with a preview that is a real import rolled back rather than an estimate. 1.20.0 added maintenance windows, in a real IANA time zone so a weekly window keeps its local hour when the clocks change, and alert routing policies, so why did nobody get a message is answerable from the product rather than from a log.

Capacity and the fleet
1.21.0 · 1.22.x

1.21.0 started as high availability and the measurements turned it into something narrower and truer: the control plane was already arbitrated by Postgres, and what was actually broken was a scheduler that could not feed more than 500 monitors a minute and a fleet page that could not say the worker had died. Both fixed, with the numbers published. 1.22.x is the dark scheme, in Vigil's own palette rather than a borrowed one.

Journeys, promises, and the work after the alert
1.23.0 · 1.24.0 · 1.25.0 · 1.26.0

1.23.0 added scripted synthetics: multi-step API and browser journeys that watch a sequence rather than an endpoint, as typed steps with no scripting surface at all. 1.24.0 added objectives with error budgets and multi-window burn-rate alerts that fire while the budget is going rather than reporting that it went. 1.25.0 added runbooks, the automation you would otherwise perform by hand, with immutable published versions, approvals and resource leases. 1.26.0 added operations tasks, the human half of the same engine, and a measured pass over memory and queue retention.

Every dated release in the changelog falls between 3 July and 23 August 2026. Vigil is young, and the history is short and public rather than long and claimed.

Next

Taken from the limitations, not from a wishlist.

Nothing here is a feature someone imagined. Each item is something Vigil already tells you it does not do, in a file you can read right now. No dates are promised for any of it.

More native notification providers. Uptime Kuma ships 94 and Vigil implements 25, and the Core README says so

This list had four items on it and every one of them shipped: one tree for both editions in 1.11.0, password reset and push/heartbeat checks in 1.13.0, and PagerDuty among 25 native providers in 1.17.0. The paging item named Opsgenie too; Atlassian ended its sale in June 2025 and shuts it down in April 2027, so what shipped is Jira Service Management, built on the Jira Cloud REST API instead. Each is in the changelog with the version that delivered it, and each was on this page as a limitation first. What shipped ↗

What is left is a gap rather than a plan, and it is stated as one: Uptime Kuma routes to services Vigil does not implement, and a service on their list and not on this one goes there today and not here. An Apprise server you run bridges to it, which is a bridge and not an integration. Adding a native one is a file in providers/ and one line in the registry every surface reads, so you can do it yourself without waiting. What shipped so far was what agencies and MSPs asked for; that is the only prioritisation rule there is.

Where each of these would be added
Where each item is already admittedRead it yourself
Core READMEA stated limitations section: 25 native provider types against Uptime Kuma's 94, a gap that is still real
CUSTOMIZATIONCheck types ship behind a registry; adding one is five files and no dispatch to edit
CUSTOMIZATIONAdding a provider is a file in providers/ and one line in the registry every surface reads
SourceThe free edition is public, check any of this against the code at vigil-core
No datesOrder is a judgement, not a schedule; nothing above is sold as coming soon
Not planned

Three things Vigil is not going to become.

Not a backlog nobody has reached, decisions. Where one of these is what you actually need, the alternative is named instead.

Regions Vigil operates for you
Use a hosted service

By default Vigil checks from the single host you run it on, and a monitor going down means your Vigil host could not reach it. Since 1.14.0 you can assign a monitor to remote probe agents and require a quorum, which confirms a failure from several vantage points. You place those agents in the regions you control and you run the machines. Vigil operates no region, no relay and nothing to subscribe to. Running probes worldwide forever is an operations business, and this is a codebase you buy once. If you need a failure confirmed from several continents with no ops of your own, Better Stack and Pingdom do that; buy one of them. Either way, run Vigil outside the blast radius of what it watches.

An APM or a log platform
Different question, different data

Vigil answers whether an endpoint responded, and what the runtime did about it when it did not. It does not trace requests, profile code or index logs, and it is not growing into something that does, that needs a different storage model and an agent inside your application, and Vigil installs no agents. When a check fails and the next question is why, inside the process, that is a real APM's job and you should own one.

A license server, or telemetry
Nothing to call home to

No key check on startup, no phone home, not even the anonymous kind. Nothing stops working when a payment lapses, because there is no subscription to lapse and nothing in the software reads a date. The cost is real and it is ours: we genuinely do not know how many people run Vigil, so this roadmap cannot be ranked by usage data. It is ranked by what people say to us instead, which is the next section.

How this list changes

Argue with the order.

With no telemetry there is no usage graph to settle arguments, so the priorities move when someone makes a case for moving them. Maria reads both channels and answers them herself. Say what you are trying to do and what is blocking it, that is more useful than a feature name.

One thing is genuinely undecided rather than planned or refused: a hosted Vigil that Sikur runs for you. There is nothing to sign up for and no price, because the decision has not been made. Ask on the contact page if you want it, and that will count for more than a waiting list did.

Every shipped item names its version, check it against the changelog
Every next item is a limitation the product documents, not a promise made here
No dates on this page, so none can be quietly missed
The pricing page lists only what ships today. Nothing is sold on a roadmap