@dinglebear/labby 1.20.1 → 2.2.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/LICENSE +33 -0
- package/README.md +154 -98
- package/lib/platform.js +1 -9
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -659,3 +659,36 @@ specific requirements.
|
|
|
659
659
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
660
660
|
For more information on this, and how to apply and follow the GNU AGPL, see
|
|
661
661
|
<http://www.gnu.org/licenses/>.
|
|
662
|
+
|
|
663
|
+
-------------------------------------------------------------------------------
|
|
664
|
+
LABBY PROJECT LICENSING NOTICE
|
|
665
|
+
-------------------------------------------------------------------------------
|
|
666
|
+
|
|
667
|
+
Except for third-party material and files carrying a separate license or
|
|
668
|
+
copyright notice, the original software in Labby authored by Jacob Magar or
|
|
669
|
+
Dinglebear AI is licensed under the GNU Affero General Public License version
|
|
670
|
+
3.0 only (SPDX: AGPL-3.0-only), whose complete and unmodified text appears
|
|
671
|
+
above.
|
|
672
|
+
|
|
673
|
+
This grant applies to revisions containing this notice. Earlier revisions
|
|
674
|
+
remain available under the licenses under which they were originally
|
|
675
|
+
published; those earlier grants are not revoked.
|
|
676
|
+
|
|
677
|
+
Dinglebear-owned portions are also available under separate written commercial
|
|
678
|
+
terms for organizations that need terms outside AGPL-3.0-only. No commercial
|
|
679
|
+
license is granted by this file. A commercial agreement covers only copyrights
|
|
680
|
+
owned or controlled by Dinglebear AI; it does not relicense third-party code,
|
|
681
|
+
dependencies, trademarks, data, artwork, or separately licensed material.
|
|
682
|
+
|
|
683
|
+
Files and directories containing their own license, copyright notice, or
|
|
684
|
+
upstream attribution remain under those original terms. Dependencies are
|
|
685
|
+
licensed by their respective authors.
|
|
686
|
+
|
|
687
|
+
External code contributions must not be merged until Dinglebear AI has a
|
|
688
|
+
contributor agreement or another documented grant permitting both AGPL and
|
|
689
|
+
commercial distribution. Issues, bug reports, and suggestions do not transfer
|
|
690
|
+
copyright.
|
|
691
|
+
|
|
692
|
+
To request separate commercial terms, contact Dinglebear AI through this
|
|
693
|
+
repository's GitHub contact channels and identify the intended product,
|
|
694
|
+
deployment model, distribution method, and support needs.
|
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ After installing Labby, configure proxy defaults once and launch a JavaScript
|
|
|
66
66
|
stdio server without proxy flags:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
labby
|
|
69
|
+
labby config proxy set
|
|
70
70
|
labby doctor proxy
|
|
71
71
|
labby proxy /path/to/dist.js
|
|
72
72
|
```
|
|
@@ -85,10 +85,47 @@ development. Bearer and OAuth setup, exact-port resource audiences, safe Serve
|
|
|
85
85
|
ownership, configuration precedence, output modes, and recovery are covered in
|
|
86
86
|
the [stdio MCP proxy guide](./docs/guides/STDIO_MCP_PROXY.md).
|
|
87
87
|
|
|
88
|
-
### Install
|
|
88
|
+
### Install Labby with `$install-labby`
|
|
89
|
+
|
|
90
|
+
The first-class guided install path is the checked-in `install-labby` Agent Skill. Install that one skill, then ask a skill-aware agent to run it:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx skills add https://github.com/dinglebear-ai/labby --skill install-labby
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
$install-labby
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The skill inspects the machine, asks for authentication/listener/deployment choices, drives the verified release installer plus `labby setup`, configures supported persistence and HTTPS exposure, helps register Labby in installed agents, and does not declare success until `labby doctor` plus a live MCP smoke pass. Security-sensitive durable writes remain owned by the Labby binary rather than duplicated in skill prose.
|
|
101
|
+
|
|
102
|
+
See [`plugins/labby/skills/install-labby/SKILL.md`](./plugins/labby/skills/install-labby/SKILL.md) for the orchestration contract and [`docs/adr/0001-install-labby-first-class-install-orchestrator.md`](./docs/adr/0001-install-labby-first-class-install-orchestrator.md) for the architecture decision.
|
|
103
|
+
|
|
104
|
+
#### Install through APM
|
|
105
|
+
|
|
106
|
+
Teams that standardize on the [Agent Package Manager](https://microsoft.github.io/apm/)
|
|
107
|
+
get the skills and the MCP registration in one step:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
apm install -g dinglebear-ai/labby
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
That deploys `install-labby`, `using-labby`, and `creating-snippets` into
|
|
114
|
+
`~/.claude/skills` and `~/.agents/skills` and registers the `labby` stdio MCP
|
|
115
|
+
server (`npx -y @dinglebear/labby mcp`) for Claude Code and Codex; `apm.yml` at
|
|
116
|
+
the repository root is the manifest and `apm outdated -g` reports new
|
|
117
|
+
releases. APM does not install the `labby` binary or provision a gateway host:
|
|
118
|
+
run `$install-labby` (or the verified release installer below) and
|
|
119
|
+
`labby setup` for that.
|
|
120
|
+
|
|
121
|
+
#### Manual Verified Release
|
|
122
|
+
|
|
123
|
+
Prerequisites for the verified release path are `curl`, `tar`, a SHA-256 tool (`sha256sum` or `shasum`), and an authenticated GitHub CLI (`gh`) build that supports `gh attestation verify`. The installer checks all of these before resolving or downloading any Labby release, so a fresh machine fails fast with an actionable dependency message rather than downloading an artifact it cannot verify (the `gh auth status` probe itself contacts GitHub, so the guarantee is about release downloads, not all network use). Ubuntu 26.04's distro package currently ships `gh 2.46.0`, which is too old for this trust path; install or upgrade GitHub CLI from GitHub's current official packages/releases, verify `gh attestation verify --help`, then run `gh auth login` (or provide `GH_TOKEN` for headless automation).
|
|
89
124
|
|
|
90
125
|
Linux/macOS:
|
|
91
126
|
|
|
127
|
+
> **Release compatibility gate:** select a release that publishes `labby-install.sh` and contains the documented first-run `labby setup --role ...` interface. Confirm the selected tag exposes the installer and checksum before continuing; do not assume an older release matches the current setup contract.
|
|
128
|
+
|
|
92
129
|
```bash
|
|
93
130
|
version=vX.Y.Z
|
|
94
131
|
base="https://github.com/dinglebear-ai/labby/releases/download/$version"
|
|
@@ -101,8 +138,6 @@ gh attestation verify labby-install.sh \
|
|
|
101
138
|
--deny-self-hosted-runners
|
|
102
139
|
shasum -a 256 -c labby-install.sh.sha256
|
|
103
140
|
LABBY_INSTALL_VERSION="$version" sh ./labby-install.sh
|
|
104
|
-
labby setup
|
|
105
|
-
labby serve --host 127.0.0.1 --port 8765
|
|
106
141
|
```
|
|
107
142
|
|
|
108
143
|
MCP clients that prefer npm launchers can run Labby through the Node wrapper:
|
|
@@ -111,33 +146,34 @@ MCP clients that prefer npm launchers can run Labby through the Node wrapper:
|
|
|
111
146
|
npx -y @dinglebear/labby mcp
|
|
112
147
|
```
|
|
113
148
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
gh attestation verify labby-install.ps1 `
|
|
122
|
-
--repo dinglebear-ai/labby `
|
|
123
|
-
--signer-workflow dinglebear-ai/labby/.github/workflows/release.yml `
|
|
124
|
-
--source-ref "refs/tags/$Version" `
|
|
125
|
-
--deny-self-hosted-runners
|
|
126
|
-
$Expected = ((Get-Content labby-install.ps1.sha256) -split '\s+')[0]
|
|
127
|
-
if ((Get-FileHash labby-install.ps1 -Algorithm SHA256).Hash.ToLower() -ne $Expected) { throw "installer digest mismatch" }
|
|
128
|
-
$env:LABBY_INSTALL_VERSION = $Version
|
|
129
|
-
& ./labby-install.ps1
|
|
130
|
-
labby setup
|
|
131
|
-
labby serve --host 127.0.0.1 --port 8765
|
|
132
|
-
```
|
|
149
|
+
The npm launcher is a weaker trust path than the installer scripts. It
|
|
150
|
+
downloads the release archive for the current platform and verifies only the
|
|
151
|
+
`.sha256` sidecar (or the `SHA256SUMS` manifest) published next to it on the
|
|
152
|
+
same release; it does not require `gh` and does not verify GitHub build
|
|
153
|
+
provenance. Use `labby-install.sh` on Linux or macOS when provenance
|
|
154
|
+
verification matters. Current releases do not publish Windows binaries or
|
|
155
|
+
installers.
|
|
133
156
|
|
|
134
157
|
The separately downloaded and attested install scripts resolve an immutable GitHub Release containing the current
|
|
135
158
|
platform asset, require `gh`, verify the archive's attestation against the
|
|
136
159
|
Labby repository, `release.yml`, exact tag, and hosted-runner policy, verify its checksum, and install `labby` onto the
|
|
137
|
-
user PATH.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
160
|
+
user PATH. The shell installer then runs `labby setup`, which
|
|
161
|
+
asks whether this machine should run a server or connect to an existing one.
|
|
162
|
+
Server setup configures authentication and a managed native service, or an Incus
|
|
163
|
+
container on supported Linux hosts. Client setup saves the explicit gateway URL
|
|
164
|
+
and configures browser sign-in or a bearer token. Desktop installation is optional
|
|
165
|
+
and off by default; if the published desktop package is unavailable, setup reports
|
|
166
|
+
that and still completes.
|
|
167
|
+
For Labby's supported ChatGPT web connection, configure the server in OAuth mode
|
|
168
|
+
and expose it through a publicly reachable HTTPS `LABBY_PUBLIC_URL`; bearer-only
|
|
169
|
+
mode is for local/CLI clients and is not the supported ChatGPT web path. The web
|
|
170
|
+
UI offers bearer token sign-in only over HTTPS or a direct loopback connection;
|
|
171
|
+
behind a TLS-terminating proxy, set `LABBY_PUBLIC_URL=https://...` to unlock it.
|
|
172
|
+
|
|
173
|
+
For unattended shell installs, set `LABBY_SETUP_ROLE=server` or `client` and the
|
|
174
|
+
corresponding `LABBY_SETUP_*` options. For a binary-only install, set
|
|
175
|
+
`LABBY_INSTALL_NO_SETUP=1`. Manual and automatic `labby host update` operations always
|
|
176
|
+
skip first-run setup. See the [setup guide](./docs/services/SETUP.md) for examples.
|
|
141
177
|
|
|
142
178
|
Override install behavior with `LABBY_INSTALL_DIR`, `LABBY_INSTALL_VERSION`, or
|
|
143
179
|
`LABBY_INSTALL_REPO`. Source fallback is off by default. Opt in with
|
|
@@ -153,15 +189,9 @@ it without downloading or changing `$LABBY_HOME`:
|
|
|
153
189
|
LABBY_INSTALL_ROLLBACK=1 sh ./labby-install.sh
|
|
154
190
|
```
|
|
155
191
|
|
|
156
|
-
```powershell
|
|
157
|
-
$env:LABBY_INSTALL_ROLLBACK = '1'
|
|
158
|
-
& .\labby-install.ps1
|
|
159
|
-
```
|
|
160
|
-
|
|
161
192
|
Rollback switches only the installed executable and receipt. It does not
|
|
162
193
|
downgrade or delete configuration, credentials, databases, or other durable
|
|
163
|
-
state. Inspect the receipt at `<install-dir>/.labby-install/receipt
|
|
164
|
-
`receipt.json` on Windows.
|
|
194
|
+
state. Inspect the receipt at `<install-dir>/.labby-install/receipt`.
|
|
165
195
|
|
|
166
196
|
Release qualification can install an already-downloaded candidate without
|
|
167
197
|
network or source fallback by setting `LABBY_INSTALL_LOCAL_BINARY` and its exact
|
|
@@ -192,16 +222,16 @@ updater job after the server passes its health check. See the
|
|
|
192
222
|
For an installation without a persistent server, use the standalone daily job:
|
|
193
223
|
|
|
194
224
|
```bash
|
|
195
|
-
labby update
|
|
196
|
-
labby update
|
|
197
|
-
labby update
|
|
225
|
+
labby host update auto enable
|
|
226
|
+
labby host update auto status
|
|
227
|
+
labby host update auto disable
|
|
198
228
|
```
|
|
199
229
|
|
|
200
230
|
Both modes require Apple Silicon and GitHub CLI (`gh`) for release attestation
|
|
201
231
|
verification. They skip drafts, prereleases, missing platform assets, and versions
|
|
202
232
|
equal to or older than the installed binary. The installer verifies attestations
|
|
203
233
|
and checksums before atomic replacement. No separate language runtime is required.
|
|
204
|
-
Use `labby update --automatic --dry-run` to check without installing.
|
|
234
|
+
Use `labby host update --automatic --dry-run` to check without installing.
|
|
205
235
|
|
|
206
236
|
### Build From Source
|
|
207
237
|
|
|
@@ -287,9 +317,8 @@ checkout.
|
|
|
287
317
|
|
|
288
318
|
The recommended self-hosted gateway substrate is an amd64 Ubuntu 26.04 Incus
|
|
289
319
|
system container. Bare metal is the secondary supported shape for a dedicated
|
|
290
|
-
gateway host or VM.
|
|
291
|
-
|
|
292
|
-
servers and agent CLIs are installed and launched at runtime.
|
|
320
|
+
gateway host or VM. Labby does not ship a Docker image or Compose deployment;
|
|
321
|
+
stdio MCP servers and agent CLIs are installed and launched at runtime.
|
|
293
322
|
|
|
294
323
|
```bash
|
|
295
324
|
scripts/incus-bootstrap.sh --version vX.Y.Z
|
|
@@ -321,40 +350,85 @@ set, it starts a standalone local gateway instead. See the
|
|
|
321
350
|
[local bridge guide](./docs/surfaces/TRANSPORT.md#local-bridge-to-the-running-daemon)
|
|
322
351
|
for client configuration and `LABBY_SERVER_URL` fail-closed behavior.
|
|
323
352
|
|
|
324
|
-
###
|
|
353
|
+
### Discover Commands
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
labby --help
|
|
357
|
+
labby help --all
|
|
358
|
+
labby help server --all
|
|
359
|
+
labby help --search oauth
|
|
360
|
+
labby help --all --json
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
Public command names use separate words without hyphens. Flags and resource
|
|
364
|
+
names retain normal syntax. Help and completion work offline, even with broken
|
|
365
|
+
configuration. See the [CLI guide](./docs/surfaces/CLI.md) and
|
|
366
|
+
[breaking migration map](./docs/generated/cli-migration.md).
|
|
367
|
+
|
|
368
|
+
### Select A Gateway
|
|
325
369
|
|
|
326
370
|
```bash
|
|
327
|
-
labby
|
|
328
|
-
|
|
371
|
+
labby context add homelab --server https://example.invalid --use
|
|
372
|
+
labby auth login --context homelab
|
|
373
|
+
labby --context homelab server list
|
|
374
|
+
labby config check
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Contexts save non-secret destinations in the existing host configuration.
|
|
378
|
+
Explicit `--server` or `--context` never borrows an unrelated environment token
|
|
379
|
+
and never falls back to local execution. Host-local commands remain local.
|
|
380
|
+
|
|
381
|
+
### Manage Upstream MCP Servers
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
labby server add github \
|
|
329
385
|
--url https://example.com/mcp \
|
|
330
|
-
--bearer-token-env GITHUB_MCP_TOKEN
|
|
331
|
-
-y
|
|
386
|
+
--bearer-token-env GITHUB_MCP_TOKEN
|
|
332
387
|
|
|
333
388
|
labby gateway reload
|
|
334
|
-
labby
|
|
389
|
+
labby server list
|
|
335
390
|
```
|
|
336
391
|
|
|
337
|
-
Stdio upstreams execute local commands when tested or reconciled
|
|
338
|
-
|
|
392
|
+
Stdio upstreams can execute local commands when tested or reconciled. Review
|
|
393
|
+
configuration before adding or testing them; the CLI retains each operation's
|
|
394
|
+
existing authorization and confirmation requirements.
|
|
339
395
|
The stdio spawn guard allows known runtimes such as `npx`, `uvx`, `docker`,
|
|
340
396
|
`node`, `python`, `python3`, `deno`, `pipx`, and `dnx`; customize it in
|
|
341
397
|
`[gateway]` inside `config.toml`.
|
|
342
398
|
|
|
399
|
+
Missing creation arguments can be filled by `labby server add` in an interactive
|
|
400
|
+
terminal. Scripts should use complete arguments and `--no-input --json`.
|
|
401
|
+
Timeouts use explicit units, such as `30s` or `2m`.
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
labby server restart alpha beta --timeout 30s
|
|
405
|
+
labby server restart --all --dry-run
|
|
406
|
+
labby --context homelab completions refresh
|
|
407
|
+
labby completions zsh --resources
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
Restart waits for observed completion and a connected replacement unless
|
|
411
|
+
`--no-wait` is explicit. Bulk operations report every target and return a failing
|
|
412
|
+
exit status when any target fails; uncertain operations are never replayed.
|
|
413
|
+
Optional cached completion is authority-scoped and offline on every Tab key.
|
|
414
|
+
|
|
343
415
|
### Use Code Mode
|
|
344
416
|
|
|
345
417
|
When `[code_mode].enabled = true`, Labby hides raw proxied upstream tools from MCP
|
|
346
418
|
`list_tools()` and exposes the canonical synthetic `codemode` tool.
|
|
347
419
|
|
|
348
420
|
```bash
|
|
349
|
-
labby
|
|
350
|
-
labby
|
|
351
|
-
labby
|
|
421
|
+
labby code status
|
|
422
|
+
labby code enable
|
|
423
|
+
labby code search 'github issues' --limit 5
|
|
424
|
+
labby code describe github.search_issues
|
|
425
|
+
labby code run --file ./task.js
|
|
352
426
|
```
|
|
353
427
|
|
|
354
428
|
MCP call shapes:
|
|
355
429
|
|
|
356
430
|
```json
|
|
357
|
-
{ "code": "async () => (await codemode.search(\"github issues\")).results" }
|
|
431
|
+
{ "code": "async () => (await codemode.search({\"query\":\"github issues\",\"limit\":5})).results" }
|
|
358
432
|
```
|
|
359
433
|
|
|
360
434
|
```json
|
|
@@ -371,12 +445,12 @@ from inside the sandbox.
|
|
|
371
445
|
### Work With Code Mode Snippets
|
|
372
446
|
|
|
373
447
|
```bash
|
|
374
|
-
labby
|
|
375
|
-
labby
|
|
376
|
-
labby
|
|
377
|
-
labby
|
|
378
|
-
labby
|
|
379
|
-
labby
|
|
448
|
+
labby snippet list
|
|
449
|
+
labby snippet get gateway-summary
|
|
450
|
+
labby snippet add my-snippet --file ./my-snippet.js
|
|
451
|
+
labby snippet validate my-snippet
|
|
452
|
+
labby snippet run my-snippet
|
|
453
|
+
labby snippet test my-snippet
|
|
380
454
|
```
|
|
381
455
|
|
|
382
456
|
Snippets are stored per-user under `$LABBY_HOME` and executed through the
|
|
@@ -388,18 +462,23 @@ without the `gateway` feature.
|
|
|
388
462
|
|
|
389
463
|
```bash
|
|
390
464
|
labby doctor # audit every configured service
|
|
391
|
-
labby doctor system # local env vars,
|
|
465
|
+
labby doctor system # local env vars, disk, toolchain
|
|
392
466
|
labby doctor auth # auth/OAuth env vars, files, permissions
|
|
393
467
|
labby doctor proxy # zero-route stdio-proxy config/dependency preflight
|
|
394
468
|
labby doctor proxy --app-url URL --mcp-url URL --route /path
|
|
395
469
|
# routed public reverse-proxy checks remain available
|
|
396
|
-
labby doctor
|
|
397
|
-
labby
|
|
398
|
-
labby logs
|
|
470
|
+
labby doctor relay
|
|
471
|
+
labby gateway status # query the selected daemon and its upstream state
|
|
472
|
+
labby logs --lines 50 # bounded local rolling logs, without systemd
|
|
473
|
+
labby logs --level error --query REQUEST_ID --json
|
|
474
|
+
labby logs journal --follow # explicitly stream the deployment journal
|
|
399
475
|
```
|
|
400
476
|
|
|
401
477
|
`labby doctor --json` is the CI-friendly form; the exit code reflects the worst
|
|
402
|
-
severity found.
|
|
478
|
+
severity found. Runtime errors include their command, origin, side-effect
|
|
479
|
+
classification, recovery guidance, and a request ID. `--json` errors remain one
|
|
480
|
+
JSON envelope on stderr; command results stay on stdout. Use `-v` or `-vv` for
|
|
481
|
+
diagnostics. `--quiet` suppresses console logs but never hides the actual error.
|
|
403
482
|
|
|
404
483
|
> **Removed surfaces.** Earlier releases documented `labby marketplace`,
|
|
405
484
|
> `labby stash`, `labby nodes`, and `labby deploy`, along with ACP chat, the MCP
|
|
@@ -425,7 +504,7 @@ curl -s -X POST http://127.0.0.1:8765/v1/gateway \
|
|
|
425
504
|
Dedicated product routes also exist for catalog discovery (`/v1/{service}/actions`),
|
|
426
505
|
setup, doctor, snippets, filesystem, server logs, gateway OAuth
|
|
427
506
|
(`/v1/gateway/oauth/*`), OAuth relay, auth allowlists (`/v1/auth/allowed-emails`),
|
|
428
|
-
`/v1/openapi`, and the browser session routes under `/auth/*`. See
|
|
507
|
+
`/v1/openapi.json`, interactive API docs at `/v1/docs`, and the browser session routes under `/auth/*`. See
|
|
429
508
|
[generated API routes](./docs/generated/api-routes.md) and
|
|
430
509
|
[OpenAPI](./docs/generated/openapi.json).
|
|
431
510
|
|
|
@@ -580,21 +659,15 @@ just build # cargo build --workspace --all-features
|
|
|
580
659
|
just build-release # release build, bin/labby install, ~/.local/bin symlink
|
|
581
660
|
just service-install # build and install the native persistent gateway service
|
|
582
661
|
just service-status # inspect the native service manager state
|
|
583
|
-
labby
|
|
584
|
-
labby
|
|
585
|
-
labby
|
|
662
|
+
labby host service install --install-self -y # install current binary + start system service
|
|
663
|
+
labby host service restart --install-self -y # reinstall current binary + restart service
|
|
664
|
+
labby host service status --json # inspect the host Labby gateway service
|
|
586
665
|
just host-sync # repo dev shortcut: rebuild + install binary + restart host service
|
|
587
|
-
just dev-container # explicit Docker compatibility/prod-like smoke path
|
|
588
|
-
just dev-container-debug # explicit Docker debug binary path
|
|
589
666
|
just web-build # cd apps/gateway-admin && pnpm build
|
|
590
667
|
just web-watch # rebuild web assets when frontend files change
|
|
591
668
|
just run -- help # cargo run --all-features -- <args>
|
|
592
669
|
just chat-local # local Labby admin UI workflow with browser auth disabled
|
|
593
|
-
just dev-up # start the explicit Docker compatibility stack
|
|
594
|
-
just dev # alias for just dev-container
|
|
595
|
-
just dev-debug # alias for just dev-container-debug
|
|
596
670
|
just install # build-release + symlink ~/.local/bin/labby
|
|
597
|
-
just prod-run # local prod-like image smoke on port 18765
|
|
598
671
|
just mcp-token # rotate LABBY_MCP_HTTP_TOKEN in .env
|
|
599
672
|
```
|
|
600
673
|
|
|
@@ -621,31 +694,14 @@ in-box with `labby setup --provision`. Bare metal uses the same provisioner and
|
|
|
621
694
|
system unit when the host or VM is dedicated to Labby. The default service is
|
|
622
695
|
`/etc/systemd/system/labby.service`, running as `User=labby`, `Group=labby`, with
|
|
623
696
|
`ExecStart=/usr/local/bin/labby serve`. From a source checkout, `just host-sync`
|
|
624
|
-
remains the rebuild-and-restart developer shortcut.
|
|
625
|
-
for prod-like image smoke and adapter-container work, but it is no longer the
|
|
626
|
-
recommended agent gateway runtime.
|
|
627
|
-
|
|
628
|
-
### Dev Container
|
|
629
|
-
|
|
630
|
-
The development Compose stack mirrors the production process controls: a
|
|
631
|
-
read-only root filesystem, dropped capabilities, `no-new-privileges`, loopback
|
|
632
|
-
port binding, bounded logs, and named volumes for durable state and data. It
|
|
633
|
-
also bind-mounts the source repository read-only so locally built web assets are
|
|
634
|
-
visible without rebuilding the image. The clean-checkout defaults mount the
|
|
635
|
-
tracked, non-secret `config/config.example.toml` and `config/.env.example`.
|
|
636
|
-
Set `LABBY_CONFIG_FILE` and `LABBY_ENV_FILE` to select local runtime files;
|
|
637
|
-
Compose mounts both read-only at their canonical paths beneath `$LABBY_HOME`. Labby-owned runtime
|
|
638
|
-
state remains writable in the surrounding `labby-home` named volume. Startup logs and the
|
|
639
|
-
setup settings state report `/home/labby/.labby/config.toml` as the effective
|
|
640
|
-
source. The image installs pinned Claude,
|
|
641
|
-
Codex, and Gemini CLIs for stdio upstreams that invoke provider tools.
|
|
697
|
+
remains the rebuild-and-restart developer shortcut.
|
|
642
698
|
|
|
643
699
|
### Releases
|
|
644
700
|
|
|
645
701
|
Release Please maintains the version/changelog pull request and creates the
|
|
646
702
|
stable tag plus draft GitHub release when that pull request merges. The stable
|
|
647
|
-
tag triggers the heavy GitHub-hosted candidate workflow. It builds Linux
|
|
648
|
-
macOS
|
|
703
|
+
tag triggers the heavy GitHub-hosted candidate workflow. It builds Linux and
|
|
704
|
+
macOS archives with checksums, builds and smokes the Incus image,
|
|
649
705
|
publishes the npm launcher, and publishes Labby's
|
|
650
706
|
`server.json` metadata to the official MCP Registry. Only after qualification
|
|
651
707
|
and publication succeed does the workflow promote the draft GitHub release.
|
|
@@ -659,8 +715,9 @@ removed; operators run `labby setup` themselves. Do not reintroduce a `hooks/`
|
|
|
659
715
|
directory, bundle a binary under `plugins/labby/bin/`, or add
|
|
660
716
|
Docker/systemd bootstrap logic to plugin assets.
|
|
661
717
|
|
|
662
|
-
`
|
|
663
|
-
|
|
718
|
+
`just validate-plugin` runs the supported read-only `labby setup check` flow
|
|
719
|
+
against an isolated Labby home. Plugin lifecycle hooks and per-service plugin
|
|
720
|
+
mutation commands remain retired.
|
|
664
721
|
|
|
665
722
|
## Related Servers
|
|
666
723
|
|
|
@@ -675,7 +732,6 @@ sync (`--no-repair` for read-only), exercised by `just validate-plugin`.
|
|
|
675
732
|
- [synapse-rmcp](https://github.com/dinglebear-ai/synapse) - Local Synapse workflow server for scout and flux actions.
|
|
676
733
|
- [cortex](https://github.com/dinglebear-ai/cortex) - Syslog and homelab log aggregation MCP server.
|
|
677
734
|
- [axon](https://github.com/dinglebear-ai/axon) - RAG, crawl, scrape, extract, and semantic search project.
|
|
678
|
-
- [lumen](https://github.com/dinglebear-ai/lumen) - Local semantic code search MCP server.
|
|
679
735
|
|
|
680
736
|
## Documentation
|
|
681
737
|
|
|
@@ -694,4 +750,4 @@ Start at [docs/README.md](./docs/README.md). High-value entrypoints:
|
|
|
694
750
|
|
|
695
751
|
## License
|
|
696
752
|
|
|
697
|
-
Original Dinglebear-authored portions of this project are licensed under [AGPL-3.0-only](LICENSE).
|
|
753
|
+
Original Dinglebear-authored portions of this project are licensed under [AGPL-3.0-only](LICENSE). The same file records the project-specific scope, third-party treatment, contribution policy, and availability of separately negotiated commercial terms.
|
package/lib/platform.js
CHANGED
|
@@ -15,14 +15,6 @@ function targetFor(platform = process.platform, arch = process.arch) {
|
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
if (platform === "win32" && arch === "x64") {
|
|
19
|
-
return {
|
|
20
|
-
asset: "lab-x86_64-pc-windows-msvc.zip",
|
|
21
|
-
binary: "labby.exe",
|
|
22
|
-
archiveType: "zip",
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
18
|
if (platform === "darwin" && arch === "arm64") {
|
|
27
19
|
return {
|
|
28
20
|
asset: "lab-aarch64-apple-darwin.tar.gz",
|
|
@@ -32,7 +24,7 @@ function targetFor(platform = process.platform, arch = process.arch) {
|
|
|
32
24
|
}
|
|
33
25
|
|
|
34
26
|
throw new Error(
|
|
35
|
-
`Unsupported platform ${platform}/${arch}. Supported targets: linux/x64, darwin/arm64
|
|
27
|
+
`Unsupported platform ${platform}/${arch}. Supported targets: linux/x64, darwin/arm64.`,
|
|
36
28
|
);
|
|
37
29
|
}
|
|
38
30
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dinglebear/labby",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"description": "Rust MCP gateway with Code Mode, authentication, setup, logs, CLI, HTTP API, and operator web UI.",
|
|
6
6
|
"homepage": "https://github.com/dinglebear-ai/labby#readme",
|