conductor-oss-native-linux-x64 0.21.2 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -169
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
### The local-first control plane for AI coding agents
|
|
6
6
|
|
|
7
|
-
**One command. Markdown-native.
|
|
7
|
+
**One command. Markdown-native. Real terminals.**
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/conductor-oss)
|
|
10
10
|
[](https://github.com/charannyk06/conductor-oss/actions/workflows/ci.yml)
|
|
@@ -16,22 +16,22 @@
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
Conductor OSS is a local-first orchestration
|
|
19
|
+
Conductor OSS is a local-first orchestration layer for AI coding agents. It turns Markdown kanban boards into dispatchable work, launches installed coding CLIs in isolated git worktrees, and gives you a browser dashboard for live terminal sessions, diffs, previews, and recovery workflows.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
By default, everything runs on your machine. Conductor keeps board state in Markdown, stores runtime metadata in SQLite, and leaves authentication and billing to the upstream agent CLIs.
|
|
22
22
|
|
|
23
23
|
## Why Conductor
|
|
24
24
|
|
|
25
|
-
Running one agent in one terminal works
|
|
25
|
+
Running one agent in one terminal works for one task. Conductor is for the next step: multiple tasks, multiple repos, multiple agents, shared queues, session recovery, live review, and one dashboard to coordinate all of it.
|
|
26
26
|
|
|
27
27
|
Conductor adds:
|
|
28
28
|
|
|
29
|
-
- **
|
|
30
|
-
- **Dispatch**
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
29
|
+
- **Markdown-native planning** with `CONDUCTOR.md` boards that stay readable in Obsidian or any editor
|
|
30
|
+
- **Dispatch orchestration** that turns tagged cards into queued agent work
|
|
31
|
+
- **Worktree isolation** so concurrent sessions do not trample the same branch
|
|
32
|
+
- **Native terminal sessions** over ttyd-backed PTYs instead of synthetic chat shells
|
|
33
|
+
- **Operational visibility** through session feeds, diffs, previews, health views, and cleanup tools
|
|
34
|
+
- **Recovery loops** with retry, restore, reviewer feedback, and session health tracking
|
|
35
35
|
|
|
36
36
|
## Quick Start
|
|
37
37
|
|
|
@@ -47,13 +47,11 @@ Conductor adds:
|
|
|
47
47
|
npx conductor-oss@latest
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Running the package with no arguments defaults to `start --open`.
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
For source checkouts, `bun run dev:full` launches the same stack with dashboard defaulting to `3000` in this repo.
|
|
52
|
+
- Primary launcher URL: `http://127.0.0.1:4747`
|
|
53
|
+
- Launcher-managed Rust backend: `http://127.0.0.1:4748` by default
|
|
54
|
+
- The native Rust `conductor start` binary uses `4747` unless you override `--port`
|
|
57
55
|
|
|
58
56
|
### Initialize an existing repo
|
|
59
57
|
|
|
@@ -62,7 +60,7 @@ npx conductor-oss@latest init
|
|
|
62
60
|
npx conductor-oss@latest start --workspace .
|
|
63
61
|
```
|
|
64
62
|
|
|
65
|
-
|
|
63
|
+
`init` scaffolds `conductor.yaml` and `CONDUCTOR.md`. The SQLite database at `.conductor/conductor.db` is created the first time the backend starts.
|
|
66
64
|
|
|
67
65
|
### Global install
|
|
68
66
|
|
|
@@ -75,7 +73,7 @@ The launcher registers three aliases: `conductor-oss`, `conductor`, and `co`.
|
|
|
75
73
|
|
|
76
74
|
## Supported Agents
|
|
77
75
|
|
|
78
|
-
Conductor ships
|
|
76
|
+
Conductor ships adapters for the major coding CLIs it knows how to discover, launch, and monitor today.
|
|
79
77
|
|
|
80
78
|
| Agent | CLI |
|
|
81
79
|
|-------|-----|
|
|
@@ -87,14 +85,12 @@ Conductor ships with adapters for 10 coding agent CLIs. Each adapter handles bin
|
|
|
87
85
|
| Cursor Agent | `cursor-agent` |
|
|
88
86
|
| OpenCode | `opencode` |
|
|
89
87
|
| Droid | `droid` |
|
|
90
|
-
| GitHub Copilot | `gh copilot` |
|
|
88
|
+
| GitHub Copilot | `gh copilot` / `copilot` |
|
|
91
89
|
| CCR | `ccr` |
|
|
92
90
|
|
|
93
|
-
Agents appear in the dashboard picker based on what is installed and authenticated on your machine.
|
|
94
|
-
|
|
95
91
|
## Native Terminal Experience
|
|
96
92
|
|
|
97
|
-
Conductor launches agents into their real terminal UIs
|
|
93
|
+
Conductor launches agents into their real terminal UIs. Claude Code runs as Claude Code. Codex runs as Codex. Interactive sessions are ttyd-backed PTYs, so reconnects, resize events, and terminal restore behave like a real terminal session rather than a browser chat imitation.
|
|
98
94
|
|
|
99
95
|
<div align="center">
|
|
100
96
|
|
|
@@ -112,26 +108,25 @@ Conductor launches agents into their real terminal UIs — not a synthetic chat
|
|
|
112
108
|
|
|
113
109
|
### Task Lifecycle
|
|
114
110
|
|
|
115
|
-
```
|
|
116
|
-
Inbox
|
|
111
|
+
```text
|
|
112
|
+
Inbox -> Ready to Dispatch -> Dispatching -> In Progress -> Review -> Done
|
|
117
113
|
```
|
|
118
114
|
|
|
119
|
-
1.
|
|
120
|
-
2.
|
|
121
|
-
3.
|
|
122
|
-
4.
|
|
123
|
-
5.
|
|
124
|
-
6.
|
|
125
|
-
7. **Iterate** — retry, restore, send feedback, or archive
|
|
115
|
+
1. Create tasks in `CONDUCTOR.md`.
|
|
116
|
+
2. Move work into `Ready to Dispatch`.
|
|
117
|
+
3. Conductor selects an agent, prepares the workspace, and launches a session.
|
|
118
|
+
4. The agent runs in an isolated git worktree with a compiled task prompt and any context attachments.
|
|
119
|
+
5. You monitor progress from the dashboard and the live terminal.
|
|
120
|
+
6. You review diffs, preview local apps, send feedback, retry, restore, or clean up.
|
|
126
121
|
|
|
127
122
|
### Dashboard Surfaces
|
|
128
123
|
|
|
129
|
-
Each session page
|
|
124
|
+
Each session page includes:
|
|
130
125
|
|
|
131
|
-
- **Terminal**
|
|
132
|
-
- **Overview**
|
|
133
|
-
- **Preview**
|
|
134
|
-
- **Diff**
|
|
126
|
+
- **Terminal** for the live interactive PTY session
|
|
127
|
+
- **Overview** for normalized session state, metadata, and recovery actions
|
|
128
|
+
- **Preview** for project dev-server URLs
|
|
129
|
+
- **Diff** for file changes and workspace inspection
|
|
135
130
|
|
|
136
131
|
<div align="center">
|
|
137
132
|
|
|
@@ -143,98 +138,60 @@ Each session page provides:
|
|
|
143
138
|
|
|
144
139
|
## CLI Reference
|
|
145
140
|
|
|
146
|
-
The npm launcher (`co`) is the primary CLI.
|
|
141
|
+
The npm launcher (`co`) is the primary user-facing CLI.
|
|
147
142
|
|
|
148
143
|
| Command | Description |
|
|
149
144
|
|---------|-------------|
|
|
150
|
-
| `co start` | Start the
|
|
145
|
+
| `co start` | Start the dashboard and Rust backend |
|
|
151
146
|
| `co init` | Scaffold `conductor.yaml` and `CONDUCTOR.md` |
|
|
152
|
-
| `co setup` | Guided first-run
|
|
153
|
-
| `co doctor` | Diagnose backend and runtime issues |
|
|
147
|
+
| `co setup` | Guided first-run setup for agents, editors, and local tooling |
|
|
154
148
|
| `co spawn` | Create a new session |
|
|
155
|
-
| `co list` | List
|
|
156
|
-
| `co status` |
|
|
157
|
-
| `co send` | Send a
|
|
158
|
-
| `co feedback` | Send reviewer feedback
|
|
159
|
-
| `co retry` | Create a new attempt from
|
|
149
|
+
| `co list` | List sessions |
|
|
150
|
+
| `co status` | Show the current attention-oriented status board |
|
|
151
|
+
| `co send` | Send a message to a running session |
|
|
152
|
+
| `co feedback` | Send reviewer feedback and requeue a session |
|
|
153
|
+
| `co retry` | Create a new attempt from an existing task or session |
|
|
160
154
|
| `co restore` | Restore an exited session |
|
|
161
155
|
| `co kill` | Terminate a session |
|
|
162
156
|
| `co cleanup` | Reclaim resources from completed sessions |
|
|
157
|
+
| `co doctor` | Inspect backend and session health |
|
|
163
158
|
| `co dashboard` | Open the dashboard in a browser |
|
|
159
|
+
| `co task show <taskId>` | Inspect task attempts, parent, and child tasks |
|
|
164
160
|
| `co mcp-server` | Run Conductor as an MCP server over stdio |
|
|
165
161
|
|
|
166
|
-
A lower-level Rust CLI also exists
|
|
162
|
+
A lower-level Rust CLI also exists for development and internal flows. That native binary is where the current `bridge` subcommands live.
|
|
167
163
|
|
|
168
|
-
##
|
|
164
|
+
## Remote Access and Bridge
|
|
169
165
|
|
|
170
|
-
Conductor
|
|
166
|
+
Conductor is local-first, but the current codebase includes several remote and access-control paths:
|
|
171
167
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
| `.conductor/conductor.db` | SQLite database for sessions, metadata, and runtime state |
|
|
168
|
+
- **Private remote access** via a Tailscale link managed from the dashboard
|
|
169
|
+
- **Verified edge auth** via Cloudflare Access JWT validation and role bindings
|
|
170
|
+
- **Optional Clerk integration** for hosted sign-in flows in the web app
|
|
171
|
+
- **Bridge and relay components** for paired-device flows and relay-backed terminals
|
|
177
172
|
|
|
178
|
-
|
|
173
|
+
What is no longer supported:
|
|
179
174
|
|
|
180
|
-
-
|
|
181
|
-
-
|
|
175
|
+
- Public share-link remote control without an identity layer
|
|
176
|
+
- The old tmux-first terminal model
|
|
182
177
|
|
|
183
|
-
|
|
178
|
+
The user-facing paired-device flow is built around the companion `conductor-bridge` binary and the dashboard bridge pages. The repo also contains `bridge-cmd/`, `crates/conductor-relay/`, and native Rust `conductor bridge ...` commands for lower-level bridge and relay development.
|
|
184
179
|
|
|
185
|
-
|
|
186
|
-
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
187
|
-
│ npm launcher │ │ Next.js 16 UI │ │ Rust backend │
|
|
188
|
-
│ packages/cli │ │ packages/web │ │ conductor- │
|
|
189
|
-
│ │ │ │ │ server │
|
|
190
|
-
│ start, spawn, │───▶│ Dashboard, │◀──▶│ HTTP + SSE + │
|
|
191
|
-
│ init, doctor │ │ Terminal, │ │ WebSocket │
|
|
192
|
-
│ │ │ Diff, Preview │ │ │
|
|
193
|
-
└─────────────────┘ └──────────────────┘ └────────┬────────┘
|
|
194
|
-
│
|
|
195
|
-
┌───────────────────────────────────┤
|
|
196
|
-
│ │
|
|
197
|
-
┌────────▼────────┐ ┌──────────▼──────────┐
|
|
198
|
-
│ conductor-core │ │ conductor-executors │
|
|
199
|
-
│ Types, config, │ │ 10 agent adapters, │
|
|
200
|
-
│ board parsing │ │ process management │
|
|
201
|
-
└─────────────────┘ └──────────────────────┘
|
|
202
|
-
│ │
|
|
203
|
-
┌────────▼────────┐ ┌──────────▼──────────┐
|
|
204
|
-
│ conductor-db │ │ conductor-git │
|
|
205
|
-
│ SQLite via sqlx │ │ Worktree isolation │
|
|
206
|
-
└─────────────────┘ └──────────────────────┘
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### Rust Crates
|
|
210
|
-
|
|
211
|
-
| Crate | Purpose |
|
|
212
|
-
|-------|---------|
|
|
213
|
-
| `conductor-server` | Axum HTTP server — 22 route modules, session manager, PTY runtime, SSE streaming |
|
|
214
|
-
| `conductor-core` | Shared types, board parser, configuration, task and session models |
|
|
215
|
-
| `conductor-executors` | 10 agent adapters — binary detection, launch commands, prompt delivery |
|
|
216
|
-
| `conductor-db` | SQLite persistence via sqlx with compile-time checked queries |
|
|
217
|
-
| `conductor-git` | Git operations and worktree lifecycle management |
|
|
218
|
-
| `conductor-watcher` | Filesystem watcher for `CONDUCTOR.md` changes |
|
|
219
|
-
| `conductor-cli` | Low-level Rust CLI binary |
|
|
180
|
+
## Local Files and Runtime Artifacts
|
|
220
181
|
|
|
221
|
-
|
|
182
|
+
Conductor uses a small set of local files:
|
|
222
183
|
|
|
223
|
-
|
|
|
224
|
-
|
|
225
|
-
| `
|
|
226
|
-
| `
|
|
227
|
-
|
|
|
184
|
+
| File | Purpose |
|
|
185
|
+
|------|---------|
|
|
186
|
+
| `conductor.yaml` | Workspace config, project definitions, access rules, and preferences |
|
|
187
|
+
| `CONDUCTOR.md` | Markdown kanban board for planning and dispatch |
|
|
188
|
+
| `.conductor/conductor.db` | SQLite state for sessions, attempts, metadata, and runtime coordination |
|
|
228
189
|
|
|
229
|
-
|
|
190
|
+
Common runtime artifacts:
|
|
230
191
|
|
|
231
|
-
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
- **Agent-agnostic** — Conductor orchestrates; each agent keeps its own auth and billing
|
|
235
|
-
- **Markdown-native** — boards live in `CONDUCTOR.md`, readable in any editor or Obsidian
|
|
236
|
-
- **Worktree isolation** — each session gets its own git worktree to prevent conflicts
|
|
237
|
-
- **TTYD-first streaming** — real `ttyd` sessions with backend-authenticated relay and restore-aware capture
|
|
192
|
+
- `.conductor/rust-backend/detached/` for restore data and detached PTY runtime state
|
|
193
|
+
- `attachments/` for uploaded files and generated session artifacts
|
|
194
|
+
- `~/.conductor/` for launcher runtime state and optional bridge token/state files
|
|
238
195
|
|
|
239
196
|
## Develop From Source
|
|
240
197
|
|
|
@@ -254,69 +211,64 @@ bun install
|
|
|
254
211
|
### Commands
|
|
255
212
|
|
|
256
213
|
```bash
|
|
257
|
-
bun run dev:full # Dashboard
|
|
214
|
+
bun run dev:full # Dashboard on 3000 + Rust backend on 4749
|
|
258
215
|
bun run dev # Dashboard only
|
|
259
|
-
bun run dev:backend # Backend only
|
|
260
|
-
bun run build #
|
|
216
|
+
bun run dev:backend # Backend only through the launcher path
|
|
217
|
+
bun run build # Production build
|
|
261
218
|
bun run typecheck # TypeScript type checking
|
|
262
219
|
|
|
263
|
-
export CONDUCTOR_DEV_DASHBOARD_PORT=3000
|
|
220
|
+
export CONDUCTOR_DEV_DASHBOARD_PORT=3000 # optional
|
|
264
221
|
export CONDUCTOR_DEV_BACKEND_PORT=4749 # optional
|
|
265
222
|
|
|
266
|
-
cargo test --workspace
|
|
267
|
-
cargo clippy --workspace -- -D warnings
|
|
223
|
+
cargo test --workspace
|
|
224
|
+
cargo clippy --workspace -- -D warnings
|
|
268
225
|
```
|
|
269
226
|
|
|
270
|
-
|
|
271
|
-
# If you want only the frontend on port 3000 and backend separately:
|
|
272
|
-
bun run --cwd packages/web dev
|
|
273
|
-
cargo run --bin conductor -- --workspace . start --port 4749
|
|
274
|
-
```
|
|
227
|
+
### Port Reference
|
|
275
228
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
|
279
|
-
|
|
280
|
-
|
|
|
281
|
-
| Dashboard (prod) | `http://127.0.0.1:4747` |
|
|
282
|
-
| Rust backend | `http://127.0.0.1:4749` |
|
|
229
|
+
| Scenario | Dashboard | Rust backend |
|
|
230
|
+
|----------|-----------|--------------|
|
|
231
|
+
| `co start` launcher defaults | `4747` | `4748` |
|
|
232
|
+
| Source dev scripts in this repo | `3000` | `4749` |
|
|
233
|
+
| Native `cargo run --bin conductor -- start` | n/a | `4747` |
|
|
283
234
|
|
|
284
235
|
## Project Structure
|
|
285
236
|
|
|
286
|
-
```
|
|
237
|
+
```text
|
|
287
238
|
conductor-oss/
|
|
239
|
+
├── bridge-cmd/ # Companion bridge binary used by the pairing flow
|
|
288
240
|
├── crates/
|
|
289
|
-
│ ├── conductor-
|
|
290
|
-
│ ├── conductor-core/
|
|
291
|
-
│ ├── conductor-
|
|
292
|
-
│ ├── conductor-
|
|
293
|
-
│ ├── conductor-git/
|
|
294
|
-
│ ├── conductor-
|
|
295
|
-
│ ├── conductor-
|
|
296
|
-
│
|
|
241
|
+
│ ├── conductor-cli/ # Native Rust CLI
|
|
242
|
+
│ ├── conductor-core/ # Config, board parsing, task/session models, scaffolding
|
|
243
|
+
│ ├── conductor-db/ # SQLite persistence
|
|
244
|
+
│ ├── conductor-executors/ # Agent adapters and process management
|
|
245
|
+
│ ├── conductor-git/ # Git and worktree operations
|
|
246
|
+
│ ├── conductor-relay/ # Relay server for bridge and remote terminal flows
|
|
247
|
+
│ ├── conductor-server/ # Axum server, routes, runtime state, SSE
|
|
248
|
+
│ ├── conductor-types/ # Shared transport and bridge protocol types
|
|
249
|
+
│ ├── conductor-watcher/ # Filesystem watching
|
|
250
|
+
│ └── notify-rust/ # Desktop notification support
|
|
297
251
|
├── packages/
|
|
298
|
-
│ ├── cli/
|
|
299
|
-
│ ├──
|
|
300
|
-
│ └──
|
|
252
|
+
│ ├── cli/ # npm launcher
|
|
253
|
+
│ ├── core/ # Shared TypeScript types and schemas
|
|
254
|
+
│ └── web/ # Next.js dashboard
|
|
301
255
|
├── docs/
|
|
302
|
-
│ ├──
|
|
303
|
-
│ ├──
|
|
304
|
-
│ └── terminal-*.md
|
|
305
|
-
├── .
|
|
306
|
-
├──
|
|
307
|
-
├──
|
|
308
|
-
|
|
309
|
-
├── CONDUCTOR.md # Kanban board (user-created)
|
|
310
|
-
└── LICENSE # MIT
|
|
256
|
+
│ ├── demo/ # Workflow demos
|
|
257
|
+
│ ├── screenshots/ # Dashboard and terminal screenshots
|
|
258
|
+
│ └── terminal-*.md # Terminal protocol and QA docs
|
|
259
|
+
├── Cargo.toml # Rust workspace
|
|
260
|
+
├── package.json # Bun workspace
|
|
261
|
+
├── conductor.yaml # Workspace config (user-created)
|
|
262
|
+
└── CONDUCTOR.md # Board file (user-created)
|
|
311
263
|
```
|
|
312
264
|
|
|
313
265
|
## Known Constraints
|
|
314
266
|
|
|
315
|
-
-
|
|
316
|
-
- GitHub-
|
|
317
|
-
- Preview tooling
|
|
318
|
-
-
|
|
319
|
-
-
|
|
267
|
+
- Output quality depends on the upstream agent CLI you install; Conductor orchestrates it, not its model behavior
|
|
268
|
+
- GitHub-heavy flows work best with `gh` installed and authenticated
|
|
269
|
+
- Preview tooling depends on a project exposing a local dev server or explicit preview URL
|
|
270
|
+
- Public remote admin links were removed; use Tailscale or a verified identity layer instead
|
|
271
|
+
- Legacy tmux and legacy direct sessions are compatibility data that should be archived rather than resumed
|
|
320
272
|
|
|
321
273
|
## Links
|
|
322
274
|
|
|
@@ -332,22 +284,3 @@ conductor-oss/
|
|
|
332
284
|
## License
|
|
333
285
|
|
|
334
286
|
MIT. See [LICENSE](LICENSE).
|
|
335
|
-
|
|
336
|
-
## Conductor Bridge
|
|
337
|
-
|
|
338
|
-
Conductor Bridge lets you keep the backend on your machine while accessing the dashboard from a browser through a relay.
|
|
339
|
-
|
|
340
|
-
### CLI commands
|
|
341
|
-
|
|
342
|
-
```bash
|
|
343
|
-
conductor bridge connect --relay ws://127.0.0.1:8080
|
|
344
|
-
conductor bridge status
|
|
345
|
-
conductor bridge disconnect
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
### Runtime ports
|
|
349
|
-
|
|
350
|
-
- Relay: `http://127.0.0.1:8080`
|
|
351
|
-
- Dashboard: `http://127.0.0.1:3000`
|
|
352
|
-
- Backend: `http://127.0.0.1:4749`
|
|
353
|
-
|