https://github.com/ofershap/agents-control-tower
Launch, watch, and command your Cursor agents from one terminal
https://github.com/ofershap/agents-control-tower
ai-agents cli cloud-agents cursor cursor-ai dashboard ink terminal tui typescript
Last synced: 2 months ago
JSON representation
Launch, watch, and command your Cursor agents from one terminal
- Host: GitHub
- URL: https://github.com/ofershap/agents-control-tower
- Owner: ofershap
- License: mit
- Created: 2026-03-04T07:59:32.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-04T13:13:27.000Z (3 months ago)
- Last Synced: 2026-03-04T14:30:27.255Z (3 months ago)
- Topics: ai-agents, cli, cloud-agents, cursor, cursor-ai, dashboard, ink, terminal, tui, typescript
- Language: TypeScript
- Size: 531 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
agents-control-tower
Your Cursor agents are running. Do you know what they're doing?
Five cloud agents in parallel. One is stuck. One finished and opened a PR.
One errored out 10 minutes ago and you didn't notice.
You're alt-tabbing between browser tabs trying to keep track.
Welcome aboard the control tower. One terminal. All your agents. Full control.
---
## The Tower Is Watching
You launched a Cursor cloud agent 20 minutes ago. Did it finish? Did it open a PR? Did it crash?
Your options right now:
- Open cursor.com, find the agents page, scroll, click, read
- Check your email for a notification that may or may not come
- Hope for the best
`agents-control-tower` is a retro terminal dashboard that connects to the Cursor Cloud Agents API and shows you everything in one screen. Launch new agents, send follow-up instructions, stop runaway agents, delete finished ones. All without leaving your terminal.
```bash
npx agents-control-tower
```
One command. The tower lights up.
**Features**
- Launch Cursor cloud agents from the terminal (repo, prompt, model)
- Send follow-up instructions to running agents without leaving the TUI
- Stop or delete agents from the dashboard
- See status at a glance: running (amber), done (with PR link), errors (red)
- No install needed — run with `npx` or install globally for the `control-tower` command
---
## The Dashboard
Running agents pulse amber. Done agents link to their PR. Errors glow red.
---
## What's Different
| | Cursor web dashboard | Conduit | SwarmClaw | agents-control-tower |
|---|---|---|---|---|
| Cursor-native | yes | no | no | yes |
| Terminal UI | no | yes | no | yes |
| Launch agents | no | no | partial | yes |
| Follow-up / stop / delete | no | no | no | yes |
| Local agent hooks | no | no | no | Phase 2 |
| Retro ASCII aesthetic | no | no | no | yes |
| One command install | n/a | yes | no | yes |
---
## What You Can Do
| Key | Action | |
|-----|--------|-|
| `n` | Launch a new cloud agent | Pick repo, write prompt, choose model |
| `f` | Send follow-up | Give a running agent new instructions |
| `s` | Stop an agent | Kill it mid-run |
| `d` | Delete an agent | Remove permanently |
| `o` | Open in browser | Jump to the PR or agent URL |
| `enter` | View details | Full conversation, metadata, status |
| `↑↓` / `jk` | Navigate | Move between agents |
| `r` | Refresh | Force sync with Cursor API |
| `c` | Reconfigure | Re-run setup wizard |
The dashboard polls every 5 seconds. Scroll through agents with arrow keys, view full agent messages with scrollable detail view.
---
## Install
Requires **Node 20+**. Published as **[agents-control-tower](https://www.npmjs.com/package/agents-control-tower)** on npm.
Run directly with npx (nothing to install):
```bash
npx agents-control-tower
```
Or install globally for a shorter command:
```bash
npm install -g agents-control-tower
control-tower
```
Both `agents-control-tower` and `control-tower` work after global install.
First run asks for your Cursor API key. Grab one from [cursor.com/dashboard - Integrations](https://cursor.com/dashboard?tab=integrations). Saved to `~/.agents-control-tower/config.json`.
Or pass it as an env var:
```bash
CURSOR_API_KEY=sk-... control-tower
```
---
## How It Works
| Source | What | How |
|--------|------|-----|
| Cursor Cloud API | List, launch, stop, delete agents. Read conversations | REST, polled every 5s |
| Cursor Hooks (coming) | Local IDE sessions, file edits, shell commands | File-based event stream |
```mermaid
graph LR
A[Cursor Cloud API] -->|poll 5s| B[State Store]
C[Cursor Hooks] -->|file watcher| B
B --> D[Ink TUI]
```
### Tech Stack
| | |
|---|---|
|
| TUI framework |
|
| Type safety |
|
| Runtime |
|
| Bundler |
|
| Tests |
---
## Screens
Launch wizard - 3 steps: pick repo (with fuzzy filter), write the task prompt, select model and launch.
Agent detail - repo, branch, PR link, the prompt you gave it, and the full agent response with scroll.
Follow-up - send new instructions to a running agent without leaving the terminal.
Stop / Delete - inline confirmation. Press `s` or `d`, then `y`.
---
## Keyboard Map
```
DASHBOARD DETAIL VIEW
────────────────────────── ──────────────────────────
n launch new agent esc back to dashboard
↑ / k move up f send follow-up
↓ / j move down s stop agent
enter open detail d delete agent
s stop selected o open PR / URL
d delete selected ↑↓ scroll message
r force refresh
q quit LAUNCH FLOW
──────────────────────────
GLOBAL ↑↓ navigate options
────────────────────────── / filter repos
ctrl+c quit immediately enter select / confirm
c reconfigure esc cancel / go back
```
---
## Contributing
Contributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup.
---
## Author
[](https://gitshow.dev/ofershap)
[](https://linkedin.com/in/ofershap)
[](https://github.com/ofershap)
---
If this helped you, [star the repo](https://github.com/ofershap/agents-control-tower), [open an issue](https://github.com/ofershap/agents-control-tower/issues) if something breaks.
---
README built with [README Builder](https://ofershap.github.io/readme-builder/)
## License
[MIT](LICENSE) © [Ofer Shapira](https://github.com/ofershap)