Codeaton vs. ntfy

Codeaton vs. ntfy for AI coding agent status

ntfy is a general-purpose push pipe. Codeaton is a purpose-built status layer for coding agents. If you only need “ping me when it is done”, ntfy already does that and it is free. If you are running several agents and want to know what each one is doing right now, that is where a generic notification pipe starts to hurt.

When ntfy is the better choice

If you want one self-hosted pipe for every alert you own — servers, cron, backups, and agents together — ntfy is the better tool. It is free, self-hostable, and not specific to coding agents at all.

Feature comparison between Codeaton and ntfy
FeatureCodeatonntfy
Delivery modelOne Live Activity updated in placeOne notification per message
Agent identityEach agent is a first-class object with a stateTopics and strings you name yourself
ProgressNative progress bar, 0–100Text you format by hand
Dynamic IslandFirst-class surfaceNot supported
Multi-agent viewAgent summary across hostsSeparate topics, no rollup
Usage analyticsTokens and models per agentNot applicable — it is a transport
Token trackingPer agent, daily and lifetimeNot applicable
Self-hostingHosted onlyYes, fully self-hostable
PriceFree plan, $4.99/mo ProFree

The honest version

Most developers who want to know when Claude Code finishes already solved this. They piped a curl call into ntfy or Pushover from a hook, and it works. Any pitch that pretends otherwise is not worth reading.

So the real question is not “do you need notifications” — you already have them. It is what happens when one agent becomes four, and a run takes forty minutes instead of two.

Where a generic pipe starts to hurt

A push notification is a fire-and-forget string. That model has three specific failure modes once agents get involved:

  • Every progress update is a new banner. A chatty agent buries your Lock Screen, so you turn updates off and go back to not knowing anything.
  • There is no state. A notification cannot tell you what is happening now — only what happened once, at the moment it fired.
  • There is no rollup. Four agents on three machines means four topics and no answer to “is anything waiting on me?”

What Codeaton does instead

Codeaton models an agent rather than a message. Each agent has an identity, a status — working, waiting, done or failed — an optional message and an optional progress value. A run updates one Live Activity in place, so a forty-minute task occupies exactly one strip on your Lock Screen from start to finish, then ends.

That is the whole difference, and it is worth being precise about it: Codeaton is not better at delivering notifications than ntfy. It is a different data model that happens to fit what coding agents actually do.

What the wiring looks like

With ntfy, you format the message and decide when to send one:

curl -d "Claude Code finished refactoring auth" ntfy.sh/my-topic

With Codeaton, you describe the state and let the app decide how to show it:

curl -X POST https://codeaton.com/api/ingest \
  -H "Authorization: Bearer $CODEATON_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agentKey":"claude-code@laptop","type":"progress","message":"Refactoring auth","data":{"progress":60}}'

Both are one line in a hook. The second one knows it is describing the same agent it described thirty seconds ago.

When you should just use ntfy

If you want one self-hosted pipe for every alert you own, or you are only ever running a single agent and “done” is the only event you care about, ntfy is the better answer. It is free, it self-hosts, and it does not care what is sending it messages. Codeaton earns its place when you have several agents, not a cron job.

Welcome back
Friday, 28 August
🔔
Sa
Su
Mo
Tu
We
Th
Fr
Today’s output
1.2Mtok
3 agents working
Usage
1.2M tok
Working
3
Last run
4 files
Home
Download the app

Put your agents on your island.

Pair in a minute, wire up one HTTP call, and stop tabbing back to your terminal to see if anything happened.