Persistent watches. Durable alerts.
Know what
happened.
See why.
Watch an API, run a local check, or receive events from your software. Ding keeps the state, records the evidence, and retries the notification.
Watch runtime: v0.15.2. Using the legacy runtime?
API health
Three checks.
Three server errors.
The third matching response opened this incident.
Retained observations
Jan 1 · UTCIllustrative evidence view with sample data. Ding includes a local Console, CLI, API, and MCP adapter.
01 / The whole story
An alert with a reason
you can inspect.
From the first observation to the last delivery attempt, Ding keeps the pieces connected.
-
01
Observe
Poll an HTTP endpoint, run an explicit command, or accept authenticated JSON.
HTTP · command · push -
02
Evaluate
Apply a declared condition. Keep incident state and recovery progress across restarts.
One versioned manifest -
03
Record
Commit the event and its evidence to local SQLite storage, with explicit retention limits.
State + evidence + outbox -
04
Deliver
Send notifications with durable retries. Inspect failures and deduplicate stable event IDs.
Console · webhook · Slack · Discord
02 / Small definitions. Real jobs.
Watch what matters.
Start with a supported source and a condition you can explain.
Catch an API failure. Track its recovery.
Open an incident after three actual 5xx responses. Recover after two nonmatching observations.
Notice when a heartbeat goes quiet.
A persistent deadline can fire even when no new measurement arrives.
Know when something changes.
Compare a value to its saved baseline or recognize a new provider event ID.
03 / Your tools. One runtime.
A definition you can
read, test, and keep.
Use the CLI, have an agent help write the manifest, and inspect the same watch through the planned Console. The Go daemon owns evaluation and durable state.
Validate before applying. Replay a fixture without source requests or notifications. Review how an edit affects existing state.
Explore watch definitionsapiVersion: ding.ing/v1alpha1
kind: Watch
metadata:
id: api-health
name: API health
spec:
source:
type: http
url: https://api.example.com/health
every: 5s
timeout: 2s
condition:
field: http.status
operator: gte
value: 500
policy:
trigger: transition
consecutive: 3
recoverAfter: 2
onUnknown: hold-incident
destinations:
- ref: ops-webhook
events: [firing, recovered, source_error, source_recovered]
See complete, runnable examples →
04 / Keep it yours
One daemon.
A durable memory.
Run Ding locally or on your own server. Its SQLite store keeps conditions, evidence, and pending notifications together.
A running daemon is required. Delivery is at least once; receivers should deduplicate event IDs. Retention and resource limits are explicit, and unknown input never silently clears an open incident.
Read the operating guide →Start with one watch
Make the next alert
make sense.
No external service required for the quickstart.
Watch runtime: v0.15.2.