@ts47andres/exeggutor 1.1.4 → 1.1.5
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/LICENSE +201 -201
- package/README.md +230 -230
- package/bin/exeggutor.js +217 -217
- package/package.json +63 -63
- package/packages/backend/bin/FolderPicker.exe +0 -0
- package/packages/backend/git-wrapper/git +60 -60
- package/packages/backend/native/FolderPicker.cs +139 -139
- package/packages/backend/package.json +25 -25
- package/packages/backend/scripts/compile-picker.js +16 -0
- package/packages/backend/scripts/git-guard.ps1 +48 -48
- package/packages/backend/src/gitWorktree.ts +320 -320
- package/packages/backend/src/index.ts +554 -554
- package/packages/backend/src/ptyManager.ts +414 -414
- package/packages/backend/src/tailscale.ts +138 -138
- package/packages/backend/src/workspaceDb.ts +151 -151
- package/packages/frontend/dist/index.html +15 -15
- package/packages/frontend/package.json +29 -29
- package/src/autostart.js +162 -162
- package/src/cli.js +613 -613
- package/src/server-manager.js +139 -139
package/README.md
CHANGED
|
@@ -1,230 +1,230 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/Dashboard.png" alt="Exeggutor Dashboard" width="100%">
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<p align="center">
|
|
6
|
-
<strong>Exeggutor</strong> — <em>Terminal Multiplexer & Git Worktree Manager</em><br>
|
|
7
|
-
Local-first, subscription-free workspace orchestration dashboard.
|
|
8
|
-
</p>
|
|
9
|
-
|
|
10
|
-
<p align="center">
|
|
11
|
-
<img src="https://img.shields.io/badge/node-%3E%3D18.0.0-339933?logo=node.js&logoColor=white" alt="Node">
|
|
12
|
-
<img src="https://img.shields.io/badge/typescript-3178C6?logo=typescript&logoColor=white" alt="TypeScript">
|
|
13
|
-
<img src="https://img.shields.io/badge/react-61DAFB?logo=react&logoColor=black" alt="React">
|
|
14
|
-
<img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="License">
|
|
15
|
-
</p>
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Features
|
|
20
|
-
|
|
21
|
-
| | |
|
|
22
|
-
|---|---|
|
|
23
|
-
| **Multi-Workspace Engine** | Switch projects and automatically swap terminal grids, paths, and configurations. |
|
|
24
|
-
| **Tabbed Terminal Grid** | Spawn unlimited terminals, split horizontally/vertically, persist sessions across restarts. |
|
|
25
|
-
| **Observer Sidebar** | Real-time terminal state monitoring (Active, Waiting, Idle, Errored) with live text previews. |
|
|
26
|
-
| **Git Worktree Isolation** | Run terminals inside branch-isolated worktree folders — no checkout overhead, no conflicts. |
|
|
27
|
-
| **Remote Access** | Expose the dashboard over your Tailscale tailnet via `--tailscale` flag. |
|
|
28
|
-
| **Persistent State** | Workspaces, terminals, and layouts survive server restarts and package upgrades. |
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Screenshots
|
|
33
|
-
|
|
34
|
-
### Workspace Management
|
|
35
|
-
|
|
36
|
-
<p align="center">
|
|
37
|
-
<img src="assets/Workspaces.png" alt="Workspace Selector" width="70%">
|
|
38
|
-
</p>
|
|
39
|
-
|
|
40
|
-
Switch between registered workspaces, each with its own terminal grid, path mapping, and branch configuration.
|
|
41
|
-
|
|
42
|
-
### Git Branch Selector
|
|
43
|
-
|
|
44
|
-
<p align="center">
|
|
45
|
-
<img src="assets/Branches.png" alt="Branch Selector" width="70%">
|
|
46
|
-
</p>
|
|
47
|
-
|
|
48
|
-
Create and switch branches per-terminal. New branches automatically spin up an isolated git worktree — zero context switching.
|
|
49
|
-
|
|
50
|
-
### Zero-State Onboarding
|
|
51
|
-
|
|
52
|
-
<p align="center">
|
|
53
|
-
<img src="assets/ZeroState.png" alt="Zero State" width="60%">
|
|
54
|
-
</p>
|
|
55
|
-
|
|
56
|
-
A clean welcome screen guides you through registering your first workspace and getting started in seconds.
|
|
57
|
-
|
|
58
|
-
### Mobile View
|
|
59
|
-
|
|
60
|
-
<p align="center">
|
|
61
|
-
<img src="assets/MobileView.png" alt="Mobile" width="40%">
|
|
62
|
-
</p>
|
|
63
|
-
|
|
64
|
-
Responsive layout with a slide-out sidebar drawer and single-terminal tabbed view for on-the-go access.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Architecture
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
┌──────────────────────────────────────────────────────┐
|
|
72
|
-
│ Exeggutor CLI │
|
|
73
|
-
│ (bin/exeggutor.js — server lifecycle, flags, tasks) │
|
|
74
|
-
└──────────┬───────────────────────────────────────────┘
|
|
75
|
-
│ starts / stops
|
|
76
|
-
┌──────────▼───────────────────────────────────────────┐
|
|
77
|
-
│ Backend (Fastify) │
|
|
78
|
-
│ Node.js + Fastify + WebSocket + node-pty │
|
|
79
|
-
│ ┌────────────┐ ┌──────────┐ ┌─────────────────┐ │
|
|
80
|
-
│ │ Workspace │ │ PTY │ │ Git Worktree │ │
|
|
81
|
-
│ │ Manager │ │ Manager │ │ Manager │ │
|
|
82
|
-
│ └────────────┘ └──────────┘ └─────────────────┘ │
|
|
83
|
-
│ ┌──────────────────────────────────────────────┐ │
|
|
84
|
-
│ │ Tailscale Detection (optional) │ │
|
|
85
|
-
│ │ --tailscale flag → bind 0.0.0.0 │ │
|
|
86
|
-
│ │ /api/tailscale/status → frontend badge │ │
|
|
87
|
-
│ └──────────────────────────────────────────────┘ │
|
|
88
|
-
└──────────┬───────────────────────────────────────────┘
|
|
89
|
-
│ HTTP / WebSocket
|
|
90
|
-
│ 127.0.0.1:17492 (normal)
|
|
91
|
-
│ <tailscale-ip>:17492 (remote)
|
|
92
|
-
┌──────────▼───────────────────────────────────────────┐
|
|
93
|
-
│ Frontend (Vite + React) │
|
|
94
|
-
│ xterm.js · react-mosaic-component · Tailwind CSS │
|
|
95
|
-
│ Terminal Grid · Observer Sidebar · Branch UI │
|
|
96
|
-
│ Tailscale IP badge (when --tailscale mode active) │
|
|
97
|
-
└──────────────────────────────────────────────────────┘
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Stack
|
|
101
|
-
|
|
102
|
-
| Layer | Technology |
|
|
103
|
-
|---|---|
|
|
104
|
-
| Frontend | Vite · React · TypeScript · Tailwind CSS · xterm.js · react-mosaic-component |
|
|
105
|
-
| Backend | Node.js · Fastify · Fastify WebSocket · node-pty |
|
|
106
|
-
| State | Persistent JSON (`~/.exeggutor-sessions.json`) |
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Getting Started
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# Install globally
|
|
114
|
-
npm install -g @ts47andres/exeggutor
|
|
115
|
-
|
|
116
|
-
# Start the dashboard
|
|
117
|
-
exeggutor
|
|
118
|
-
|
|
119
|
-
# Open in browser
|
|
120
|
-
exeggutor --open
|
|
121
|
-
|
|
122
|
-
# Stop the server
|
|
123
|
-
exeggutor --stop
|
|
124
|
-
|
|
125
|
-
# Check server status
|
|
126
|
-
exeggutor --status
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Once the dashboard loads, register a project directory with a name and path, and you're ready to go.
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Remote Access (Tailscale)
|
|
134
|
-
|
|
135
|
-
Exeggutor can be exposed securely over your [Tailscale](https://tailscale.com) tailnet, allowing you to access the dashboard from any device on your tailnet via a browser.
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
# Start with Tailscale remote access enabled
|
|
139
|
-
exeggutor --tailscale
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
This binds the server to `0.0.0.0` and makes it reachable at `http://<tailscale-ip>:17492` from any device on your tailnet. The frontend header shows a Tailscale IP badge (with copy-to-clipboard) when in this mode.
|
|
143
|
-
|
|
144
|
-
### Authenticating from a Remote Browser
|
|
145
|
-
|
|
146
|
-
When accessing from a remote device (e.g., phone browser), you'll see an authentication page. To sign in:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# On the host machine, print the auth token
|
|
150
|
-
exeggutor --show-token
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
Copy the token and paste it into the input field on the authentication page, then click **Submit**. The token is stored in your browser's localStorage so you only need to do this once per browser.
|
|
154
|
-
|
|
155
|
-
> **Note:** Tailscale must be installed and connected on the host machine. The badge only appears when `--tailscale` mode is active.
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## CLI Reference
|
|
160
|
-
|
|
161
|
-
### Server Lifecycle
|
|
162
|
-
|
|
163
|
-
| Command | Description |
|
|
164
|
-
|---|---|
|
|
165
|
-
| `exeggutor` or `exeggutor --start` | Start servers in background (normal mode, localhost only) |
|
|
166
|
-
| `exeggutor --stop` or `exeggutor --kill` | Stop all running servers |
|
|
167
|
-
| `exeggutor --restart` | Restart all servers |
|
|
168
|
-
| `exeggutor --status` or `exeggutor -s` | Show server status and workspace list |
|
|
169
|
-
| `exeggutor --open` | Open dashboard in default browser |
|
|
170
|
-
| `exeggutor --log` | Show recent server logs |
|
|
171
|
-
| `exeggutor --version` or `exeggutor -v` | Show version |
|
|
172
|
-
| `exeggutor --help` or `exeggutor -h` | Show help |
|
|
173
|
-
|
|
174
|
-
### Remote Access
|
|
175
|
-
|
|
176
|
-
| Command | Description |
|
|
177
|
-
|---|---|
|
|
178
|
-
| `exeggutor --tailscale` | Start with Tailscale remote access enabled |
|
|
179
|
-
| `exeggutor --show-token` | Print the auth token for remote browser login |
|
|
180
|
-
|
|
181
|
-
### Workspace Management
|
|
182
|
-
|
|
183
|
-
| Command | Description |
|
|
184
|
-
|---|---|
|
|
185
|
-
| `exeggutor --workspaces` or `exeggutor -w` | List all workspaces |
|
|
186
|
-
| `exeggutor --create-workspace <name> <path>` | Register a new workspace |
|
|
187
|
-
| `exeggutor --delete-workspace <hash>` | Delete a workspace and all its terminals |
|
|
188
|
-
|
|
189
|
-
### Terminal Management
|
|
190
|
-
|
|
191
|
-
| Command | Description |
|
|
192
|
-
|---|---|
|
|
193
|
-
| `exeggutor --terminals <hash>` | List terminals in a workspace |
|
|
194
|
-
| `exeggutor --add-terminal <hash> [name]` | Add a new terminal to a workspace |
|
|
195
|
-
| `exeggutor --rename <ws-hash> <term-hash> <new-name>` | Rename a terminal |
|
|
196
|
-
| `exeggutor --close <ws-hash> <term-name-or-hash>` | Close a terminal |
|
|
197
|
-
|
|
198
|
-
### Service Management
|
|
199
|
-
|
|
200
|
-
| Command | Description |
|
|
201
|
-
|---|---|
|
|
202
|
-
| `exeggutor --install-service` | Install auto-start on system boot |
|
|
203
|
-
| `exeggutor --remove-service` | Remove auto-start service |
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
## Data Persistence
|
|
208
|
-
|
|
209
|
-
| File | Location | Purpose |
|
|
210
|
-
|---|---|---|
|
|
211
|
-
| `~/.exeggutor.json` | User home directory | Runtime configuration (port, auth token, backend PID) |
|
|
212
|
-
| `~/.exeggutor-sessions.json` | User home directory | Workspaces, terminals, and layout state |
|
|
213
|
-
| `~/.exeggutor-logs/` | User home directory | Server log files |
|
|
214
|
-
| `~/.exeggutor-worktrees/` | User home directory | Temporary git worktree directories |
|
|
215
|
-
|
|
216
|
-
Data survives server restarts, package upgrades, and uninstall/reinstall cycles.
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Development
|
|
221
|
-
|
|
222
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md) for coding conventions, comment rules, and local-first principles.
|
|
223
|
-
|
|
224
|
-
```bash
|
|
225
|
-
# Build all packages
|
|
226
|
-
npm run build
|
|
227
|
-
|
|
228
|
-
# Start in development mode
|
|
229
|
-
npm run dev
|
|
230
|
-
```
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/Dashboard.png" alt="Exeggutor Dashboard" width="100%">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Exeggutor</strong> — <em>Terminal Multiplexer & Git Worktree Manager</em><br>
|
|
7
|
+
Local-first, subscription-free workspace orchestration dashboard.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18.0.0-339933?logo=node.js&logoColor=white" alt="Node">
|
|
12
|
+
<img src="https://img.shields.io/badge/typescript-3178C6?logo=typescript&logoColor=white" alt="TypeScript">
|
|
13
|
+
<img src="https://img.shields.io/badge/react-61DAFB?logo=react&logoColor=black" alt="React">
|
|
14
|
+
<img src="https://img.shields.io/badge/license-Apache%202.0-blue" alt="License">
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
| | |
|
|
22
|
+
|---|---|
|
|
23
|
+
| **Multi-Workspace Engine** | Switch projects and automatically swap terminal grids, paths, and configurations. |
|
|
24
|
+
| **Tabbed Terminal Grid** | Spawn unlimited terminals, split horizontally/vertically, persist sessions across restarts. |
|
|
25
|
+
| **Observer Sidebar** | Real-time terminal state monitoring (Active, Waiting, Idle, Errored) with live text previews. |
|
|
26
|
+
| **Git Worktree Isolation** | Run terminals inside branch-isolated worktree folders — no checkout overhead, no conflicts. |
|
|
27
|
+
| **Remote Access** | Expose the dashboard over your Tailscale tailnet via `--tailscale` flag. |
|
|
28
|
+
| **Persistent State** | Workspaces, terminals, and layouts survive server restarts and package upgrades. |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Screenshots
|
|
33
|
+
|
|
34
|
+
### Workspace Management
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<img src="assets/Workspaces.png" alt="Workspace Selector" width="70%">
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
Switch between registered workspaces, each with its own terminal grid, path mapping, and branch configuration.
|
|
41
|
+
|
|
42
|
+
### Git Branch Selector
|
|
43
|
+
|
|
44
|
+
<p align="center">
|
|
45
|
+
<img src="assets/Branches.png" alt="Branch Selector" width="70%">
|
|
46
|
+
</p>
|
|
47
|
+
|
|
48
|
+
Create and switch branches per-terminal. New branches automatically spin up an isolated git worktree — zero context switching.
|
|
49
|
+
|
|
50
|
+
### Zero-State Onboarding
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<img src="assets/ZeroState.png" alt="Zero State" width="60%">
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
A clean welcome screen guides you through registering your first workspace and getting started in seconds.
|
|
57
|
+
|
|
58
|
+
### Mobile View
|
|
59
|
+
|
|
60
|
+
<p align="center">
|
|
61
|
+
<img src="assets/MobileView.png" alt="Mobile" width="40%">
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
Responsive layout with a slide-out sidebar drawer and single-terminal tabbed view for on-the-go access.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Architecture
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
┌──────────────────────────────────────────────────────┐
|
|
72
|
+
│ Exeggutor CLI │
|
|
73
|
+
│ (bin/exeggutor.js — server lifecycle, flags, tasks) │
|
|
74
|
+
└──────────┬───────────────────────────────────────────┘
|
|
75
|
+
│ starts / stops
|
|
76
|
+
┌──────────▼───────────────────────────────────────────┐
|
|
77
|
+
│ Backend (Fastify) │
|
|
78
|
+
│ Node.js + Fastify + WebSocket + node-pty │
|
|
79
|
+
│ ┌────────────┐ ┌──────────┐ ┌─────────────────┐ │
|
|
80
|
+
│ │ Workspace │ │ PTY │ │ Git Worktree │ │
|
|
81
|
+
│ │ Manager │ │ Manager │ │ Manager │ │
|
|
82
|
+
│ └────────────┘ └──────────┘ └─────────────────┘ │
|
|
83
|
+
│ ┌──────────────────────────────────────────────┐ │
|
|
84
|
+
│ │ Tailscale Detection (optional) │ │
|
|
85
|
+
│ │ --tailscale flag → bind 0.0.0.0 │ │
|
|
86
|
+
│ │ /api/tailscale/status → frontend badge │ │
|
|
87
|
+
│ └──────────────────────────────────────────────┘ │
|
|
88
|
+
└──────────┬───────────────────────────────────────────┘
|
|
89
|
+
│ HTTP / WebSocket
|
|
90
|
+
│ 127.0.0.1:17492 (normal)
|
|
91
|
+
│ <tailscale-ip>:17492 (remote)
|
|
92
|
+
┌──────────▼───────────────────────────────────────────┐
|
|
93
|
+
│ Frontend (Vite + React) │
|
|
94
|
+
│ xterm.js · react-mosaic-component · Tailwind CSS │
|
|
95
|
+
│ Terminal Grid · Observer Sidebar · Branch UI │
|
|
96
|
+
│ Tailscale IP badge (when --tailscale mode active) │
|
|
97
|
+
└──────────────────────────────────────────────────────┘
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Stack
|
|
101
|
+
|
|
102
|
+
| Layer | Technology |
|
|
103
|
+
|---|---|
|
|
104
|
+
| Frontend | Vite · React · TypeScript · Tailwind CSS · xterm.js · react-mosaic-component |
|
|
105
|
+
| Backend | Node.js · Fastify · Fastify WebSocket · node-pty |
|
|
106
|
+
| State | Persistent JSON (`~/.exeggutor-sessions.json`) |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Getting Started
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Install globally
|
|
114
|
+
npm install -g @ts47andres/exeggutor
|
|
115
|
+
|
|
116
|
+
# Start the dashboard
|
|
117
|
+
exeggutor
|
|
118
|
+
|
|
119
|
+
# Open in browser
|
|
120
|
+
exeggutor --open
|
|
121
|
+
|
|
122
|
+
# Stop the server
|
|
123
|
+
exeggutor --stop
|
|
124
|
+
|
|
125
|
+
# Check server status
|
|
126
|
+
exeggutor --status
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Once the dashboard loads, register a project directory with a name and path, and you're ready to go.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Remote Access (Tailscale)
|
|
134
|
+
|
|
135
|
+
Exeggutor can be exposed securely over your [Tailscale](https://tailscale.com) tailnet, allowing you to access the dashboard from any device on your tailnet via a browser.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Start with Tailscale remote access enabled
|
|
139
|
+
exeggutor --tailscale
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
This binds the server to `0.0.0.0` and makes it reachable at `http://<tailscale-ip>:17492` from any device on your tailnet. The frontend header shows a Tailscale IP badge (with copy-to-clipboard) when in this mode.
|
|
143
|
+
|
|
144
|
+
### Authenticating from a Remote Browser
|
|
145
|
+
|
|
146
|
+
When accessing from a remote device (e.g., phone browser), you'll see an authentication page. To sign in:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# On the host machine, print the auth token
|
|
150
|
+
exeggutor --show-token
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Copy the token and paste it into the input field on the authentication page, then click **Submit**. The token is stored in your browser's localStorage so you only need to do this once per browser.
|
|
154
|
+
|
|
155
|
+
> **Note:** Tailscale must be installed and connected on the host machine. The badge only appears when `--tailscale` mode is active.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## CLI Reference
|
|
160
|
+
|
|
161
|
+
### Server Lifecycle
|
|
162
|
+
|
|
163
|
+
| Command | Description |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `exeggutor` or `exeggutor --start` | Start servers in background (normal mode, localhost only) |
|
|
166
|
+
| `exeggutor --stop` or `exeggutor --kill` | Stop all running servers |
|
|
167
|
+
| `exeggutor --restart` | Restart all servers |
|
|
168
|
+
| `exeggutor --status` or `exeggutor -s` | Show server status and workspace list |
|
|
169
|
+
| `exeggutor --open` | Open dashboard in default browser |
|
|
170
|
+
| `exeggutor --log` | Show recent server logs |
|
|
171
|
+
| `exeggutor --version` or `exeggutor -v` | Show version |
|
|
172
|
+
| `exeggutor --help` or `exeggutor -h` | Show help |
|
|
173
|
+
|
|
174
|
+
### Remote Access
|
|
175
|
+
|
|
176
|
+
| Command | Description |
|
|
177
|
+
|---|---|
|
|
178
|
+
| `exeggutor --tailscale` | Start with Tailscale remote access enabled |
|
|
179
|
+
| `exeggutor --show-token` | Print the auth token for remote browser login |
|
|
180
|
+
|
|
181
|
+
### Workspace Management
|
|
182
|
+
|
|
183
|
+
| Command | Description |
|
|
184
|
+
|---|---|
|
|
185
|
+
| `exeggutor --workspaces` or `exeggutor -w` | List all workspaces |
|
|
186
|
+
| `exeggutor --create-workspace <name> <path>` | Register a new workspace |
|
|
187
|
+
| `exeggutor --delete-workspace <hash>` | Delete a workspace and all its terminals |
|
|
188
|
+
|
|
189
|
+
### Terminal Management
|
|
190
|
+
|
|
191
|
+
| Command | Description |
|
|
192
|
+
|---|---|
|
|
193
|
+
| `exeggutor --terminals <hash>` | List terminals in a workspace |
|
|
194
|
+
| `exeggutor --add-terminal <hash> [name]` | Add a new terminal to a workspace |
|
|
195
|
+
| `exeggutor --rename <ws-hash> <term-hash> <new-name>` | Rename a terminal |
|
|
196
|
+
| `exeggutor --close <ws-hash> <term-name-or-hash>` | Close a terminal |
|
|
197
|
+
|
|
198
|
+
### Service Management
|
|
199
|
+
|
|
200
|
+
| Command | Description |
|
|
201
|
+
|---|---|
|
|
202
|
+
| `exeggutor --install-service` | Install auto-start on system boot |
|
|
203
|
+
| `exeggutor --remove-service` | Remove auto-start service |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Data Persistence
|
|
208
|
+
|
|
209
|
+
| File | Location | Purpose |
|
|
210
|
+
|---|---|---|
|
|
211
|
+
| `~/.exeggutor.json` | User home directory | Runtime configuration (port, auth token, backend PID) |
|
|
212
|
+
| `~/.exeggutor-sessions.json` | User home directory | Workspaces, terminals, and layout state |
|
|
213
|
+
| `~/.exeggutor-logs/` | User home directory | Server log files |
|
|
214
|
+
| `~/.exeggutor-worktrees/` | User home directory | Temporary git worktree directories |
|
|
215
|
+
|
|
216
|
+
Data survives server restarts, package upgrades, and uninstall/reinstall cycles.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Development
|
|
221
|
+
|
|
222
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for coding conventions, comment rules, and local-first principles.
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
# Build all packages
|
|
226
|
+
npm run build
|
|
227
|
+
|
|
228
|
+
# Start in development mode
|
|
229
|
+
npm run dev
|
|
230
|
+
```
|