conductor-oss-native-linux-x64 0.3.4 → 0.5.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.
Files changed (3) hide show
  1. package/README.md +225 -201
  2. package/bin/conductor +0 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Conductor OSS
4
4
 
5
- **Local-first coding agent orchestration with a board, chat UI, worktree isolation, and resumable multi-session runs.**
5
+ **Local-first orchestration for terminal coding agents, with a browser dashboard, markdown board, tmux runtime, and worktree-aware repo management.**
6
6
 
7
7
  <br>
8
8
 
@@ -15,240 +15,288 @@
15
15
 
16
16
  </div>
17
17
 
18
- ## What is Conductor?
18
+ Conductor OSS is a local-first control plane for coding-agent CLIs. It runs on your machine, talks to the agent tools you already have installed, and keeps project state in local files plus a local SQLite database.
19
19
 
20
- Conductor OSS is a local-first dashboard for controlling coding-agent CLIs from a structured browser UI.
20
+ The current app combines:
21
21
 
22
- It combines:
22
+ - a workspace dashboard for projects, sessions, and agents
23
+ - a markdown-backed kanban board stored in `CONDUCTOR.md`
24
+ - tmux-backed session execution with restore/retry/archive flows
25
+ - worktree or in-place repo execution
26
+ - a Rust API/backend with a Next.js dashboard frontend
23
27
 
24
- - a markdown-native board for tasks and issues
25
- - a chat-oriented execution surface for agent runs
26
- - local branch mode or isolated worktree mode
27
- - multiple concurrent sessions against the same repo
28
- - a Rust backend with a Bun/Next frontend
28
+ ## What The App Does Today
29
29
 
30
- Conductor is not a hosted managed agent platform. It runs on your machine, uses your locally installed agent CLIs, and keeps state in your local workspace.
30
+ - Add a workspace from an existing local repo or clone one from a Git URL.
31
+ - Persist project settings in `conductor.yaml`, including default agent/model choices and preview-server settings.
32
+ - Create and manage board tasks from the UI, with human-readable task refs, comments, attachments, and linked session attempts.
33
+ - Spawn multiple agent sessions against the same repo, either on the main checkout or in isolated worktrees.
34
+ - Stream session chat and terminal output into the dashboard with interrupt, send, kill, archive, restore, and retry actions.
35
+ - Inspect a session's diff and a live preview tab. The preview surface can capture page context and send screenshots, DOM data, console logs, or network logs back to the active session as attachments.
36
+ - Discover installed agent CLIs, surface model selection where supported, and keep session history resumable instead of treating runs as disposable.
37
+ - Integrate with GitHub repositories and GitHub Projects v2 through `gh`, plus receive signed GitHub webhooks on `/api/github/webhook`.
38
+ - Apply dashboard access controls with viewer/operator/admin roles, trusted-header auth, optional Clerk wiring, and Tailscale-managed private remote access.
31
39
 
32
- ---
40
+ ## Current Architecture
33
41
 
34
- ## Why Conductor?
35
-
36
- | | Manual workflow | Terminal-only agent use | **Conductor OSS** |
37
- |---|---|---|---|
38
- | Task tracking | Separate tickets / notes | Separate from execution | **Board-linked tasks and runs** |
39
- | Session management | Manual tabs and branches | One terminal at a time | **Multiple parallel sessions** |
40
- | Workspace isolation | Manual branches/worktrees | Manual | **Built-in local/worktree session modes** |
41
- | Agent UX | Raw CLI only | Raw CLI only | **Structured chat + tool-call UI** |
42
- | Resume after completion | Manual | Manual | **Session stays resumable until archived** |
43
- | Storage | Mixed tools | Local shell history | **Local SQLite + board files** |
44
- | Deployment model | Varies | Local | **Local-first** |
45
-
46
- ---
47
-
48
- ## Repository Links
49
-
50
- - GitHub Repository: https://github.com/charannyk06/conductor-oss
51
- - Issues: https://github.com/charannyk06/conductor-oss/issues
52
- - Pull Requests: https://github.com/charannyk06/conductor-oss/pulls
53
- - CI: https://github.com/charannyk06/conductor-oss/actions/workflows/ci.yml
54
- - NPM Package: https://www.npmjs.com/package/conductor-oss
55
-
56
- ---
57
-
58
- ## Current product shape
59
-
60
- The app is currently organized around three core objects:
61
-
62
- 1. `Task`
63
- - a board card or issue tracked in `CONDUCTOR.md`
64
- 2. `Session`
65
- - one run or attempt against that task with a specific agent, model, workspace, and branch
66
- 3. `Workspace`
67
- - the local repo or worktree used by that run
68
-
69
- Current capabilities include:
70
-
71
- - board-linked tasks with human-readable task refs
72
- - multiple runs attached to a single board task
73
- - local branch mode or worktree isolation mode
74
- - resumable sessions that remain in `needs_input` after a successful run
75
- - archive as the explicit cleanup action for a run
76
- - grouped tool-call rendering in chat
77
- - per-agent model selection
78
- - local-first execution with installed coding-agent CLIs
79
- - workspace and remote access configuration in the dashboard
80
-
81
- ---
82
-
83
- ## Architecture
42
+ ### Frontend
84
43
 
85
- Conductor currently ships as a Rust backend with a Bun/Next.js frontend.
44
+ - `packages/web`: Next.js 16, React 19, Tailwind CSS 4 dashboard
45
+ - Main surfaces: workspace overview, workspace board, session detail, session diff, session preview, repository/settings panels
46
+ - API routes in the Next app proxy or coordinate with the Rust backend and the local preview/remote-access helpers
86
47
 
87
48
  ### Backend
88
49
 
89
50
  Rust crates under `crates/`:
90
51
 
91
- - `conductor-cli`: local launcher and app entrypoint
92
- - `conductor-server`: Axum API server, session manager, board/session routes
93
- - `conductor-executors`: agent adapters and PTY-backed process handling
94
- - `conductor-db`: local SQLite persistence
95
- - `conductor-git`: git/worktree operations
96
- - `conductor-watcher`: watcher logic
97
- - `conductor-core`: shared core types
98
-
99
- ### Frontend
100
-
101
- Web app under `packages/web/`:
102
-
103
- - Next.js 16
104
- - React 19
105
- - Bun workspace scripts
106
- - browser UI for board, settings, chat, sessions, and linked runs
52
+ - `conductor-cli`: Rust backend entrypoint
53
+ - `conductor-server`: Axum server and API routes
54
+ - `conductor-db`: SQLite persistence and migrations
55
+ - `conductor-executors`: runtime/session execution plumbing
56
+ - `conductor-git`: Git and worktree operations
57
+ - `conductor-watcher`: watcher support
58
+ - `conductor-core`: shared types and config model
107
59
 
108
60
  ### Persistence
109
61
 
110
- Conductor is local-first, but not database-free.
111
-
112
- Current state is stored in:
62
+ Conductor is local-first, but not stateless. Current data lives in:
113
63
 
64
+ - `conductor.yaml`: workspace and repository configuration
114
65
  - `.conductor/conductor.db`: local SQLite state
115
- - `CONDUCTOR.md`: board/task planning surface
116
- - workspace and worktree files in the selected project path
117
-
118
- ---
119
-
120
- ## Session lifecycle
121
-
122
- A session is the unit of execution.
123
-
124
- Each session has:
125
-
126
- - an agent
127
- - a model
128
- - a workspace path
129
- - a branch or worktree
130
- - chat history
131
- - tool-call history
132
- - local runtime output
133
-
134
- Current lifecycle behavior:
135
-
136
- - active runs stream into the chat view
137
- - tool calls are rendered as grouped structured rows
138
- - after a successful run, the session moves to `needs_input`
139
- - replying continues the same session instead of spawning a duplicate session entry
140
- - archiving is the explicit teardown and cleanup path
66
+ - `CONDUCTOR.md`: project-local markdown board
67
+ - `attachments/<project>/...`: uploaded files used in board tasks and session replies
141
68
 
142
- ---
69
+ ## Supported Agents
143
70
 
144
- ## Supported agents
145
-
146
- Conductor currently detects and uses agent CLIs that are installed locally.
147
-
148
- Common supported agents in the app today:
71
+ The repo currently ships built-in adapters and UI metadata for:
149
72
 
150
73
  - Claude Code
151
74
  - Codex
152
75
  - Gemini
153
76
  - Qwen Code
77
+ - Amp
78
+ - Cursor Agent
154
79
  - OpenCode
80
+ - Droid
155
81
  - GitHub Copilot
82
+ - CCR
156
83
 
157
- Actual availability depends on what is installed and authenticated on your machine.
158
-
159
- Notes:
84
+ Actual availability depends on what is installed and authenticated on your machine. Conductor does not bypass upstream auth, billing, or provider-side limits.
160
85
 
161
- - upstream auth and billing constraints still apply
162
- - some CLIs may be present but unusable until their normal terminal auth flow is completed
163
- - Conductor does not bypass provider-side limits, auth, or subscription checks
86
+ ## Runtime Model
164
87
 
165
- ---
88
+ The current runtime path is tmux-centric.
166
89
 
167
- ## Board model
90
+ - Sessions are launched under tmux.
91
+ - Session recovery and `co attach` assume tmux is available.
92
+ - Workspaces can run in `worktree` mode or `local` mode.
93
+ - Preview support depends on either a configured local dev server or a preview URL already associated with the session/PR.
168
94
 
169
- The board is the planning surface. Sessions are the execution surface.
95
+ ## Quick Start From Source
170
96
 
171
- Current behavior:
97
+ ### Requirements
172
98
 
173
- - tasks live in the board file and can be moved or edited from the web UI
174
- - a task can link to multiple session runs
175
- - one run can be marked as the primary linked run
176
- - board cards surface linked runs and jump directly into the session chat
177
- - task refs are human-readable instead of raw UUID-only identifiers
99
+ - Bun `>= 1.2`
100
+ - Node.js `>= 18` if you want to install the published npm CLI
101
+ - Rust toolchain
102
+ - Git
103
+ - tmux
104
+ - one or more supported coding-agent CLIs
178
105
 
179
- ---
106
+ Useful optional tools:
180
107
 
181
- ## Quick Start
108
+ - GitHub CLI `gh` for repo discovery and GitHub Projects sync
109
+ - Tailscale for managed private remote access
182
110
 
183
- ### Install dependencies
111
+ ### Install and run
184
112
 
185
113
  ```bash
186
114
  bun install
115
+ bun run dev:full
187
116
  ```
188
117
 
189
- ### Run the full app
118
+ Default dev ports:
119
+
120
+ - dashboard: `http://localhost:3000`
121
+ - Rust backend: `http://127.0.0.1:4749`
122
+
123
+ Other useful scripts:
190
124
 
191
125
  ```bash
126
+ bun run dev
127
+ bun run dev:backend
192
128
  bun run dev:full
129
+ bun run prod:prepare
130
+ bun run prod:full
131
+ bun run build
132
+ bun run build:frontend
133
+ bun run clean
193
134
  ```
194
135
 
195
- Defaults:
196
-
197
- - web UI: `http://localhost:3000`
198
- - Rust backend: `http://127.0.0.1:4749`
199
-
200
- ### Run the prod-like local stack
136
+ ### Prod-like local stack
201
137
 
202
138
  ```bash
203
139
  bun run prod:prepare
204
140
  bun run prod:full
205
141
  ```
206
142
 
207
- Defaults:
143
+ Default prod-like local ports:
208
144
 
209
- - dashboard: `http://localhost:4747`
145
+ - dashboard: `http://127.0.0.1:4747`
210
146
  - Rust backend: `http://127.0.0.1:4748`
211
147
 
212
- This uses the standalone web build so it can run alongside `bun run dev:full` from the same checkout.
148
+ Notes:
213
149
 
214
- ### Run frontend only
150
+ - Root scripts automatically source `./.env.local` when present.
151
+ - Set `CONDUCTOR_GITHUB_WEBHOOK_SECRET` if you want webhook signature verification.
152
+ - GitHub Projects v2 sync requires a `gh` login with project scopes:
215
153
 
216
154
  ```bash
217
- bun run dev
155
+ gh auth refresh --scopes read:project,project
218
156
  ```
219
157
 
220
- ### Run backend only
158
+ ## Getting A Workspace Into Conductor
159
+
160
+ You can do this from the dashboard or from the CLI.
161
+
162
+ ### Dashboard flow
163
+
164
+ From the workspace overview, add either:
165
+
166
+ - an existing local repository
167
+ - a Git repository to clone into a managed location
168
+
169
+ When a workspace is added, Conductor persists it into `conductor.yaml`, ensures a board file exists, and syncs project support files.
170
+
171
+ ### CLI flow
172
+
173
+ Inside a repo:
221
174
 
222
175
  ```bash
223
- bun run dev:backend
176
+ co init
177
+ co start --workspace .
224
178
  ```
225
179
 
226
- ### Build
180
+ Or, after installing the npm package:
227
181
 
228
182
  ```bash
229
- bun run build
183
+ npm install -g conductor-oss
184
+ co
230
185
  ```
231
186
 
232
- ---
187
+ Or without a global install:
188
+
189
+ ```bash
190
+ npx conductor-oss@latest
191
+ ```
233
192
 
234
- ## Workspace scripts
193
+ The CLI package exposes `conductor`, `conductor-oss`, and `co`.
194
+
195
+ ## CLI Surface
196
+
197
+ The current CLI commands include:
198
+
199
+ - `co start`: launch the dashboard and backend
200
+ - `co dashboard`: open the dashboard in a browser
201
+ - `co setup`: guided environment/bootstrap flow
202
+ - `co init`: scaffold `conductor.yaml` and `CONDUCTOR.md`
203
+ - `co spawn`: create a new session for a project
204
+ - `co list`: list sessions
205
+ - `co status`: group active sessions by attention level
206
+ - `co send`: send a follow-up message to a session
207
+ - `co attach`: attach to the tmux session
208
+ - `co restore`: relaunch a dead/exited session
209
+ - `co retry`: create a fresh attempt from a prior session or task
210
+ - `co feedback`: send reviewer feedback and requeue work
211
+ - `co kill`: terminate a session
212
+ - `co cleanup`: reclaim completed session resources
213
+ - `co doctor`: diagnose config, board, and watcher issues
214
+ - `co task show`: inspect task graph and attempts
215
+ - `co mcp-server`: start the MCP server command path
216
+
217
+ ## Configuration
218
+
219
+ The app's main configuration file is `conductor.yaml`.
220
+
221
+ Representative shape:
222
+
223
+ ```yaml
224
+ workspace: /absolute/path/to/control-workspace
225
+ server:
226
+ host: 127.0.0.1
227
+ port: 4749
228
+ projects:
229
+ my-app:
230
+ name: My App
231
+ repo: https://github.com/acme/my-app.git
232
+ path: /absolute/path/to/my-app
233
+ defaultBranch: main
234
+ runtime: tmux
235
+ workspace: worktree
236
+ boardDir: my-app
237
+ agent: codex
238
+ agentConfig:
239
+ permissions: default
240
+ model: o4-mini
241
+ reasoningEffort: medium
242
+ devServer:
243
+ command: bun dev
244
+ cwd: packages/web
245
+ port: 3001
246
+ preferences:
247
+ codingAgent: codex
248
+ access:
249
+ requireAuth: false
250
+ ```
235
251
 
236
- Useful root scripts:
252
+ Useful project-level fields supported by the current code:
253
+
254
+ - `defaultWorkingDirectory`
255
+ - `setupScript`
256
+ - `cleanupScript`
257
+ - `archiveScript`
258
+ - `copyFiles`
259
+ - `devServer.command`
260
+ - `devServer.cwd`
261
+ - `devServer.url`
262
+ - `devServer.port`
263
+ - `devServer.host`
264
+ - `devServer.path`
265
+ - `devServer.https`
266
+
267
+ ## GitHub Integration
268
+
269
+ The current GitHub integration is deeper than simple repo linking:
270
+
271
+ - discover accessible repositories via `gh`
272
+ - link a Conductor project to GitHub Projects v2
273
+ - sync board state with a linked GitHub Project
274
+ - accept signed webhook deliveries at `/api/github/webhook`
275
+
276
+ This path assumes normal `gh` authentication and GitHub permissions on the local machine.
277
+
278
+ ## Access Control And Remote Use
279
+
280
+ The safest way to run Conductor is on loopback only. The Rust backend explicitly refuses non-loopback binding unless you opt into:
237
281
 
238
282
  ```bash
239
- bun run dev
240
- bun run dev:backend
241
- bun run dev:full
242
- bun run prod:prepare
243
- bun run prod:full
244
- bun run build
245
- bun run build:frontend
246
- bun run clean
283
+ CONDUCTOR_UNSAFE_ALLOW_REMOTE_BACKEND=true
247
284
  ```
248
285
 
249
- ---
286
+ The current repo also includes support for:
287
+
288
+ - viewer/operator/admin roles in config
289
+ - trusted auth headers
290
+ - Cloudflare Access-style trusted-header validation
291
+ - optional Clerk-backed sign-in wiring in the web app
292
+ - Tailscale-managed private remote access from the dashboard
293
+
294
+ Relevant env examples live in:
295
+
296
+ - [`.env.example`](.env.example)
297
+ - [`packages/web/.env.example`](packages/web/.env.example)
250
298
 
251
- ## Repository layout
299
+ ## Repository Layout
252
300
 
253
301
  ```text
254
302
  crates/
@@ -260,59 +308,35 @@ crates/
260
308
  conductor-server/
261
309
  conductor-watcher/
262
310
  packages/
263
- web/
311
+ cli/
312
+ core/
264
313
  plugins/
314
+ web/
315
+ scripts/
316
+ docs/
265
317
  ```
266
318
 
267
- ---
268
-
269
- ## Development prerequisites
270
-
271
- Install locally:
272
-
273
- - Bun `>= 1.2`
274
- - Rust toolchain
275
- - Git
276
- - one or more supported coding-agent CLIs
277
-
278
- Common optional tools:
279
-
280
- - GitHub CLI
281
- - tmux
282
-
283
- ---
284
-
285
- ## What the app is optimized for
286
-
287
- Conductor OSS is currently best suited for:
319
+ ## Operational Realities
288
320
 
289
- - local-first development workflows
290
- - multiple coding-agent sessions against the same repo
291
- - linking execution back to markdown board tasks
292
- - isolating risky work in worktrees while keeping review in one dashboard
293
- - preserving resumable session history instead of treating every run as disposable
321
+ Important current constraints from the codebase:
294
322
 
295
- ---
323
+ - The runtime is tmux-first, so tmux is effectively required for the core session workflow.
324
+ - Agent behavior depends heavily on the upstream CLI you install and how that CLI handles auth, rate limits, prompts, and output formatting.
325
+ - GitHub repo discovery and GitHub Projects sync depend on `gh` being installed and authenticated.
326
+ - Preview tooling is strongest when the repo has an explicit dev-server mapping in config.
327
+ - Conductor is local-first orchestration software, not a hosted agent platform.
296
328
 
297
- ## Current limitations
329
+ ## Links
298
330
 
299
- This repo is still evolving quickly.
331
+ - GitHub: <https://github.com/charannyk06/conductor-oss>
332
+ - Issues: <https://github.com/charannyk06/conductor-oss/issues>
333
+ - Pull requests: <https://github.com/charannyk06/conductor-oss/pulls>
334
+ - npm package: <https://www.npmjs.com/package/conductor-oss>
300
335
 
301
- Important current realities:
302
-
303
- - reliability depends partly on the installed upstream CLI behavior
304
- - some providers require normal terminal auth or billing setup before their agent works here
305
- - the chat view is a structured projection over terminal-backed execution
306
- - UX and output rendering are still being tightened actively
307
- - documentation can drift quickly unless it is updated alongside implementation changes
308
-
309
- ---
310
336
  ## Star History
311
337
 
312
338
  [![Star History Chart](https://api.star-history.com/svg?repos=charannyk06/conductor-oss&type=Date)](https://star-history.com/#charannyk06/conductor-oss&Date)
313
339
 
314
- ---
315
-
316
340
  ## License
317
341
 
318
342
  MIT. See [LICENSE](LICENSE).
package/bin/conductor CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-oss-native-linux-x64",
3
- "version": "0.3.4",
3
+ "version": "0.5.0",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "os": [