@ts47andres/exeggutor 1.1.3 → 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/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
+ ```