webmux 0.7.1 → 0.7.3

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # webmux
2
2
 
3
- A web dashboard for managing parallel AI coding agents. Built on top of [workmux](https://github.com/raine/workmux), which handles git worktrees and tmux orchestration webmux adds a browser UI with embedded terminals, live status tracking, and CI integration.
3
+ A web dashboard for managing parallel AI coding agents. webmux owns git worktree lifecycle, tmux layout, agent runtime events, service health monitoring, and sandbox containers directly.
4
4
 
5
5
  https://github.com/user-attachments/assets/48c9564f-42a5-404f-97e2-c5ee0138f15d
6
6
 
@@ -38,8 +38,8 @@ Run agents in isolated Docker containers for untrusted or experimental work. web
38
38
 
39
39
  ```bash
40
40
  # 1. Install prerequisites
41
- cargo install workmux # or: brew install raine/workmux/workmux
42
41
  sudo apt install tmux # or: brew install tmux
42
+ sudo apt install python3 # or: brew install python
43
43
  curl -fsSL https://bun.sh/install | bash
44
44
 
45
45
  # 2. Install webmux
@@ -47,7 +47,7 @@ bun install -g webmux
47
47
 
48
48
  # 3. Set up your project
49
49
  cd /path/to/your/project
50
- webmux init # creates .workmux.yaml and .webmux.yaml
50
+ webmux init # creates .webmux.yaml
51
51
 
52
52
  # 4. Start the dashboard
53
53
  webmux # opens on http://localhost:5111
@@ -58,7 +58,7 @@ webmux # opens on http://localhost:5111
58
58
  | Tool | Purpose |
59
59
  |------|---------|
60
60
  | [**bun**](https://bun.sh) | Runtime |
61
- | [**workmux**](https://github.com/raine/workmux) | Worktree + tmux orchestration |
61
+ | **python3** | Per-worktree hook/event helper runtime |
62
62
  | **tmux** | Terminal multiplexer |
63
63
  | **git** | Worktree management |
64
64
  | **gh** | PR and CI status (optional) |
@@ -66,10 +66,9 @@ webmux # opens on http://localhost:5111
66
66
 
67
67
  ## Configuration
68
68
 
69
- webmux uses two config files in the project root:
69
+ webmux uses a single config file in the project root:
70
70
 
71
- - **`.workmux.yaml`** — Controls worktree directory, pane layout, agent selection, and lifecycle hooks. See the [workmux docs](https://github.com/raine/workmux).
72
- - **`.webmux.yaml`** — Dashboard-specific config: service health checks, profiles, linked repos, and Docker sandbox settings.
71
+ - **`.webmux.yaml`** — Worktree root, pane layout, service ports, profiles, linked repos, and Docker sandbox settings.
73
72
 
74
73
  <details>
75
74
  <summary><strong>.webmux.yaml example</strong></summary>
@@ -77,6 +76,11 @@ webmux uses two config files in the project root:
77
76
  ```yaml
78
77
  name: My Project
79
78
 
79
+ workspace:
80
+ mainBranch: main
81
+ worktreeRoot: __worktrees
82
+ defaultAgent: claude
83
+
80
84
  services:
81
85
  - name: BE
82
86
  portEnv: BACKEND_PORT
@@ -89,15 +93,26 @@ services:
89
93
 
90
94
  profiles:
91
95
  default:
92
- name: default
96
+ runtime: host
97
+ yolo: false
98
+ envPassthrough: []
99
+ panes:
100
+ - id: agent
101
+ kind: agent
102
+ focus: true
103
+ - id: frontend
104
+ kind: command
105
+ split: right
106
+ command: FRONTEND_PORT=$FRONTEND_PORT npm run dev
93
107
 
94
108
  sandbox:
95
- name: sandbox
109
+ runtime: docker
110
+ yolo: true
96
111
  image: my-sandbox
97
112
  envPassthrough:
98
113
  - AWS_ACCESS_KEY_ID
99
114
  - AWS_SECRET_ACCESS_KEY
100
- extraMounts:
115
+ mounts:
101
116
  - hostPath: ~/.codex
102
117
  guestPath: /root/.codex
103
118
  writable: true
@@ -108,6 +123,19 @@ profiles:
108
123
  linkedRepos:
109
124
  - repo: myorg/related-service
110
125
  alias: svc
126
+
127
+ startupEnvs:
128
+ NODE_ENV: development
129
+
130
+ auto_name:
131
+ model: claude-3-5-haiku-latest
132
+ system_prompt: >
133
+ Generate a concise git branch name from the task description.
134
+ Return only the branch name in lowercase kebab-case.
135
+
136
+ lifecycleHooks:
137
+ postCreate: scripts/post-create.sh
138
+ preRemove: scripts/pre-remove.sh
111
139
  ```
112
140
 
113
141
  </details>
@@ -118,25 +146,40 @@ linkedRepos:
118
146
  | Parameter | Type | Required | Description |
119
147
  |-----------|------|----------|-------------|
120
148
  | `name` | string | no | Project name shown in sidebar and browser tab |
149
+ | `workspace.mainBranch` | string | no | Base branch used for new worktrees |
150
+ | `workspace.worktreeRoot` | string | no | Relative or absolute directory for managed worktrees |
151
+ | `workspace.defaultAgent` | string | no | Default agent for new worktrees |
121
152
  | `services[].name` | string | yes | Display name shown in the dashboard |
122
153
  | `services[].portEnv` | string | yes | Env var containing the service port |
123
154
  | `services[].portStart` | number | no | Base port for auto-allocation |
124
155
  | `services[].portStep` | number | no | Port increment per worktree slot (default: `1`) |
125
- | `profiles.default.name` | string | yes | Identifier for the default profile |
156
+ | `profiles.<name>.runtime` | string | yes | `host` or `docker` |
157
+ | `profiles.<name>.yolo` | boolean | no | Enables `--dangerously-skip-permissions` for Claude or `--yolo` for Codex |
158
+ | `profiles.<name>.panes[]` | array | yes | Pane layout for that profile |
159
+ | `profiles.<name>.panes[].kind` | string | yes | `agent`, `shell`, or `command` |
160
+ | `profiles.<name>.panes[].command` | string | yes (for `command`) | Startup command run inside the pane |
126
161
  | `profiles.default.systemPrompt` | string | no | Agent system prompt; `${VAR}` placeholders expanded at runtime |
127
162
  | `profiles.default.envPassthrough` | string[] | no | Env vars passed to the agent process |
128
- | `profiles.sandbox.name` | string | yes (if used) | Identifier for the sandbox profile |
129
163
  | `profiles.sandbox.image` | string | yes (if used) | Docker image for containers |
130
164
  | `profiles.sandbox.systemPrompt` | string | no | Agent system prompt for sandbox |
131
165
  | `profiles.sandbox.envPassthrough` | string[] | no | Host env vars forwarded into the container |
132
- | `profiles.sandbox.extraMounts[].hostPath` | string | yes | Host path to mount (`~` expands to `$HOME`) |
133
- | `profiles.sandbox.extraMounts[].guestPath` | string | no | Container mount path (defaults to `hostPath`) |
134
- | `profiles.sandbox.extraMounts[].writable` | boolean | no | `true` for read-write; omit or `false` for read-only |
135
- | `linkedRepos[].repo` | string | yes | GitHub repo slug (e.g. `org/repo`) |
136
- | `linkedRepos[].alias` | string | no | Short label for the UI |
166
+ | `profiles.sandbox.mounts[].hostPath` | string | yes | Host path to mount (`~` expands to `$HOME`) |
167
+ | `profiles.sandbox.mounts[].guestPath` | string | no | Container mount path (defaults to `hostPath`) |
168
+ | `profiles.sandbox.mounts[].writable` | boolean | no | `true` for read-write; omit or `false` for read-only |
169
+ | `integrations.github.linkedRepos[].repo` | string | yes | GitHub repo slug (e.g. `org/repo`) |
170
+ | `integrations.github.linkedRepos[].alias` | string | no | Short label for the UI |
171
+ | `startupEnvs.<KEY>` | string or boolean | no | Extra env vars materialized into worktree runtime env |
172
+ | `auto_name.model` | string | no | Model used to generate the branch name when the branch field is left empty; supports Anthropic (`claude-*`), Gemini (`gemini-*`), and OpenAI (`gpt-*`, `chatgpt-*`, `o*`) models |
173
+ | `auto_name.system_prompt` | string | no | System prompt sent to the auto-name model |
174
+ | `lifecycleHooks.postCreate` | string | no | Shell command run after a managed worktree is created and its runtime env is materialized, but before the tmux session/panes are started |
175
+ | `lifecycleHooks.preRemove` | string | no | Shell command run before a managed worktree is removed |
137
176
 
138
177
  </details>
139
178
 
179
+ Lifecycle hooks run with the worktree as `cwd` and receive the same computed runtime env that the managed panes will use, including `startupEnvs`, allocated service ports, and `WEBMUX_*` metadata.
180
+
181
+ When `auto_name` is enabled, `webmux` calls the provider API directly with structured output and uses `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, or `OPENAI_API_KEY` based on the configured model.
182
+
140
183
  ## Keyboard Shortcuts
141
184
 
142
185
  | Shortcut | Action |