AgentNotify
Agent control plane · notifications built in

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

Claude Code
Codex
OpenCode
Gemini CLI
Kilo

AgentNotify

local control plane · 127.0.0.1

running
Notify

ask · answer · unresolved

Route

providers · failover

Measure

tokens · cost · projects

Quota

live balances · menu bar

Model providers

Anthropic
OpenAI
DeepSeek
OpenRouter

You

Desktop
Phone

11

agent hosts with adapters

19

opt-in delivery channels

6

local usage sources

3

wire formats the router speaks

0

telemetry services

Four jobs, one process

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.

Notify
Knows when an agent needs you
Permissions, questions, blockers, failures, and completions become durable attention requests. They reach your desktop or phone, and your answer goes back to the agent that asked.
  • Unresolved state that survives a restart
  • Answer from the desktop or a paired phone
  • 19 opt-in channels, all off until you enable them
How interactions work
Route
Sends every model call where you choose
A loopback router speaks OpenAI Responses, Chat Completions, and Anthropic Messages. It picks a provider and model, translates between wires, and fails over — without changing the agent.
  • Nicknames, fallback chains, smart switching
  • Codex and Claude Code connected in one click
  • A ledger that never stores prompts or keys
Explore the model router
Measure
Counts what every agent spends
Tokens by day, agent, project, model, and session — from Claude Code, Codex, OpenCode, Kilo, Muse Code, and the Gemini CLI, read locally and priced at each provider's published rate.
  • Works offline from local agent records
  • WSL sessions counted on Windows
  • Unpriced records stay unpriced
Explore Insights
Quota
Shows how much runway is left
Live balances for every Codex and Claude Code account on the machine — second profiles and WSL included — with API account balances and spend beside them.
  • Every window, with its reset time
  • Five-hour balances in the macOS menu bar
  • Cached and rate-limited, checked on demand
The web interface
The missing layer

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.

Typical AI gatewayAgentNotify
Route model calls across providers
Fail over and translate between wire formats
Token usage and cost
Live Claude Code and Codex subscription quota
Tell you when an agent is blocked on you
Carry your answer back to the waiting agent
And all of it on your machine, with its API on loopback.
New · macOS

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-second found automatically
  • A native status item, started and stopped with the broker
  • Chosen from the web interface, under Live quota
Install on macOS
Terminal

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.

Two-way

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.

$ agentnotify send \
  --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 ]
Delivery

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.

Explore channels
ARC 0.2

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" }
      ]
    }
  }
}
Architecture

Simple at the boundary. Durable underneath.

Coding agents
CLI · ARC · harnesses · model calls
Loopback API
Bearer auth · router key · validation
Local state
SQLite · dedup · history · ledger
Outward
Providers · desktop · chat · push
Stop checking every terminal.
Install AgentNotify, hand your coding agent the bundled skill, and let the control plane tell you when a human is actually needed.