@bulletproof-sh/ctrl-daemon 0.1.1-alpha.16 → 0.1.1-alpha.19
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 +23 -11
- package/bin/ctrl-daemon.cjs +3 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @bulletproof-sh/ctrl-daemon
|
|
2
2
|
|
|
3
|
-
WebSocket daemon for [Ctrl / Cubicles](https://ctrl.bulletproof.sh) —
|
|
3
|
+
WebSocket daemon for [Ctrl / Cubicles](https://ctrl.bulletproof.sh) — auto-discovers AI coding agent sessions (Claude Code, OpenAI Codex, Augment Code) and broadcasts live agent state to connected web clients. Features a full-screen animated TUI with a centered log panel showing daemon events in real time.
|
|
4
4
|
|
|
5
5
|
## Requirements
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ WebSocket daemon for [Ctrl / Cubicles](https://ctrl.bulletproof.sh) — watches
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
#
|
|
12
|
+
# Auto-discover all installed AI coding tools (default)
|
|
13
13
|
npx @bulletproof-sh/ctrl-daemon
|
|
14
14
|
|
|
15
15
|
# Watch a single project directory
|
|
@@ -18,7 +18,10 @@ npx @bulletproof-sh/ctrl-daemon --project-dir /path/to/your/project
|
|
|
18
18
|
# Custom port / host
|
|
19
19
|
npx @bulletproof-sh/ctrl-daemon --port 3001 --host 127.0.0.1
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Choose a TUI background animation
|
|
22
|
+
npx @bulletproof-sh/ctrl-daemon --animation starfield
|
|
23
|
+
|
|
24
|
+
# Disable the TUI (plain text output)
|
|
22
25
|
npx @bulletproof-sh/ctrl-daemon --no-tui
|
|
23
26
|
```
|
|
24
27
|
|
|
@@ -28,20 +31,21 @@ npx @bulletproof-sh/ctrl-daemon --no-tui
|
|
|
28
31
|
|---|---|---|
|
|
29
32
|
| `--port <number>` | `3001` | Port to listen on (auto-increments if in use) |
|
|
30
33
|
| `--host <address>` | `0.0.0.0` | Host/address to bind to |
|
|
31
|
-
| `--project-dir <path>` | — | Watch a single project; omit to
|
|
34
|
+
| `--project-dir <path>` | — | Watch a single project; omit to auto-discover all tools |
|
|
32
35
|
| `--idle-timeout <minutes>` | `15` | Agent idle timeout in minutes |
|
|
33
|
-
| `--
|
|
36
|
+
| `--animation, -a <name>` | `random` | Background animation: matrix, starfield, aurora, fireflies, life, pipes, dvd, starwars, none |
|
|
37
|
+
| `--no-tui` | — | Disable TUI (also auto-disabled when not a TTY) |
|
|
34
38
|
| `--help`, `-h` | — | Print usage |
|
|
35
39
|
|
|
36
|
-
Without `--project-dir`, the daemon
|
|
40
|
+
Without `--project-dir`, the daemon auto-discovers all installed AI coding tools and watches their session directories.
|
|
37
41
|
|
|
38
42
|
If the requested port is already in use, the daemon automatically tries the next port (up to 10 attempts).
|
|
39
43
|
|
|
40
44
|
## Terminal UI
|
|
41
45
|
|
|
42
|
-
When running in a TTY, the daemon displays an animated
|
|
46
|
+
When running in a TTY, the daemon displays an animated background (randomly selected from matrix, starfield, aurora, fireflies, life, pipes, and dvd) with a centered panel showing the CTRL logo, live agent/client counts, and scrolling daemon event logs. Use `--animation <name>` to pick a specific animation, or `--no-tui` to disable the TUI entirely.
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
The TUI handles terminal resize and restores the terminal cleanly on exit. The TUI is also automatically disabled when stdout is not a TTY (e.g. when piping output or running in CI).
|
|
45
49
|
|
|
46
50
|
## Sharing your office
|
|
47
51
|
|
|
@@ -55,7 +59,7 @@ npx @bulletproof-sh/ctrl-daemon
|
|
|
55
59
|
ngrok http 3001
|
|
56
60
|
```
|
|
57
61
|
|
|
58
|
-
Then open [bulletproof.sh](https://bulletproof.sh), go to **Settings → Share Office** and copy the generated link. Anyone who opens it will see your agents in real time — no auth or setup required on their end.
|
|
62
|
+
Then open [ctrl.bulletproof.sh](https://ctrl.bulletproof.sh), go to **Settings → Share Office** and copy the generated link. Anyone who opens it will see your agents in real time — no auth or setup required on their end.
|
|
59
63
|
|
|
60
64
|
> **Note:** Free ngrok URLs rotate each time you restart the tunnel. A paid ngrok plan gives you a stable domain.
|
|
61
65
|
|
|
@@ -65,6 +69,14 @@ Connect to `ws://localhost:3001/ws`. The daemon broadcasts JSON messages wheneve
|
|
|
65
69
|
|
|
66
70
|
The [Ctrl web app](https://ctrl.bulletproof.sh) connects here by default. You can change the URL in the app's Settings modal or by setting `VITE_DAEMON_WS_URL` at build time.
|
|
67
71
|
|
|
72
|
+
### Health check
|
|
73
|
+
|
|
74
|
+
`GET /health` returns JSON with daemon status, agent count, and version:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{ "status": "ok", "agents": 3, "version": "0.0.18" }
|
|
78
|
+
```
|
|
79
|
+
|
|
68
80
|
## Environment Variables
|
|
69
81
|
|
|
70
82
|
| Variable | Description |
|
|
@@ -92,10 +104,10 @@ The check is non-blocking and fails silently if the registry is unreachable.
|
|
|
92
104
|
bun install
|
|
93
105
|
bun run dev # watch mode
|
|
94
106
|
bun run build # compile to dist/
|
|
95
|
-
bun run
|
|
107
|
+
bun run verify # tsc + biome + tests
|
|
108
|
+
bun run test # tests only
|
|
96
109
|
```
|
|
97
110
|
|
|
98
111
|
## License
|
|
99
112
|
|
|
100
113
|
BUSL-1.1
|
|
101
|
-
|
package/bin/ctrl-daemon.cjs
CHANGED
|
@@ -20,6 +20,7 @@ const platformPackages = {
|
|
|
20
20
|
'darwin-x64': '@bulletproof-sh/ctrl-daemon-darwin-x64',
|
|
21
21
|
'linux-arm64': '@bulletproof-sh/ctrl-daemon-linux-arm64',
|
|
22
22
|
'linux-x64': '@bulletproof-sh/ctrl-daemon-linux-x64',
|
|
23
|
+
'win32-x64': '@bulletproof-sh/ctrl-daemon-windows-x64',
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
function getBinaryPath() {
|
|
@@ -29,9 +30,10 @@ function getBinaryPath() {
|
|
|
29
30
|
|
|
30
31
|
const key = `${process.platform}-${process.arch}`;
|
|
31
32
|
const pkg = platformPackages[key];
|
|
33
|
+
const binName = process.platform === 'win32' ? 'ctrl-daemon.exe' : 'ctrl-daemon';
|
|
32
34
|
if (pkg) {
|
|
33
35
|
try {
|
|
34
|
-
const binPath = require.resolve(`${pkg}/bin
|
|
36
|
+
const binPath = require.resolve(`${pkg}/bin/${binName}`);
|
|
35
37
|
if (existsSync(binPath)) {
|
|
36
38
|
return binPath;
|
|
37
39
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bulletproof-sh/ctrl-daemon",
|
|
3
|
-
"version": "0.1.1-alpha.
|
|
3
|
+
"version": "0.1.1-alpha.19",
|
|
4
4
|
"description": "WebSocket daemon for ctrl — watches Claude Code sessions and broadcasts agent state",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -27,10 +27,11 @@
|
|
|
27
27
|
"vitest": "^4.0.18"
|
|
28
28
|
},
|
|
29
29
|
"optionalDependencies": {
|
|
30
|
-
"@bulletproof-sh/ctrl-daemon-darwin-arm64": "0.1.1-alpha.
|
|
31
|
-
"@bulletproof-sh/ctrl-daemon-darwin-x64": "0.1.1-alpha.
|
|
32
|
-
"@bulletproof-sh/ctrl-daemon-linux-arm64": "0.1.1-alpha.
|
|
33
|
-
"@bulletproof-sh/ctrl-daemon-linux-x64": "0.1.1-alpha.
|
|
30
|
+
"@bulletproof-sh/ctrl-daemon-darwin-arm64": "0.1.1-alpha.19",
|
|
31
|
+
"@bulletproof-sh/ctrl-daemon-darwin-x64": "0.1.1-alpha.19",
|
|
32
|
+
"@bulletproof-sh/ctrl-daemon-linux-arm64": "0.1.1-alpha.19",
|
|
33
|
+
"@bulletproof-sh/ctrl-daemon-linux-x64": "0.1.1-alpha.19",
|
|
34
|
+
"@bulletproof-sh/ctrl-daemon-windows-x64": "0.1.1-alpha.19"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"posthog-node": "^5.26.0"
|