@konstantdotcloud/boombox 0.1.0
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 +143 -0
- package/dist/boombox.js +49665 -0
- package/dist/index.d.ts +423 -0
- package/dist/index.js +45031 -0
- package/package.json +53 -0
- package/ui/README.md +142 -0
- package/ui/dist/assets/index-BhlAEUz4.css +1 -0
- package/ui/dist/assets/index-Ci77tcND.js +68 -0
- package/ui/dist/assets/index-Ci77tcND.js.map +1 -0
- package/ui/dist/index.html +14 -0
package/README.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# @konstantdotcloud/boombox
|
|
2
|
+
|
|
3
|
+
CLI and MCP bridge for a tenant's Boombox VM.
|
|
4
|
+
|
|
5
|
+
Boombox Cloud lives at <https://boombox.konstant.cloud>. Each tenant VM is served at `https://boombox-<tenant>.exe.xyz`. The CLI stores your tenant identity, talks to the VM, and exposes the Gary cassette runtime to Claude Desktop, Claude Code, Cursor, OpenClaw, or any MCP client.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
curl -fsSL https://boombox.konstant.cloud/install/boombox.sh | sh
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The installer installs `@konstantdotcloud/boombox` and then tells you to run `boombox login`.
|
|
14
|
+
|
|
15
|
+
## Quickstart
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
boombox login # browser sign-in via boombox.konstant.cloud; writes ~/.boombox/config.toml
|
|
19
|
+
boombox whoami # verifies tenant, user, VM URL, and key expiry
|
|
20
|
+
boombox admin # opens the VM admin UI through a short-lived cloud grant
|
|
21
|
+
boombox run bd_pre_meeting_brief --input meeting_uid=sample --input organizer=user@example.com --input attendees='["user@example.com"]' --input start_time=2026-06-02T15:00:00Z --input summary=Sample
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
For MCP clients, add `boombox serve --mcp` after `boombox login` succeeds.
|
|
25
|
+
|
|
26
|
+
## Commands
|
|
27
|
+
|
|
28
|
+
| Command | What it does |
|
|
29
|
+
|-|-|
|
|
30
|
+
| `boombox login [--tenant <tenant_id>]` | Browser sign-in through `boombox.konstant.cloud`; writes tenant id, VM URL, API key, and expiry to `~/.boombox/config.toml`. |
|
|
31
|
+
| `boombox whoami` | Calls the VM identity endpoint and prints tenant id, user id, VM URL, key expiry, and days remaining. |
|
|
32
|
+
| `boombox admin` | Requests a short-lived admin grant from Boombox Cloud and opens the tenant VM admin UI. |
|
|
33
|
+
| `boombox run <cassette_name> [--input key=value ...] [--no-tail] [--json]` | Manually triggers a cassette through `/gateway/rack/run`, prompts for required missing inputs, then polls to a terminal state unless `--no-tail` is set. |
|
|
34
|
+
| `boombox cassettes list` | Lists active cassettes available to the tenant. |
|
|
35
|
+
| `boombox cassettes show <id> [--draft]` | Prints a cassette YAML projection. |
|
|
36
|
+
| `boombox runs list [--cassette=X] [--since=24h] [--actor=Y] [--status=completed] [--limit=20]` | Lists recent runs with run id, cassette, actor, status, duration, and start time. |
|
|
37
|
+
| `boombox runs show <run_id>` | Shows one run: spec hash, inputs, step trace, delivery receipts, error summary, and replay ref. |
|
|
38
|
+
| `boombox logs tail [--cassette=X]` | Tails run/step events from the VM SSE stream. |
|
|
39
|
+
| `boombox artifacts open <artifact_id>` | Opens `<vm_url>/artifact/<artifact_id>` in the system browser. |
|
|
40
|
+
| `boombox keys list` | Lists tenant API keys visible to the current API key authority. |
|
|
41
|
+
| `boombox capabilities list [--kind=recipe\|tool\|artifact_template\|prompt_template] [--status=available\|missing]` | Lists registered tenant capabilities. |
|
|
42
|
+
| `boombox status` | Checks VM health, `/v2/api/info`, and the run-event stream. |
|
|
43
|
+
| `boombox doctor` | Checks config, VM reachability, API-key validity, and MCP boot. |
|
|
44
|
+
| `boombox init` | Manual config fallback for provisioned credentials. Most users should prefer `boombox login`. |
|
|
45
|
+
| `boombox enroll` | Browser enrollment flow that can write config from a provisioning payload. |
|
|
46
|
+
| `boombox serve [--mcp] [--http] [--port <port>]` | Starts stdio MCP and/or the local HTTP proxy. MCP clients should use `--mcp`. |
|
|
47
|
+
| `boombox reload` | Sends SIGHUP to a running local `boombox serve`. |
|
|
48
|
+
| `boombox restart` | Stops and respawns local `boombox serve`. |
|
|
49
|
+
| `boombox stop` | Stops a running local `boombox serve`. |
|
|
50
|
+
| `boombox upgrade` | Self-update through npm. |
|
|
51
|
+
|
|
52
|
+
## Config file
|
|
53
|
+
|
|
54
|
+
`~/.boombox/config.toml`:
|
|
55
|
+
|
|
56
|
+
```toml
|
|
57
|
+
[konstant]
|
|
58
|
+
tenant_id = "example"
|
|
59
|
+
api_key = "kn_example_***"
|
|
60
|
+
gateway_url = "https://boombox.konstant.cloud/v2"
|
|
61
|
+
|
|
62
|
+
[runtime]
|
|
63
|
+
default_kind = "vm"
|
|
64
|
+
vm_url = "https://boombox-example.exe.xyz"
|
|
65
|
+
|
|
66
|
+
[boombox]
|
|
67
|
+
http_port = 8787
|
|
68
|
+
mcp_enabled = true
|
|
69
|
+
|
|
70
|
+
[admin]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`runtime.vm_url` is the preferred target. If it is present, CLI commands talk to the tenant VM. `gateway_url` remains the shared cloud fallback and login/onboarding origin.
|
|
74
|
+
|
|
75
|
+
The file is created with mode `600`. Override the location with `BOOMBOX_HOME=/some/dir` (config lives at `$BOOMBOX_HOME/config.toml`).
|
|
76
|
+
|
|
77
|
+
## MCP client setup
|
|
78
|
+
|
|
79
|
+
### Claude Desktop / Claude Code / Cursor / OpenClaw
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"mcpServers": {
|
|
84
|
+
"boombox": {
|
|
85
|
+
"command": "boombox",
|
|
86
|
+
"args": ["serve", "--mcp"]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
After saving, restart your client. The default MCP profile exposes the chat-parity tools: `ask_gary`, `list_threads`, `clear_thread`, `artifact_fetch`, and `gary_status`. Advanced/operator profiles can expose rack, prompt, cassette, and admin verbs when explicitly enabled.
|
|
93
|
+
|
|
94
|
+
## Ops route contracts
|
|
95
|
+
|
|
96
|
+
The ops CLI uses direct HTTP service routes with `Authorization: Bearer <tenant_api_key>`; it does not speak MCP wire format.
|
|
97
|
+
|
|
98
|
+
| CLI command | Primary route contract |
|
|
99
|
+
|-|-|
|
|
100
|
+
| `whoami` | `GET /v2/api/me`. |
|
|
101
|
+
| `status` | `GET /health`, `GET /v2/api/info`, `GET /admin/runs/stream` (fallback: `/api/admin/runs/stream`). |
|
|
102
|
+
| `runs list` | `GET /api/admin/runs` with `cassette`, `since`, `actor`, `status`, `limit`; fallback: `GET /api/admin/cassettes/runs`. |
|
|
103
|
+
| `runs show` | `GET /api/admin/runs/:run_id`; fallback: `GET /api/admin/cassettes/runs/:run_id/replay`. |
|
|
104
|
+
| `logs tail` | `GET /admin/runs/stream` SSE; fallback: `GET /api/admin/runs/stream`. |
|
|
105
|
+
| `run` | `GET /api/admin/cassettes/:id` for required input metadata, `POST /gateway/rack/run` to trigger, then `GET /api/admin/runs/:run_id` or replay fallback to poll. |
|
|
106
|
+
| `cassettes list` | `GET /api/admin/cassettes`; the VM route currently defaults unknown status filters to `active`. |
|
|
107
|
+
| `cassettes show` | `GET /api/admin/cassettes/:id/yaml?draft=true`; falls back to `GET /api/admin/cassettes/:id` if YAML is not wired. |
|
|
108
|
+
| `keys list` | `GET /api/admin/keys`. |
|
|
109
|
+
| `capabilities list` | `GET /api/admin/capabilities`. |
|
|
110
|
+
|
|
111
|
+
## Local HTTP server
|
|
112
|
+
|
|
113
|
+
When `boombox serve --http` is running, your browser hits Hono on `localhost:8787`:
|
|
114
|
+
|
|
115
|
+
- `GET http://localhost:8787/` → the bundled Boombox UI when `packages/boombox/ui/dist` exists.
|
|
116
|
+
- `GET http://localhost:8787/api/...` → proxied to the configured VM/cloud gateway with `Authorization: Bearer <api_key>` injected. The browser never sees your API key.
|
|
117
|
+
- `GET http://localhost:8787/gateway/...` → rewritten to `/api/gateway/...` upstream.
|
|
118
|
+
- `GET http://localhost:8787/healthz` → 200 if config loaded.
|
|
119
|
+
|
|
120
|
+
If `ui/dist/` is missing, `/` and SPA routes return `503 ui_not_built`; `/healthz` and `/api/*` still work. Run `cd packages/boombox/ui && npm run build` to populate `ui/dist/`.
|
|
121
|
+
|
|
122
|
+
CORS is locked to `localhost`/`127.0.0.1` origins.
|
|
123
|
+
|
|
124
|
+
## Troubleshooting
|
|
125
|
+
|
|
126
|
+
- **`boombox doctor` says "config not found"** — run `boombox login`; use `boombox init` only when Konstant gave you raw VM credentials.
|
|
127
|
+
- **`whoami` returns 401/403** — the API key is invalid, expired, or lacks authority. Run `boombox login` to refresh it.
|
|
128
|
+
- **`gateway: unreachable`** — verify `runtime.vm_url` in `~/.boombox/config.toml`; the expected VM domain is `https://boombox-<tenant>.exe.xyz`.
|
|
129
|
+
- **Run stays queued** — the VM may not have an Inngest/worker dispatcher wired for that cassette. Check `boombox runs show <run_id>` and the VM admin run trace.
|
|
130
|
+
- **Port 8787 already in use** — pass `--port 9000` to `boombox serve --http`, or set `http_port` in config.
|
|
131
|
+
- **MCP boot test fails** — make sure your Node version is `>= 20`.
|
|
132
|
+
|
|
133
|
+
## Privacy & data
|
|
134
|
+
|
|
135
|
+
The CLI stores config and API keys locally; it does not store run output, telemetry, or tenant data on disk. Runtime data, replay packets, artifacts, and events live in the tenant VM/Mongo path configured for that tenant. LLM calls route through the tenant's configured provider path.
|
|
136
|
+
|
|
137
|
+
## Versioning
|
|
138
|
+
|
|
139
|
+
`0.1.0` — V1 ships with the default MCP tools plus CLI commands for login, VM status, cassette runs, run inspection, artifacts, keys, capabilities, admin, and lifecycle control. Run `boombox upgrade` to pull updates.
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
UNLICENSED — internal Konstant package.
|