A self-hosted ITSM engine that runs on your own metal. Tickets, workflows, SLA enforcement — zero cloud dependency, zero vendor lock-in, zero incident records leaving your perimeter.
DB primary failover — replication lag 38s
INC-4821 · K. Oduya
00:07:43
SLA breach
Nginx upstream 502 — pods/web-3 unresponsive
INC-4820 · M. Svensson
00:23:11
SLA remain
Cert expiry warning — api.internal 14d
INC-4819 · Unassigned
04:00:00
SLA remain
100%
Data on your metal
<60s
Deploy from zero
0
Vendor dependencies
SOC2
Audit trail ready
From inbox chaos to
structured incident records.
Every alert, email thread, and Slack ping collapses into a single canonical ticket. One source of truth. Owned by your infrastructure.
PROBLEM: db-primary is DOWN
alerts@nagios.internal · 02:14
anyone else seeing 502s on the API?
#ops-fire · 02:16
FWD: FWD: RE: server down???
noc@corp.com · 02:17
Row 847: unresolved - assigned to ???
incident_log_v3_FINAL.xlsx · 02:18
@here is the site down for everyone?
#general · 02:19
RE: what is happening right now
cto@company.com · 02:21
DB primary failover
INC-4821 · K. Oduya
API upstream 502
INC-4820 · M. Svensson
Cert expiry warning
INC-4819 · Auto-assigned
Load balancer health check
INC-4818 · T. Nakamura
Automate the
3 a.m. runbook
before it pages you.
Build visual automation rules in YAML or the drag-and-drop editor. Trigger on severity, age, SLA proximity, or any custom field. No Zapier. No cloud. Runs inside your perimeter.
IF CRIT ticket opens
THEN Page on-call + create war room + auto-assign
IF SLA < 10 min remaining
THEN Escalate to manager + Slack broadcast
IF Ticket open > 4h
THEN Reassign + notify team lead
workflow.yml — live preview
on:
ticket.created:
severity: critical
actions:
- page_oncall: tier_1
- create_channel: "#inc-{{ ticket.id }}"
- assign: round_robin(oncall_team)Trigger
Severity = CRIT
Condition
SLA < 15min?
Condition
No assignee?
Action
Page on-call
Action
Escalate tier
Action
Auto-assign
Notify
Slack #ops-fire
Notify
Email + SMS
SLAs that enforce themselves.
No manual tracking.
Define policies in YAML. Dispatch watches every clock. Color shifts from violet to amber to red as deadlines approach — and fires automations before you have to think.
99.2%
SLA compliance, last 90d
0
Breaches this month
4.2m
Avg time to acknowledge
∞
Policy definitions
DB primary replication lag
INC-4821
API upstream gateway 502
INC-4820
Disk usage > 90% — /var/log
INC-4817
SSL cert renewal failure
INC-4815
Backup job timeout
INC-4812
Your metal.
One command.
No SaaS. No phone-home. No incident record ever leaves your network. Deploy on bare metal, VMs, Kubernetes, or an air-gapped SCIF. Apache 2.0 — audit every line.
docker pull ghcr.io/dispatch-itsm/dispatch:latestdocker run -d \ --name dispatch \ -p 8080:8080 \ -v /opt/dispatch/data:/var/dispatch/data \ -e DISPATCH_SECRET_KEY=<secret> \ -e DISPATCH_DB_URL=<postgres-url> \ --restart unless-stopped \ ghcr.io/dispatch-itsm/dispatch:latest
Compliance Posture
Zero phone-home
No telemetry. No license server. No outbound connections required.
Single binary option
Dispatch ships as a statically linked binary for fully air-gapped deployments.
Bring your own Postgres
Plugs into your existing database cluster. No proprietary storage layer.
LDAP / SAML / OIDC
Plug into your existing identity provider. AD, Okta, Keycloak all supported.
Plugs into your stack.
Stays on your network.
Every integration runs as a local connector — no data leaves your perimeter. Configure in minutes via YAML. No OAuth dance with a third-party relay.
PagerDuty
AlertingBi-directional sync — incidents flow in, resolves flow back
Prometheus
MonitoringAlertManager webhook → auto-ticket on firing rules
Grafana
ObservabilityEmbed live panels directly into incident timelines
Slack
CommsAuto-create war rooms, notify on SLA breach, slash commands
Jira
TrackingSync incidents to Jira issues, maintain bidirectional state
GitHub
SCMLink commits and PRs to incidents for root cause tracing
integrations:
pagerduty:
enabled: true
api_key: ${PAGERDUTY_API_KEY} # stays in your env
service_ids: [PXXXXXXX, PYYYYYY]
sync_direction: bidirectional
auto_resolve: true
slack:
enabled: true
bot_token: ${SLACK_BOT_TOKEN}
default_channel: "#ops-incidents"
create_war_room_on: [critical, high]Your incidents.
Your infrastructure.
Starting now.
Pull the image. Own your help desk in under 60 seconds. No trial. No credit card. No data leaving your network — ever.
docker pull ghcr.io/dispatch-itsm/dispatch:latestApache 2.0 · Self-hosted · No vendor lock-in · Upgrade path inside the app