— The awareness layer for AI agents

Your agent already knows.

Agentenna gives agents a live, token-bounded view of what's happening — messages, logs, alerts, tickets — rendered straight into context, refreshed every turn. Inspect the details, rewind the history, wake up when it matters.

pip install agentennaStar on GitHub
Read the manifesto
Signal activityLive
-24h-18h-12h-6hnow
Channels
  • prod.errors12
  • ci.builds5
  • terminal.logs28
  • support.urgent3
Recent events
  • Billing worker failed processing webhookprod.errors · -2m
  • deploy.prod rolled_backstates · -2m
  • task opened: investigate checkout 5xxtasks · -11m
Live demo · Two terminals00:15 / 00:16
Terminal 1 · Producer
$ agentenna emit prod.errors "Checkout 5xx rate jumped to 12%" --severity high
emitted to prod.errors
Terminal 2 · Claude Code (with agentenna)
$ agentenna install claude-code
Installed agentenna plugin for Claude Code
$ claude
> what's up with checkout?
I'll check the awareness feed for checkout.
<agentenna-awareness slot="agentenna:events">
Events · New (1)
●NEW  Checkout 5xx rate jumped to 12%14:31:58
prod.errors · checkout_api · high
Other events (2)
Payment timeouts elevated14:25:11
DB slow query rate high14:12:07
States (2)
checkout.incidentactive14:30:02
deploy.rolloutok14:28:44
use inspect(id) for details · rewind for history
Checkout is experiencing elevated 5xx errors — current rate is 12%. This started ~2 minutes ago and an incident is active.
I can pull the details or recent related events if you want.
It already knew.Auto-loop · Muted

One bounded surface

Events, states, and tasks render into a single named slot, replaced every turn. Your agent sees what changed — never an unbounded feed.

Emit once, every agent knows

A channel is a shared bus. Terminals, services, and webhooks emit; every reader tunes in and keeps its own position.

Seeing is not waking

Most signals simply appear on the next turn. Attach a trigger to the few that can't wait, and a receiver wakes up.

Channels

Emit once. Every agent knows.

A channel is a named shared bus, not point-to-point delivery. Many producers emit to it, many readers tune in — and each reader keeps its own position. One reader moving forward never hides the signal from another.

One emit can update all your running agents — without N copies of the same webhook glue.

Quickstart

Emit → Station → Reader.

Python 3.12+, one process, one SQLite file. Everything in the repo is the whole product — no account, no telemetry, and your feeds never leave your box.

Terminal
pip install "agentenna[station]"

# start a Station — stores signals, serves the API
agentenna serve --db .agentenna/agentenna.db --port 1234

# emit a fact from anywhere
agentenna emit prod.errors "Checkout 5xx rate jumped to 12%" \
    --kind fault --severity crit --db .agentenna/agentenna.db

# connect a reader
agentenna install claude-code

Works with Claude Code hooks, any MCP host, or your own agent loop. API cheatsheet · Host guides · Examples