Open-source · local-first · works with Claude Code, Codex & Cursor

Give your agent ears.

Agent Monitors watches the things you care about — files, APIs, repos, docs, CLIs — and tells your agent the moment they change. No polling loop. No re-asking. Your agent finds out on its own.

~/monitors · 7 activelistening
a code review on your PRgithub
a new security advisoryosv
a new release of a dependencynpm
CI to finishactions
a failed deployvercel
the product spec to changegdoc
the eng spec to change on maingit

Your agent can already see and act — eyes (computer-use), and hands (tools). Hearing is the sense it's missing — and the one nobody else is building.

02 · the problem

Today, you're the polling loop.

Right now, you are how your agent finds things out. "Check my email again." "Any new comments?" "Did CI pass yet?" You keep going back and poking it. You're the loop — running on your own attention.

Or you wired one up yourself: a script that wakes the agent every few minutes to go look. Now it burns tokens on every tick whether or not anything changed, re-derives what's different by eyeballing two big blobs, and quietly breaks the next time a session restarts.

Before
  • A pile of polling loops, each spending tokens every tick
  • Re-deriving diffs in-context, eyeballing two big blobs
  • All fighting the same rate limits and locks
  • Scattered across shell scripts you'll never find again
  • Silently broken the moment a session restarts
After
  • One simple markdown file per thing you care about
  • Heard only when it matters, pre-digested
  • Reliable across restarts and tool updates
  • Private — it all stays on your machine
  • Future-proof — declare it once; the plumbing can change underneath

Stop being the loop. Let your agent be told.

03 · how it works

Declare what matters. Your agent hears the rest.

The whole thing is one small file. The top says what to watch; the body says what it means and what to do.

The watch: block — what to watch

The facts the runtime handles for you: where to look and how to tell when it changed. Deterministic, off to the side. You never write a polling loop.

The body — what it means & what to do

Your judgment, in plain language, run by the agent only when the watch actually fires. One small file declares both halves.

01 · declare

You write the file

A MONITOR.md next to your code: what to watch, and what it means. Versioned, in one place.

02 · it listens

A daemon watches

A lightweight local daemon watches deterministically, off to the side. No tokens spent while nothing changes.

03 · told

Your agent is told

Only when something actually changes — pre-digested, and delivered at a moment it can act on it.

·The anatomy — where a signal travels  (channels are the ear canal; monitors are the hearing)
The worldThings that change
file API repo doc CLI
TransportThe ear canalchannel · hook · CLI — carries a signal in. Content-agnostic; only moves what already pushes.
The monitorThe hearingDetects the change and knows what to listen for. Reaches the unpushable; filters the noise.
The receiverYour agentTold the moment it matters — pre-digested, at a turn boundary. Acts with its own tools.

04 · why it holds up

Built to survive contact with real work.

01

Monitor everything that matters — not just what you can afford to poll.

Polling taxes you on every tick, so you ration what you watch. Agent Monitors charges you only when something happens — so the ceiling lifts. One agent can stay aware of dozens of things at once.

02

Your agent gets the answer, not the homework.

A precise, pre-computed diff — it won't hallucinate or miss a change the way an agent comparing two big blobs does. Cheaper and more correct.

03

It doesn't forget while you're away.

A durable local daemon remembers what each session last saw. Restart your agent, update your tools — you won't miss what happened in the gap.

04

Your data stays on your machine.

The daemon is local; what it watches and remembers lives on your disk, not someone's cloud. Your internal Slack, your private repos, your docs.

05

One watch, many agents.

Twenty agents polling the same API is twenty loops fighting rate limits and locks. Point them at one monitor instead — one ingress, no contention.

Before 20 agents, 20 polling loops
APIrate limits · locks
After 20 agents, one watch
APIone ingress
06

One file beats a graveyard of shell scripts.

Declarative, versioned, in one place — not monitoring hacks scattered across script folders you'll never find again.

07

Write it once; it keeps working.

A monitor declares what to watch and what to do — never how the signal reaches your agent. As agent tools gain better ways to receive signals (channels and beyond), Agent Monitors adopts them and your existing monitors just work.

"Won't channels make this obsolete?"

No — the opposite. A channel is how a signal gets in; a monitor is what you're listening for. Most of what matters — a file, a CLI's output, a new blog post — never pushes itself anywhere; something has to go listen. Channels are the ear canal. Monitors are the hearing.

Works wherever your agent has hooks — Claude Code, Codex (CLI & desktop), and Cursor. One shared mechanism, not one vendor.

05 · quickstart

Your first five minutes.

  1. Install the CLInpm install -g @agentmonitors/cli.
  2. Scaffold a monitoragentmonitors init my-first-monitor writes a ready-to-edit MONITOR.md. Say what to watch and what it means.
  3. Run the daemonagentmonitors daemon run watches deterministically, off to the side, and delivers through your agent's hooks.
  4. Start your agent — the next time something changes, it hears about it. No re-asking.

Read the docs →