Route, meter, and hear from every coding agent.
AgentNotify is a local control plane for Claude Code, Codex, OpenCode, and the rest. It routes their model calls, counts what they spend, and watches your quota — and it does the part other control planes leave out: it tells you the moment an agent needs you, and carries your answer back.
Local first · open source · no telemetry. Windows desktop app; broker, CLI, dashboard, and router on macOS and Linux too.
Your agents
AgentNotify
local control plane · 127.0.0.1
ask · answer · unresolved
providers · failover
tokens · cost · projects
live balances · menu bar
Model providers
You
11
agent hosts with adapters
19
opt-in delivery channels
6
local usage sources
3
wire formats the router speaks
0
telemetry services
Everything between your agents and the outside world.
One loopback service sits between your coding agents, the model providers they call, and you. It mediates and observes; it never does the agent's work.
- Unresolved state that survives a restart
- Answer from the desktop or a paired phone
- 19 opt-in channels, all off until you enable them
- Nicknames, fallback chains, smart switching
- Codex and Claude Code connected in one click
- A ledger that never stores prompts or keys
- Works offline from local agent records
- WSL sessions counted on Windows
- Unpriced records stay unpriced
- Every window, with its reset time
- Five-hour balances in the macOS menu bar
- Cached and rate-limited, checked on demand
Control planes route and meter. None of them tells you an agent is stuck.
An agent can work for hours without help. The expensive moment is when one stops silently at a permission prompt, a missing credential, or a decision only you can make. An AI gateway sees the request stop. AgentNotify asks you, and hands the answer back.
Your quota, in the menu bar.
Pick the Codex and Claude Code accounts you care about, and each gets its own menu-bar item showing its five-hour balance. Open any of them to see every account and every window, with its reset time.
- Second profiles such as
~/.claude-secondfound automatically - A native status item, started and stopped with the broker
- Chosen from the web interface, under Live quota
AgentNotify quota
Five-hour balance: 18% · personal
Checked 1 min ago
Refresh now ⌘R
Open Live Quota…
Illustration — click a status item or an account. Values are made up.
Answer it, don't just read it.
An agent can ask you something and carry on with other work while you decide. Your answer is waiting when it checks back, and it reaches the session that asked.
For Codex and Claude Code, the host's own approval prompt can wait for you: every shell command and file write pauses with the exact command shown. If nothing answers in time it falls back to the ordinary local prompt, so it can never lock you out.
--type permission_required \
--title "Deploy approval" \
--message "May I publish the release?"
$ agentnotify install-harness claude --ask
# Claude Code now pauses for your decision:
# "Claude Code approval: Bash rm -rf /tmp/build"
# [ Allow once ] [ Deny ]Your attention, where you want it.
Every remote destination is opt-in. Credentials are encrypted at rest, payloads are bounded, and a provider failure never rejects the local request.
One contract for attention.
The Attention Request Contract is an open JSON contract for creating, updating, answering, and resolving bounded requests for human attention. It separates an immutable event from the condition that remains unresolved, and a request that expects an answer carries the shape of the answer it is waiting for.
{
"arc_version": "0.2",
"event_type": "request.created",
"sender": { "id": "codex", "name": "Codex" },
"request": {
"key": "release-approval",
"kind": "permission",
"message": "May I publish the release?",
"priority": "high",
"response": {
"kind": "permission",
"choices": [
{ "id": "allow_once", "label": "Allow once" },
{ "id": "deny", "label": "Deny" }
]
}
}
}