wolfpack-bridge 1.6.0 → 1.6.1
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 +58 -13
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
:+**++++++*++*+=-:: .. ...... .. .:..::
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
Mobile & desktop command center for AI coding agents. Control
|
|
38
|
+
Mobile & desktop command center for AI coding agents. Control agent sessions (Claude, Codex, Gemini, or any custom command) across multiple machines from your phone or browser. Two session backends: **pty** (lightweight, no dependencies) or **tmux** (persistent, survives restarts). Secured by [Tailscale](https://tailscale.com/) — zero-config encrypted access, no ports to open.
|
|
39
39
|
|
|
40
40
|
Install on your phone's home screen for a native app experience — scan the QR code after setup and tap **"Add to Home Screen"**.
|
|
41
41
|
|
|
@@ -67,8 +67,8 @@ Install on your phone's home screen for a native app experience — scan the QR
|
|
|
67
67
|
│ Phone / │ │ Tailscale │ │ Your Machine │
|
|
68
68
|
│ Browser │◄────►│ (HTTPS) │◄────►│ │
|
|
69
69
|
│ (PWA) │ │ mesh VPN │ │ ┌──────────┐ ┌──────┐ ┌─────┐ │
|
|
70
|
-
└─────────────┘ └───────────┘ │ │ wolfpack │ │
|
|
71
|
-
│ │ server │◄│
|
|
70
|
+
└─────────────┘ └───────────┘ │ │ wolfpack │ │pty or│ │Agent│ │
|
|
71
|
+
│ │ server │◄│ tmux │◄│(any)│ │
|
|
72
72
|
│ │ HTTP/WS │ │ │ │ │ │
|
|
73
73
|
│ └──────────┘ └──────┘ └─────┘ │
|
|
74
74
|
└──────────────────────────────────┘
|
|
@@ -76,7 +76,7 @@ Install on your phone's home screen for a native app experience — scan the QR
|
|
|
76
76
|
|
|
77
77
|
**Components:**
|
|
78
78
|
- **PWA** — single-file vanilla JS app (~90KB), no framework. Mobile-optimized touch UI + desktop ANSI terminal
|
|
79
|
-
- **Server** — Bun HTTP + WebSocket. Serves embedded assets,
|
|
79
|
+
- **Server** — Bun HTTP + WebSocket. Serves embedded assets, manages sessions via pty (default) or tmux backend
|
|
80
80
|
- **Ralph** — detached subprocess that iterates through a markdown plan file, invoking agents per-task
|
|
81
81
|
- **Agents** — Claude, Codex, Gemini, or any shell command. Agent-agnostic by design
|
|
82
82
|
|
|
@@ -104,8 +104,26 @@ Supported platforms: macOS (Apple Silicon, Intel), Linux (x64, arm64).
|
|
|
104
104
|
|
|
105
105
|
### Prerequisites
|
|
106
106
|
|
|
107
|
-
- **
|
|
108
|
-
- **
|
|
107
|
+
- **Tailscale** *(optional)* — install from [tailscale.com/download](https://tailscale.com/download), sign in, and make sure both your computer and phone are on the same tailnet. Required for remote access.
|
|
108
|
+
- **tmux** *(optional)* — only needed if you choose the tmux backend. The default **pty** backend has no external dependencies.
|
|
109
|
+
|
|
110
|
+
### Session Backends
|
|
111
|
+
|
|
112
|
+
Wolfpack supports two backends for managing terminal sessions. You choose during setup and can switch at runtime from Settings.
|
|
113
|
+
|
|
114
|
+
| | **PTY** (default) | **tmux** |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| **Dependencies** | None | Requires tmux installed |
|
|
117
|
+
| **Session persistence** | In-memory — sessions lost on server crash/restart | tmux server is a separate process — sessions survive wolfpack restarts, deploys, and crashes |
|
|
118
|
+
| **Terminal streaming** | Direct binary WebSocket (`/ws/pty`) — low latency | Capture-pane polling (`/ws/terminal`) |
|
|
119
|
+
| **Desktop terminal** | ghostty-web with full scrollback | ghostty-web with full scrollback |
|
|
120
|
+
| **Best for** | Quick setup, no-dependency environments | Long-running agent sessions where persistence matters |
|
|
121
|
+
|
|
122
|
+
**Why tmux is more robust:** tmux runs as an independent server process. Your agent sessions live inside tmux, not inside wolfpack. If wolfpack crashes, gets redeployed, or restarts (e.g. `launchctl kickstart`), tmux sessions keep running untouched. When wolfpack comes back up, it reconnects to the existing tmux sessions automatically. With the PTY backend, a wolfpack restart kills all running sessions — any in-progress agent work is lost.
|
|
123
|
+
|
|
124
|
+
**Why PTY is the default:** zero dependencies, simpler setup, and lower latency terminal streaming. For most users running short agent tasks, the convenience outweighs the persistence tradeoff.
|
|
125
|
+
|
|
126
|
+
Both backends can run simultaneously — the backend router tracks which backend owns each session. You can have tmux sessions and PTY sessions active at the same time.
|
|
109
127
|
|
|
110
128
|
### tmux History
|
|
111
129
|
|
|
@@ -134,17 +152,18 @@ wolfpack uninstall # Remove everything (service, config, global command
|
|
|
134
152
|
|
|
135
153
|
On first run, `wolfpack` walks you through:
|
|
136
154
|
|
|
137
|
-
1. Checking prerequisites (tmux, Tailscale)
|
|
138
|
-
2.
|
|
139
|
-
3.
|
|
140
|
-
4.
|
|
141
|
-
5.
|
|
142
|
-
6.
|
|
155
|
+
1. Checking prerequisites (tmux, Tailscale — both optional)
|
|
156
|
+
2. Choosing a session backend (pty or tmux, default: pty)
|
|
157
|
+
3. Setting your projects directory (default: `~/Dev`)
|
|
158
|
+
4. Choosing a port (default: `18790`)
|
|
159
|
+
5. Enabling Tailscale HTTPS access
|
|
160
|
+
6. Optionally installing as a login service
|
|
161
|
+
7. Displaying a QR code to scan with your phone
|
|
143
162
|
|
|
144
163
|
## Features
|
|
145
164
|
|
|
146
165
|
### Session Management
|
|
147
|
-
- Create, view, and kill
|
|
166
|
+
- Create, view, and kill agent sessions (pty or tmux backend)
|
|
148
167
|
- Agent picker — Claude, Codex, Gemini, or custom commands per session
|
|
149
168
|
- Session triage — running, idle, and needs-input states with color-coded indicators
|
|
150
169
|
- Live terminal output preview on session cards
|
|
@@ -192,6 +211,31 @@ All settings (terminal mode, font size, haptics, etc.) persist in localStorage a
|
|
|
192
211
|
|
|
193
212
|
Tailscale's encrypted mesh network handles auth and routing — no ports to open, no DNS to configure.
|
|
194
213
|
|
|
214
|
+
### Security
|
|
215
|
+
|
|
216
|
+
**Always use the Tailscale hostname** (e.g. `https://mybox.tail1234.ts.net`) — not raw IPs. The QR code from setup already points to the correct URL. Raw IP access (LAN or Tailscale `100.x.x.x`) bypasses Tailscale's DNS-based routing and may not be protected by CORS.
|
|
217
|
+
|
|
218
|
+
**JWT authentication** adds a second layer of protection. Without it, anyone who can reach the server port has full access to your tmux sessions. To enable:
|
|
219
|
+
|
|
220
|
+
1. Generate a secret (minimum 32 characters):
|
|
221
|
+
```bash
|
|
222
|
+
openssl rand -base64 48
|
|
223
|
+
```
|
|
224
|
+
2. Set the environment variable before starting wolfpack:
|
|
225
|
+
```bash
|
|
226
|
+
export WOLFPACK_JWT_SECRET="your-secret-here"
|
|
227
|
+
```
|
|
228
|
+
For service installs, add it to your shell profile or the service environment.
|
|
229
|
+
|
|
230
|
+
3. Optional configuration:
|
|
231
|
+
- `WOLFPACK_JWT_AUDIENCE` — expected `aud` claim
|
|
232
|
+
- `WOLFPACK_JWT_ISSUER` — expected `iss` claim
|
|
233
|
+
- `WOLFPACK_JWT_CLOCK_TOLERANCE_SEC` — clock skew tolerance (default: 30s)
|
|
234
|
+
|
|
235
|
+
Tokens use HS256 (HMAC-SHA256). The server validates but does not issue tokens — generate them with any JWT library using the same secret.
|
|
236
|
+
|
|
237
|
+
**Without `WOLFPACK_JWT_SECRET` set, authentication is disabled.** This is fine for localhost-only usage but strongly recommended when the server is reachable over a network.
|
|
238
|
+
|
|
195
239
|
## Ralph Loop
|
|
196
240
|
|
|
197
241
|
Autonomous task runner. Write a markdown plan file, pick an agent, set iterations, and let it rip. Ralph reads the plan, extracts the first incomplete task, hands it to the agent, marks it done, and moves on — implementing, testing, and committing along the way. See [full documentation](docs/ralph-macchio.md).
|
|
@@ -204,6 +248,7 @@ Stored in `~/.wolfpack/config.json`:
|
|
|
204
248
|
{
|
|
205
249
|
"devDir": "/Users/you/Dev",
|
|
206
250
|
"port": 18790,
|
|
251
|
+
"backend": "pty",
|
|
207
252
|
"tailscaleHostname": "your-machine.tailnet-name.ts.net"
|
|
208
253
|
}
|
|
209
254
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wolfpack-bridge",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Mobile command center for tmux-based AI agent sessions",
|
|
6
6
|
"bin": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"postinstall": "node bin/install.cjs"
|
|
18
18
|
},
|
|
19
19
|
"optionalDependencies": {
|
|
20
|
-
"wolfpack-bridge-darwin-arm64": "1.6.
|
|
21
|
-
"wolfpack-bridge-darwin-x64": "1.6.
|
|
22
|
-
"wolfpack-bridge-linux-arm64": "1.6.
|
|
23
|
-
"wolfpack-bridge-linux-x64": "1.6.
|
|
20
|
+
"wolfpack-bridge-darwin-arm64": "1.6.1",
|
|
21
|
+
"wolfpack-bridge-darwin-x64": "1.6.1",
|
|
22
|
+
"wolfpack-bridge-linux-arm64": "1.6.1",
|
|
23
|
+
"wolfpack-bridge-linux-x64": "1.6.1"
|
|
24
24
|
},
|
|
25
25
|
"keywords": [
|
|
26
26
|
"tmux",
|