You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**CTRL NODE**lets you **launch tasks on AI coding agents running on your own machine or VPS — from anywhere, through a web UI**.
21
+
**CTRL NODE**is a remote orchestration platform for AI coding agents. Install the Bridge binary on any machine — your laptop, a dev VPS, a CI box — and from [app.ctrlnode.ai](https://app.ctrlnode.ai) you can dispatch tasks, schedule recurring routines, and design multi-step workflows that trigger automatically, all without opening a single inbound port.
22
22
23
-
Write a task. Pick an agent. Hit run. The task lands on your machine — Claude edits your files, Copilot writes code, Gemini runs scripts — while you watch the output stream live from your browser, no matter where you are in the world.
24
-
25
-
Install the tiny Bridge binary on the machine where your agents live. It opens one outbound connection to CTRL NODE — no port-forwarding, no VPN, no firewall rules. Then from [app.ctrlnode.ai](https://app.ctrlnode.ai) you can launch tasks, chain them into pipelines, and track every run remotely.
26
-
27
-
Supports **Claude, Copilot, Gemini, Codex, Cursor, OpenClaw**, or any combination. Your files and workspaces **never leave your machine** — CTRL NODE only sees the output you stream.
23
+
Works with **Claude, Copilot, Gemini, Codex, Cursor, OpenClaw**, or any combination. Your code and workspaces **never leave your machine** — CTRL NODE only sees the output you explicitly stream back.
28
24
29
25
---
30
26
31
-
## Supported providers
27
+
## What's new in v2.1
32
28
33
-
The Bridge connects to any of the following agent backends — called **providers** — in the same process:
34
-
35
-
| Provider | Description | Guide |
36
-
|---|---|---|
37
-
|**Claude** (`claude-sdk`) | Anthropic Claude via `@anthropic-ai/claude-agent-sdk` or the `claude` CLI |[doc/claude-sdk.md](doc/claude-sdk.md)|
38
-
|**Copilot** (`copilot`) | GitHub Copilot via the ACP protocol |[doc/copilot.md](doc/copilot.md)|
39
-
|**Gemini** (`gemini`) | Google Gemini CLI via the ACP protocol |[doc/gemini.md](doc/gemini.md)|
40
-
|**Codex** (`codex`) | OpenAI Codex via `@openai/codex-sdk`|[doc/codex.md](doc/codex.md)|
41
-
|**Cursor** (`cursor`) | Cursor via `@cursor/sdk`|[doc/cursor.md](doc/cursor.md)|
You can run multiple providers in parallel from one Bridge process by listing them in `PROVIDERS`:
45
-
46
-
```env
47
-
PROVIDERS=claude-sdk,copilot,cursor
48
-
```
29
+
-**Routines** — schedule recurring tasks on a cron-style cadence; agents run automatically and report back through the same live stream
30
+
-**Multi-agent Workflows** — build multi-step agent workflows that start on a schedule, a webhook, or when another workflow completes
31
+
-**Model selection** — choose the exact AI model per agent (claude-sonnet-4-6, gpt-5.5, gemini-3.1-pro, …); the Bridge reports available models on connect and the UI surfaces them as a searchable drop-down
└── Agent workspaces (files and outputs — stay local)
71
55
```
72
56
73
-
The Bridge makes a single **outbound** WebSocket connection to CTRL NODE. No inbound ports, no VPN, no firewall changes — it works behind NAT, inside Docker, on a headless VPS. From the web UI you can dispatch tasks, design pipelines, and read live agent output as if you were sitting in front of the machine.
57
+
The Bridge makes a single **outbound** WebSocket connection. No inbound ports, no VPN, no firewall rules — it works behind NAT, inside Docker, on a headless server.
74
58
75
59
---
76
60
77
-
## Pipelines — chain tasks across agents
61
+
## Supported providers
78
62
79
-
Need more than one task? Design a pipeline: drop agent nodes on an infinite canvas, wire the output of one task into the input of the next, and deploy the whole graph in one click. Each node runs a task on whichever agent you choose — Claude for one step, Codex for the next — all triggered remotely from your browser.
Drag & drop nodes · branching & fan-out · cross-provider chains · live task stream per node.
72
+
Run multiple providers from one Bridge process:
82
73
83
-

74
+
```env
75
+
PROVIDERS=claude-sdk,copilot,cursor
76
+
```
84
77
85
78
---
86
79
87
-
## Kanban — launch tasks without a pipeline
88
-
89
-
Not every job needs a DAG. Write a task description, assign an agent, and drop it on the board. CTRL NODE sends it to your machine remotely and promotes the card through **BACKLOG → INBOX → ACTIVE → DONE** as the agent works and reports back in real time.
80
+
## Features
90
81
91
-

82
+
-**Remote task launch** — write a task in the web UI, run it on your machine from anywhere; no SSH, no VPN, no open ports
83
+
-**Routines** — schedule recurring agent tasks (cron-style); runs are tracked and streamed like any manual task
84
+
-**Multi-agent Workflows** — visual workflow designer; wire steps together, set a time or event trigger, deploy in one click
85
+
-**Live output stream** — watch the agent work line by line from your browser in real time
86
+
-**Outbound-only Bridge** — single lightweight binary, one outbound WebSocket; NAT, Docker, and headless VPS all work out of the box
87
+
-**Multi-provider** — Claude, Copilot, Gemini, Codex, Cursor, OpenClaw from one Bridge process; mix providers across steps
88
+
-**Model selection** — pick the exact model per agent; Bridge reports available models on connect
89
+
-**Kanban workflow** — BACKLOG → INBOX → ACTIVE → DONE with real-time agent feedback
90
+
-**Team & dashboard** — operators, roles, live activity and fleet overview
91
+
-**Memory** — persistent knowledge attached to each project, accessible to agents
92
+
-**Zero-storage by design** — workspaces stay on your side; CTRL NODE only sees what you stream explicitly
92
93
93
94
---
94
95
@@ -102,7 +103,7 @@ Create an account at [ctrlnode.ai](https://ctrlnode.ai). You'll get a **Pairing
102
103
103
104
### 2 — Install the Bridge
104
105
105
-
**Linux / macOS** — one-liner installer (detects platform and CPU automatically):
106
+
**Linux / macOS** — one-liner (detects platform and CPU automatically):
106
107
107
108
```bash
108
109
curl -fsSL https://raw.githubusercontent.com/ctrlnode-ai/ctrlnode/main/install.sh | sh
This downloads the right binary for your platform and installs it to `/usr/local/bin/` (Linux/macOS) or `%LOCALAPPDATA%\Programs\ctrlnode` (Windows, added to PATH automatically).
118
+
Installs to `/usr/local/bin/` (Linux/macOS) or `%LOCALAPPDATA%\Programs\ctrlnode` (Windows, added to PATH).
118
119
119
120
<details>
120
-
<summary>Manual download (no curl)</summary>
121
+
<summary>Manual download</summary>
121
122
122
123
| Platform | Binary |
123
124
|---|---|
124
-
| Linux (modern CPUs, AVX2) |`ctrlnode-bridge-linux-x64`|
125
-
| Linux (older CPUs, AVX only) |`ctrlnode-bridge-linux-x64-baseline`|
| Linux x64 (modern CPUs, AVX2) |`ctrlnode-bridge-linux-x64`|
126
+
| Linux x64 (older CPUs / cloud VMs) |`ctrlnode-bridge-linux-x64-baseline`|
127
+
| macOS Apple Silicon |`ctrlnode-bridge-darwin-arm64`|
128
+
| Windows x64 |`ctrlnode-bridge.exe`|
128
129
129
130
→ [Download from Releases](https://github.com/ctrlnode-ai/ctrlnode/releases)
130
131
131
-
Not sure which Linux binary? `grep flags /proc/cpuinfo | head -1 | grep -o "avx[^ ]*"` — `avx2` → standard, anything else → `-baseline`.
132
+
Not sure which Linux binary? Run `grep -o "avx[^ ]*" /proc/cpuinfo | head -1` — `avx2` → standard, anything else → `-baseline`.
132
133
133
134
</details>
134
135
135
136
---
136
137
137
138
### 3 — Run it
138
139
139
-
Just run the binary — it guides you through setup on first launch:
140
-
141
140
```
142
141
$ ./ctrlnode-bridge
143
142
@@ -152,38 +151,50 @@ Select providers to enable (Y = yes, Enter = no):
152
151
[ ] Enable Cursor? [y/N]:
153
152
```
154
153
155
-
Answer `y` for each provider you want to use — the Bridge will ask for the required credentials (API key, token, or binary path) right there in the terminal, save them to a local `.env` file, and connect. On subsequent runs it reads the saved config automatically.
154
+
The setup wizard asks for credentials once, saves them to a local `.env` file, and connects. On subsequent runs it reads the saved config automatically. You can also skip the wizard by setting environment variables directly — see the [per-provider guides](doc/) for the exact variable names.
156
155
157
-
You can also skip the wizard and pass everything as environment variables or in a `.env` file next to the binary (see the [per-provider guides](doc/providers/) for the exact variable names).
156
+
Your agents appear in the web UI automatically. Create a task, assign it, and watch it run live from your browser.
157
+
158
+
---
158
159
159
-
Open the CTRL NODE web UI — your agents appear automatically. Write a task, assign it, and watch it run live from your browser.
160
+
## Multi-agent Workflows — visual automation
160
161
161
-
See the per-provider guides in [`doc/`](doc/) for full setup instructions.
Design a workflow in the drag-and-drop canvas: drop agent nodes, wire the output of one step into the input of the next, set a **trigger** (schedule or event), and deploy. Each step runs on whichever agent and provider you choose — Claude for one step, Codex for the next.
165
+
166
+
- Branching and fan-out
167
+
- Cross-provider chains
168
+
- Time triggers and event triggers
169
+
- Live output stream per step
162
170
163
171
---
164
172
165
-
## Features
173
+
## Kanban — ship tasks like a product team
166
174
167
-
-**Remote task launch** — write a task in the web UI, run it on your machine from anywhere; no SSH, no VPN, no open ports
168
-
-**Live task output** — watch the agent work in real time, line by line, straight from your browser
169
-
-**Outbound-only Bridge** — one lightweight binary on your machine opens a single outbound connection; NAT, Docker, and headless VPS all work with zero network configuration
170
-
-**Multi-provider** — Claude, Copilot, Gemini, Codex, Cursor, OpenClaw all from one Bridge process
171
-
-**n8n-style pipelines** — visual graphs with agent nodes, cross-provider chains, deploy and live execution
172
-
-**Kanban workflow** — BACKLOG → INBOX → ACTIVE → DONE with real-time agent feedback
173
-
-**Team & dashboard** — operators, roles, activity and fleet overview in one place
174
-
-**Zero-storage by design** — workspaces stay on your side of the Bridge; CTRL NODE only sees what you stream explicitly
175
+

176
+
177
+
Write a task, assign an agent, and drop it on the board. CTRL NODE automatically moves it through **BACKLOG → INBOX → ACTIVE → DONE** as the Bridge dispatches it to your agents and they report back in real time.
178
+
179
+
---
180
+
181
+
## Routines — recurring scheduled tasks
182
+
183
+

184
+
185
+
Create a Routine to run a task on a repeating schedule (daily summary, nightly refactor, weekly report…). The agent receives the task exactly as if you sent it manually — same live stream, same output artifacts, same status tracking.
175
186
176
187
---
177
188
178
189
## What's in this repository
179
190
180
191
| Component | Path |
181
192
|---|---|
182
-
|**Bridge** (open source) |[`src/`](src/)|
193
+
|**Bridge source** (open source) |[`src/`](src/)|
183
194
|**Provider guides**|[`doc/`](doc/)|
184
195
|**Release notes**|[`Releases/`](Releases/)|
185
196
186
-
The Bridge source is in [`src/`](src/). See the [per-provider guides](doc/providers/) for environment variables and the [setup guides](doc/setup/) for deployment option
This release adds **model selection support** to the Bridge: every provider now reports the AI models it supports, and CtrlNode displays them as suggestions when you create or edit an agent — so you can pick the exact model without having to remember or type IDs manually.
4
+
5
+
---
6
+
7
+
### What's new
8
+
9
+
#### Model selection in agent setup
10
+
11
+
When the Bridge connects to CtrlNode, it queries each provider's available models and sends them to the platform. The agent creation and edit forms now show a **MODEL** field with a searchable drop-down populated from the live list.
12
+
13
+
- Start typing to filter — press Enter or click a suggestion to confirm.
14
+
- If no model is entered the provider uses its default.
15
+
- The list is scoped to the selected provider when one is detected; otherwise all known models across providers are shown.
16
+
17
+
#### Built-in model lists per provider
18
+
19
+
Each provider ships a curated fallback list used when the live API is unavailable or no API key is configured:
|`claude` / `claude-sdk`| Anthropic API (`/v1/models`) | dynamic list fetched at connect time |
27
+
|`claude-code`| Anthropic API (`/v1/models`) | dynamic list fetched at connect time |
28
+
|`codex`| OpenAI API (`/v1/models`) | dynamic list fetched at connect time |
29
+
30
+
When a live API call succeeds, the dynamic list replaces the fallback. `MultiProvider` merges and deduplicates lists from all sub-providers.
31
+
32
+
#### New `IProvider.listModels()` method
33
+
34
+
All providers now implement the optional `listModels(): Promise<string[]>` method on the `IProvider` interface. The Bridge calls this once after the handshake and sends the results to CtrlNode via a new WebSocket message:
CtrlNode stores the map, broadcasts it over SignalR to connected clients, and includes it in the `/api/system/bridge/status` REST response so the UI stays in sync even after a page refresh.
41
+
42
+
---
43
+
44
+
### Binaries
45
+
46
+
| File | Target |
47
+
|---|---|
48
+
|`ctrlnode-bridge.exe`| Windows x64 |
49
+
|`ctrlnode-bridge-linux-x64`| Linux x64 (requires AVX2) |
50
+
|`ctrlnode-bridge-linux-x64-baseline`| Linux x64 (no AVX2 — older CPUs / cloud VMs) |
51
+
|`ctrlnode-bridge-darwin-arm64`| macOS Apple Silicon |
52
+
53
+
---
54
+
55
+
### Upgrade
56
+
57
+
Replace the binary and restart the Bridge process. No configuration changes are required — the model list is populated automatically on connect.
0 commit comments