Velvet

GitHub-native status monitoring and a polished status page,
without a server or a database. Just five steps away.

What an installation gives you

Velvet monitors websites and HTTP endpoints from GitHub Actions, records incidents and planned maintenance in GitHub Issues, and publishes the result as a static page.

  • Checks that run on GitHub

    Direct IPv4 GET and HEAD checks from GitHub-hosted runners, every five minutes, with response-time samples four times a day.

  • Incidents that open themselves

    A confirmed failure opens a GitHub issue, and a recovery closes it. Planned maintenance stays visible as a neutral event in the history.

  • A year of history

    Up to 365 days of availability, response times, incidents, and maintenance, kept on a dedicated branch rather than in a database.

  • A page you can shape

    Four system themes, detailed visual configuration, service icons, analytics, SEO output, and selectable history ranges.

  • Your own domain

    Published through GitHub Pages, with a custom domain when you want one, and no server or database anywhere in the picture.

  • Nothing leaks into the open

    Endpoint URLs and secrets never enter the published documents, and invalid data leaves the last valid snapshot untouched.

How it works

GitHub is part of the platform rather than a place to host it. Scheduling, incidents, generated data, and the public site each live in something GitHub already provides.

  1. You describe what to watch

    A file called velvet.yml names the repository, the page, and every service. A public website needs only a name and a URL.

  2. GitHub Actions does the checking

    The status workflow runs every five minutes and the response workflow four times a day, both on GitHub's own runners.

  3. Results are published as data

    Each successful run writes one validated snapshot to a dedicated branch. The monitor never rewrites your default branch.

  4. The page builds from that snapshot

    GitHub Pages renders the status page, its social card, and its SEO files, and keeps doing so whether or not the setup service is up.

Ready in a couple of minutes

The browser setup asks for a repository and page name, your services, an optional custom domain, and one of the four themes. After you approve it on GitHub it creates the repository, enables Pages, starts monitoring, and waits for the first deployment.

Create your status page