SignalHub
All images are for reference only. Screens use synthetic Estora development data and do not describe real service availability.
On this page
Your services. Your status page. Your infrastructure.
Open-source status pages, monitoring, and incident communication for teams that want to own the whole workflow.
Apache-2.0 · Node.js 22.9+ · PostgreSQL 14+ · CI checks
Get started · See the product · Security · Documentation · Contribute

One clear place for customers to check service health.
All images are for reference only. Every product example uses synthetic Estora reference data. Incidents, uptime, latency, traffic, and subscribers illustrate the application; they are not real service reports or customer endorsements. Screenshot provenance.
Why teams run SignalHub
A status page should connect what your systems detect, what your team knows, and what your customers need to hear. SignalHub brings those pieces into one self-hosted application.
- Own your operational data. Pages, incidents, subscribers, uploaded assets, and audit history stay in your PostgreSQL database. You choose the delivery providers and any telemetry export.
- Connect monitoring to communication. Checks can update a service, record a metric, open or resolve an incident, and queue notifications through the background worker.
- Serve different audiences. Publish public pages, password-protected private pages, audience-specific pages, and hubs that organize several services or products.
- Give your team controlled access. Organization roles, page scope, OIDC/SAML sign-in, SCIM provisioning, MFA, revocable sessions, and audit records are included.
- Run without software seat limits. Apache-2.0 software has no per-page, per-seat, or per-subscriber license charge. Hosting, storage, and delivery-provider charges still apply.
Quick start
Use Docker Engine 24+ with Compose v2.24+, and PostgreSQL 14+; PostgreSQL 18 is used by the development configuration. The installer can start a bundled database for a trial.
git clone https://github.com/rameshbgm/signalhub.git
cd signalhub
./install.sh
The installer asks for a domain, database choice, and browser or terminal setup. In the browser, open http://localhost:3301/setup to connect the database and create your first organization and administrator. SignalHub generates the application keys and persists wizard configuration in its data volume. Back up that volume along with PostgreSQL.
For a local trial with bundled PostgreSQL:
./install.sh --yes --bundled-db --browser
Keep an unfinished installation reachable only by its intended operator: the first person who completes setup creates the administrator. For production, put TLS in front, set the public URL, configure delivery, and review the hardening checklist.
Your first session: create a page, add services, set up monitors, configure a delivery provider and worker, invite your team, then review MFA and runtime settings. The setup guide covers each step, upgrades, recovery, and backups.
Choose your deployment
| Environment | Start here |
|---|---|
| A server or VM | Installer and Compose guide |
| Node.js without Docker | Source installation |
| Kubernetes | Manifests and deployment guide |
| Render, Railway, Fly.io, DigitalOcean | Platform guides |
| AWS, Google Cloud, Azure | AWS · GCP · Azure |
From a failed check to an informed customer
Detect a problem
Monitor HTTP availability, content keywords, TCP ports, DNS records, TLS certificates, ICMP reachability, and heartbeat jobs. Set authentication, intervals, timeouts, thresholds, tags, groups, and recovery behavior. Review recent results alongside latency.

These reference monitors are paused and use simulated history. Live checks require a running worker.
Coordinate the response
Declare an incident, identify affected services, and publish updates as you investigate, identify, monitor, and resolve it. Schedule maintenance separately. Correct incident messages with edit evidence, keep resolved history intact, and hide internal events from the public page when needed.

One events view brings ongoing incidents and maintenance together.
Publish a useful status page
Give each product its own services, groups, uptime view, metrics, incidents, maintenance, and history. Set the layout, style, branding, visitor links, and history window. Preview draft appearance changes before publishing them.

The page workspace connects customer-facing status with the controls your team uses.
Keep people informed
Offer verified email or SMS subscriptions when providers and the worker are ready, plus RSS/Atom feeds. Connect team destinations and signed event webhooks. Add a status badge or incident banner to your own site. Notification controls remain explicit so a reference exercise or backfilled event does not become an accidental announcement.
Explore notifications and destinations · Read every menu and option
Run several teams from one installation
Organizations separate their pages, people, and operational records. The platform console brings installation health, configuration, identity, queues, and recovery into one place, while organization roles and page scope control everyday access.

Installation views use a disposable Estora-only database; no other tenant directory is shown.
More product views
Public history

Aggregate analytics

Audit evidence
Security and access
| Area | Included controls |
|---|---|
| Sign-in | Password accounts, authenticator-app MFA, OIDC and SAML 2.0 connections, and SCIM 2.0 provisioning. |
| Team access | Admin, Incident Manager, Responder, and Viewer roles, with optional page restrictions. |
| Account recovery | One-time recovery codes, lost-device requests, administrator review, and audited operator recovery. |
| Sessions | Expiry policy, revocation, trusted-browser controls, and sign out other devices. |
| Secrets | Encrypted stored provider/authenticator material; write-only provider settings; scoped API keys. |
| Audit | Append-only events, hash-chain sealing and verification, CSV/JSON export, and signed SIEM delivery. |
| Deployment | TLS/proxy controls, administration network ranges, rate limits, backups, retention, and key rotation. |
Security depends on how you deploy and operate the installation. Review the security guide, MFA guide, and enterprise evaluation. Report vulnerabilities privately through SECURITY.md.
Architecture
flowchart LR
People[Visitors and operators] --> Web[Web application]
Web <--> DB[(PostgreSQL)]
Worker[Background worker] <--> DB
Worker --> Checks[Monitored services]
Worker --> Delivery[Email, SMS, and team providers]
Automation[Your automation] --> Web
The web application serves pages, the console, and APIs. The worker runs checks, notifications, exports, audit delivery, maintenance transitions, and retention. PostgreSQL holds shared state, jobs, assets, and exports. The default container runs migrations, web, and worker; they can also run separately.
The application uses Next.js 16, React 19, TypeScript, Tailwind CSS 4, Kysely, and Graphile Worker. Source development requires Node.js 22.9+; CI and the container use Node.js 24. Deployment architecture and scaling.
Automation and API
Create a scoped API key, restrict it to the pages it needs, and set expiry or source-network constraints where appropriate. The OpenAPI document is available from your installation at /api/openapi.
# Read public status.
curl https://status.example.com/api/v1/status/your-page
# Create an incident using a key with incidents.write.
curl -X POST https://status.example.com/api/v1/manage/incidents \
-H "Authorization: Bearer $SIGNALHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pageId":"<page-id>","name":"Elevated API latency","status":"INVESTIGATING","impact":"MINOR","body":"We are investigating delayed requests.","pageWide":true}'
Management APIs currently cover service status, incident creation/updates, and metric ingestion. Heartbeat links, inbound service webhooks, banner embeds, and SVG badges support other automation flows. API and key reference.
Operator CLI
docker compose exec signalhub node dist-runtime/signalhubctl.mjs doctor
| Command | Purpose |
|---|---|
setup |
Configure a database and first administrator from the terminal. |
preflight, doctor, migrate --check |
Check configuration, runtime health, and schema state. |
backup, restore |
Create and restore checksummed PostgreSQL backups. |
audit |
Verify the audit chain. |
export --org <id> |
Queue an organization export. |
settings show, export, import, reset |
Inspect, back up, restore, and recover runtime settings. |
rotate-encryption-key |
Re-encrypt saved secrets with the active key. |
reset-password --username <id> [--clear-mfa] |
Recover an operator account. |
See operations before a restore, recovery, or key rotation.
Documentation
| Need | Guide |
|---|---|
| Install or upgrade | Complete setup guide · Deployment choices |
| Learn the console | User manual · Menus and options |
| Explore features | Feature guide · Screenshot index |
| Configure an installation | Environment and runtime settings |
| Secure and operate it | Security · MFA · Operations |
| Evaluate fit | Enterprise evaluation · Comparison notes |
| Understand the examples | Estora reference data |
| Develop or contribute | Contributing |
The public marketing site and HTML documentation are maintained in the separate signalhub project. This application checkout keeps the source guides, product screenshots, and user manual. The marketing preview runs at http://localhost:3300/; the application runs at http://localhost:3301/. Project separation and documentation sync.
Develop locally
npm ci
cp .env.example .env
# Configure PostgreSQL and application keys as described in CONTRIBUTING.md.
npm run db:migrate
printf '%s' 'choose-a-long-development-password' | npm run bootstrap -- --password-stdin
npm run dev:all
Run npm run verify before opening a pull request. Database integration tests need an explicitly configured disposable test database. Development setup and repository conventions.
Current scope
The feature and option guides describe shipped behavior. Custom status-page domains, AI assistance, translated content, broader management endpoints, multi-region probes, and passkeys remain roadmap ideas. Historical proposals are labelled in docs/superpowers/ and are not released features.
Contributing and license
Bug reports, documentation, tests, and focused improvements are welcome. Read CONTRIBUTING.md and use GitHub issues for ordinary reports.
SignalHub is licensed under Apache-2.0. You may use, modify, and run it commercially under that license.