REA
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Workstation-local event bus: agents wait on or emit CI/pytest/Docker/filesystem events, no polling.
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
Install Python (uv) on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
One time only; it works for every server that needs Python (uv)
SettingsDeveloperEdit Config
{
"mcpServers": {
"waitbus": {
"command": "uvx",
"args": [
"waitbus"
]
}
}
}Use Waitbus and tell me what you can do for me, then show me one thing✓ If Claude says it is using Waitbus or shows a Waitbus tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect Waitbus yet
Waitbus runs on your computer, but ChatGPT can only connect servers that run on the web
A · Use an app that can connect Waitbus
B · Others in Developer tools that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code, with some setup first
Install Python (uv) on your computer first (one time)
One time only; it works for every server that needs Python (uv)
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --scope user waitbus -- uvx waitbusYou should see Waitbus listed as connected
Use Waitbus and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using Waitbus or shows a Waitbus tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
Install Python (uv) on your computer first (one time)
One time only; it works for every server that needs Python (uv)
Use Waitbus and tell me what you can do for me, then show me one thing✓ If Cursor says it is using Waitbus or shows a Waitbus tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
Install Python (uv) on your computer first (one time)
One time only; it works for every server that needs Python (uv)
Use Waitbus and tell me what you can do for me, then show me one thing✓ If VS Code says it is using Waitbus or shows a Waitbus tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Claude Code
claude mcp add --scope user waitbus -- uvx waitbusClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"waitbus": {
"command": "uvx",
"args": [
"waitbus"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"waitbus": {
"command": "uvx",
"args": [
"waitbus"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"waitbus": {
"type": "stdio",
"command": "uvx",
"args": [
"waitbus"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
pypi: waitbusBased on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 12, 2026
The registry name was verified with the GitHub account astrogilda, which owns the repo
Code last changed 3 days ago
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 3 days ago, and the latest version (0.2.0) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: REA, GitHub, Serena MCP: the IDE for your agent
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
One `wait` verb that blocks on, and queries across, every local source at once. When any agent, CI job, test, or container on your machine finishes or fails, every other tool on the box hears it: your Claude Code, your Cursor, your scripts, your CI. Clients that support server notifications get a push; the rest get one blocking `waitbus wait`. No waitbus cloud, no account, no telemetry; all processing stays on your machine.
Below: a Pydantic AI agent and a LangGraph agent, two *different* frameworks running as two separate OS processes, both wait on one local waitbus bus. One fails; the peer on the *other* framework, plus a live waitbus top view, react to the single failure broadcast.
Real frameworks and real waitbus subscribe/emit; the agents' LLMs are deterministic fakes and the failure is an injected event, so the clip runs fully offline. Reproduce the claim (not just the recording): run uvx waitbus demo for the gentler single-agent walk-through (no clone, no install), or, for the exact two-framework proof shown above, clone the repo and run uv run --group agent-recipes python -m examples.hero_swarm (Linux-verified; prints PROVEN: two DIFFERENT frameworks woke on ONE peer's failure ). Higher-quality MP4 at hero.mp4 . Maintainers re-render this recording from docs/demo/.waitbus-demo/ with make hero (dev-only; needs vhs, ttyd, tmux, and JetBrains Mono).
Try it now, no install:
uvx waitbus demoboots a real local bus and returns the instant an event lands, fully offline (~8 s).
waitbus is the workstation-local, cross-harness status bus that lets the tools on one machine hear each other. It does three things: ingest events, broadcast them, and replay them.
Ingest: a blocking wait/emit primitive lets any agent or script (across Cursor, Claude Code, and any tool on the box) wait on, or emit, events from five built-in sources (GitHub Actions CI, pytest sessions, Docker container lifecycle, filesystem changes, and Prometheus Alertmanager) plus any plugin source registered under the waitbus.sources.v1 entry-point group.
Broadcast: events land in SQLite the moment they arrive, and a broadcast daemon fans each row to every connected consumer within about a millisecond on the local socket (measured; see benchmarks/BENCHMARKING.md). Your agent blocks on waitbus wait (including across sources at once with --all-of/--first-of) with zero agent-side polling and idle CPU until the thing it cares about happens, and waitbus on -- runs a command the moment it does (in the CLI process, not the daemon, via execve with no shell; event values arrive as namespaced WAITBUS_* environment variables and a $WAITBUS_EVENT_FILE, never as argv, so event content cannot inject flags or overwrite PATH). Because every agent on the box shares that one bus, it doubles as a same-machine coordination backplane: one agent emits, the others wake.
Replay: a durable replay log (since=) means a consumer that was offline catches up instead of missing the moment, and waitbus events analyze queries what the bus stored. It is the local opt-in event-broadcast model the OS already uses (D-Bus signals, inotify, journald), with the replay log and a wait predicate added on top. (GitHub Actions was the first source wired, which is why the examples lead with CI, but waitbus is not CI-only.) The dependency stack is lean: typer, msgspec, platformdirs, pydantic-settings, prometheus_client, stamina, and the mcp SDK, with no heavy TUI or crypto dependency. The daemon idles at roughly 40 MB RSS measured (p50 on the benchmark host, most of it the CPython interpreter baseline) over a SQLite event store and an AF_UNIX SOCK_STREAM broadcast bus with length-prefix framing. Runs on Linux (systemd-user) and macOS (launchd).
This is for you if…
waitbus wait --all-of ...). Nothing else expresses this.This is NOT for you if…
gh run watch. It's zero-setup, and for that single job we don't beat it by enough to justify a daemon.inotifywait/entr. They're far faster on raw filesystem latency (our own benchmark says so) and need no daemon.request()/respond() facet exists, but a dedicated message queue serves that center of gravity better.uvx waitbus demo # one command, no install needed
waitbus demo allocates a temporary state directory and boots the broadcast daemon, then runs two phases. Phase 1, the point: an agent blocks on waitbus wait (the same egress engine the real command uses) with zero polling and idle CPU; the moment a github workflow_run event lands, the wait returns and the demo prints the real measured event-to-unblock latency. Phase 2, breadth: the same primitive delivers every source. pytest_session, docker_container, and fs_change events fan out to a live subscriber. Nothing on your machine outside the temporary directory is touched.
A recorded MP4 + GIF walkthrough lives at docs/demo/.waitbus-demo/demo.mp4 and demo.gif (the tape script is demo.tape). Re-rendering is reproducible via make demo from that directory (requires VHS ≥ 0.10.0, ttyd, and ffmpeg); the Makefile enforces the VHS version floor and refuses to render against an older binary that could silently change tape semantics.
The four events the demo emits are synthesized in-process. There
is no real HTTP listener, no real pytest run, no real Docker
daemon, no real watchdog. A banner before each emit makes this
explicit, mirroring the
waitbus statsoutput. To wire
waitbus against real GitHub webhook deliveries, follow the Quick
start below.
Prove the primitive in ~10 seconds -- one foreground daemon, one event, no service install. Install the CLI and bootstrap state:
uv tool install waitbus # or: pipx install waitbus
waitbus init # one-time setup: state dirs, SQLite schema, scaffolds
Then, in two terminals, watch a blocking wait return the instant an emit lands on the bus:
# Terminal A -- run the broadcast daemon in the foreground (Ctrl-C to stop):
waitbus broadcast serve
# Terminal B -- block on the next agent event, then emit one from the same shell:
waitbus wait --source agent --match 'fields.event_type="agent_message"' --timeout 30s & sleep 1 # let the backgrounded wait attach to the bus before we emit (a
waitbus emit \ --delivery-id demo-1 --source agent --event-type agent_message \ --owner local --repo local --received-at "$(date +%s)" \ --payload-json '{"hello":"world"}' --ingest-method manual wait # the backgrounded waitbus wait prints "matched on source=agent" and exits 0
That round trip -- block, emit, unblock, with zero polling -- is the whole primitive. Everything below wires it to real sources and, optionally, runs the daemons permanently under your service manager.
waitbus install-credentials github-webhook-secret # optional: only for GitHub-CI waiting (enables the webhook listener)
waitbus install-systemd # Linux: copy + enable the 8 systemd-user units waitbus install-launchd # macOS: copy + bootstrap the 4 LaunchAgent plists waitbus read-events watch # live tail of incoming events
install-systemd is Linux-only; install-launchd is macOS-only. Each command refuses to run on the other platform and points at the right one.
Once events are flowing, block any script or agent on the next matching event with waitbus wait -- any source, any field, exit code carries the verdict. The wait side is always zero-setup; the *event* it waits for still has to be produced by something (an opt-in emitter or a source watcher), so each example below notes what must be emitting for it to return:
# pytest: wait for any session to finish.
waitbus wait --source pytest --match 'fields.event_type="pytest_session"' --timeout 10m
waitbus source docker --help)waitbus wait --source docker --match 'fields.event_type="docker_container"' --timeout 30s
waitbus source fs --help)waitbus wait --source fs --match 'fields.event_type="fs_change"' --timeout 5m
waitbus wait --sha 7f3a1b2 --timeout 5m
If you have used watchexec or entr to re-run a command when a file changes, waitbus wait is the same idea with a wider net: it blocks on a file change too, but it can also wait on a CI run, a pytest session, a container exit, or another agent's event, and hands the verdict back through the exit code. The bus underneath also fans every one of those events out to every other tool on the box.
[![waitbus architecture: webhook and in-process sources write to a SQLite event store; a broadcast daemon fans each row out to the CLI, MCP server, and Python SDK, which can replay with since=](https://raw.githubusercontent.com/astrogilda/wa