The events that don't reach you are the product.
Roughly nine in ten container events are noise. The other one is the alert.
Quiet by default
When one gets through, it tells you what broke.
Each alert opens with cause, container, and severity. Repeats fold into the existing alert with a count: a Watchtower crash-loop becomes one message that says "47 times."
One-line summary
Repeats folded
When "what broke" isn't enough Pro
One click to the root cause.
Some failures hide their cause — a crash that's really a dropped VPN sidecar, a freeze that's really memory pressure three containers over. Triage takes a fast look and flags when it couldn't pin it down; a Full investigation keeps going — more passes, a stronger model, correlating across your containers, hosts and timeline — and ends with concrete steps to fix it. Standard triage is on every plan; this is the deep dive.
Root cause
The specific thing that failed, with the evidence that proves it.
Affected services
What else is involved or at risk across your containers and hosts.
How to fix
Concrete steps to take — or exactly what it still couldn't determine.
The spike you slept through
Metrics you keep, alerts inside your logs.
A CPU spike at 3am is useless as a number that has already moved on. CPU, memory, network and disk are stored as history — 24 hours on Free, 30 days on Pro and Team — so you can see how long it lasted, not just that it happened. Metrics don't count against your event limits.
Anchored to the line that tripped it
Scroll back through a container and the alerts that fired in that window are in the stream, attached to the exact log line that caused them. No second tab, no lining up timestamps by eye. Events triage held back are marked on the line, so quiet is visible too.
If cloud is unreachable, your logs still load — the alerts simply don't appear.
14:32:01 worker processed job 8821
14:32:02 🔕 worker connection attempt 41 failed
14:32:02 worker FATAL: connection pool exhausted
14:32:02 │ ALERT Pool exhaustion under retry storm
│ 47 events · 30m [Details ›]
14:32:03 ⏱ METRIC CPU: 91.4%, Memory: 62.0%
14:32:03 worker retrying in 5sAlso in the box
Six more things, all included.
- 1
Search any event, any host, any time.
Every event from every connected Dozzle, indexed the moment it arrives. Drill into the second something broke without opening a terminal.
›level:error container:nginx-proxy since:30m - 2
Channels wherever you already are.
Pick one. Pick all of them. Per-channel quiet hours and severity filters live next to the toggle. No new app to install, no new inbox to ignore.
SlackEmailDiscordTelegramntfyWeb push - 3
MCP for the AI you already trust.
PreviewWire Dozzle Cloud into Claude Desktop, Cursor, or any MCP client. Ask "what broke last night?" from the assistant you already trust. Read-only, free on every plan.
$ claude mcp add dozzle-cloud \
--url https://mcp.dozzle.dev/mcp
--header "Authorization: Bearer dz_mcp_…" - 4
Every host, one dashboard.
Homelab, the NAS in the closet, the staging box at work. Cross-instance search, cross-instance alerts, one place for all of it.
dozzle-cloud ├── homelab.local ● 14 containers ├── nas.lan ● 6 containers └── prod.example.com ● 22 containers - 5
Live logs from any container, anywhere.
Live logs in the browser, with split view and live filter. Same as the Dozzle you know, now reachable from your phone.
- 6
Restart at 2am without SSH.
Start, stop, restart containers from the dashboard. Audited per user. Scoped per host. Off by default.
startstoprestart