Skip to content

Commit 5152684

Browse files
ctrlnode-aiYour Name
andauthored
Development (#8)
Co-authored-by: Your Name <you@example.com>
1 parent 61dd97a commit 5152684

32 files changed

Lines changed: 842 additions & 146 deletions

README.md

Lines changed: 75 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
<img alt="CTRL NODE" src="assets/logo-dark.png" width="420">
77
</picture>
88

9-
### Launch tasks on Claude, Copilot, Gemini, Codex, Cursor or OpenClaw — remotely, from anywhere.
9+
### Orchestrate AI coding agents — tasks, routines, and workflows — from anywhere.
1010

1111
[![License: ELv2](https://img.shields.io/badge/License-Elastic_v2-007EC6?style=flat-square)](LICENSE)
12-
[![Releases](https://img.shields.io/github/v/release/ctrlnode-ai/ctrlnode?style=flat-square&label=release)](https://github.com/ctrlnode-ai/ctrlnode/releases)
12+
[![Release](https://img.shields.io/badge/release-v2.1-1aff8c?style=flat-square)](https://github.com/ctrlnode-ai/ctrlnode/releases)
1313
[![Website](https://img.shields.io/badge/ctrlnode.ai-0A0A23?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJhMTAgMTAgMCAxIDAgMCAyMEExMCAxMCAwIDAgMCAxMiAyeiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=&logoColor=white)](https://ctrlnode.ai)
1414

1515
[Website](https://ctrlnode.ai) · [Releases](https://github.com/ctrlnode-ai/ctrlnode/releases) · [Bridge setup](src/bridge/README.md)
@@ -18,34 +18,17 @@
1818

1919
---
2020

21-
**CTRL NODE** lets you **launch tasks on AI coding agents running on your own machine or VPSfrom 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.
2222

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.
2824

2925
---
3026

31-
## Supported providers
27+
## What's new in v2.1
3228

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) |
42-
| **OpenClaw** (`openclaw`) | OpenClaw agent runtime (HTTP gateway) | [doc/openclaw.md](doc/openclaw.md) |
43-
44-
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
4932

5033
---
5134

@@ -58,37 +41,55 @@ PROVIDERS=claude-sdk,copilot,cursor
5841
│ https://app.ctrlnode.ai
5942
6043
CTRL NODE control plane ← hosted UI & orchestration
61-
├── Task management UI
62-
├── Pipeline orchestrator
63-
└── Team collaboration
44+
├── Task & Kanban board
45+
├── Routines scheduler
46+
├── Workflow designer (trigger → steps → done)
47+
└── Team, memory & activity dashboard
6448
6549
│ WebSocket (outbound from Bridge — no open ports needed)
6650
6751
Your machine / VPS
68-
├── CTRL NODE Bridge ← lightweight client you run (open source)
52+
├── CTRL NODE Bridge ← lightweight binary you run (open source)
6953
├── Claude / Copilot / Gemini / Codex / Cursor / OpenClaw
70-
└── Agent workspaces (task files, outputs — stay local)
54+
└── Agent workspaces (files and outputs — stay local)
7155
```
7256

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.
7458

7559
---
7660

77-
## Pipelines — chain tasks across agents
61+
## Supported providers
7862

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.
63+
| Provider | Backend | Key env var |
64+
|---|---|---|
65+
| `claude` / `claude-sdk` | Anthropic `@anthropic-ai/claude-agent-sdk` | `ANTHROPIC_API_KEY` |
66+
| `copilot` | GitHub Copilot (ACP protocol) | *(Copilot extension)* |
67+
| `gemini` | Google Gemini CLI (ACP protocol) | `GEMINI_API_KEY` |
68+
| `codex` | OpenAI `@openai/codex-sdk` | `CODEX_API_KEY` |
69+
| `cursor` | Cursor `@cursor/sdk` | `CURSOR_API_KEY` |
70+
| `openclaw` | OpenClaw HTTP gateway | `OPENCLAW_GATEWAY_TOKEN` |
8071

81-
Drag & drop nodes · branching & fan-out · cross-provider chains · live task stream per node.
72+
Run multiple providers from one Bridge process:
8273

83-
![Pipelines section from the CTRL NODE marketing site — #pipelines](assets/pipelines.png)
74+
```env
75+
PROVIDERS=claude-sdk,copilot,cursor
76+
```
8477

8578
---
8679

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
9081

91-
![Kanban section from the CTRL NODE marketing site — #kanban](assets/kanban.png)
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
9293

9394
---
9495

@@ -102,7 +103,7 @@ Create an account at [ctrlnode.ai](https://ctrlnode.ai). You'll get a **Pairing
102103

103104
### 2 — Install the Bridge
104105

105-
**Linux / macOS** — one-liner installer (detects platform and CPU automatically):
106+
**Linux / macOS** — one-liner (detects platform and CPU automatically):
106107

107108
```bash
108109
curl -fsSL https://raw.githubusercontent.com/ctrlnode-ai/ctrlnode/main/install.sh | sh
@@ -114,30 +115,28 @@ curl -fsSL https://raw.githubusercontent.com/ctrlnode-ai/ctrlnode/main/install.s
114115
irm https://raw.githubusercontent.com/ctrlnode-ai/ctrlnode/main/install.ps1 | iex
115116
```
116117

117-
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).
118119

119120
<details>
120-
<summary>Manual download (no curl)</summary>
121+
<summary>Manual download</summary>
121122

122123
| Platform | Binary |
123124
|---|---|
124-
| Linux (modern CPUs, AVX2) | `ctrlnode-bridge-linux-x64` |
125-
| Linux (older CPUs, AVX only) | `ctrlnode-bridge-linux-x64-baseline` |
126-
| macOS (Apple Silicon) | `ctrlnode-bridge-darwin-arm64` |
127-
| Windows | `ctrlnode-bridge.exe` |
125+
| 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` |
128129

129130
[Download from Releases](https://github.com/ctrlnode-ai/ctrlnode/releases)
130131

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`.
132133

133134
</details>
134135

135136
---
136137

137138
### 3 — Run it
138139

139-
Just run the binary — it guides you through setup on first launch:
140-
141140
```
142141
$ ./ctrlnode-bridge
143142
@@ -152,38 +151,50 @@ Select providers to enable (Y = yes, Enter = no):
152151
[ ] Enable Cursor? [y/N]:
153152
```
154153

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.
156155

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+
---
158159

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
160161

161-
See the per-provider guides in [`doc/`](doc/) for full setup instructions.
162+
![Multi-agent Workflows canvas](assets/workflows.png)
163+
164+
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
162170

163171
---
164172

165-
## Features
173+
## Kanban — ship tasks like a product team
166174

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+
![Kanban board](assets/kanban.png)
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+
![Routines calendar view](assets/routines.png)
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.
175186

176187
---
177188

178189
## What's in this repository
179190

180191
| Component | Path |
181192
|---|---|
182-
| **Bridge** (open source) | [`src/`](src/) |
193+
| **Bridge source** (open source) | [`src/`](src/) |
183194
| **Provider guides** | [`doc/`](doc/) |
184195
| **Release notes** | [`Releases/`](Releases/) |
185196

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
197+
---
187198

188199
## Provider guides
189200

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
## CtrlNode Bridge 2026.2.1 Release Notes
2+
3+
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:
20+
21+
| Provider | Source | Notable models |
22+
|---|---|---|
23+
| `copilot` | GitHub Copilot docs | claude-sonnet-4-6, gemini-2.5-pro, gpt-5.5, gpt-5.3-codex, … |
24+
| `gemini` | Google AI Gemini API docs | gemini-2.5-pro/flash/flash-lite, gemini-3.1-flash-lite, gemini-3.1-pro-preview |
25+
| `cursor` | Cursor pricing docs | claude-opus-4-7, gpt-5.5, grok-4.3, grok-4.20, kimi-k2.5, composer-2.5, … |
26+
| `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:
35+
36+
```json
37+
{ "action": "available_models", "models": { "copilot": ["claude-sonnet-4-6", ...], "cursor": [...] } }
38+
```
39+
40+
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

Comments
 (0)