@madarco/agentbox 0.6.0 → 0.7.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/dist/_cloud-attach-DMVH6GWO.js +12 -0
- package/dist/chunk-7KOEFGN2.js +1162 -0
- package/dist/chunk-7KOEFGN2.js.map +1 -0
- package/dist/chunk-I24B6AXR.js +600 -0
- package/dist/chunk-I24B6AXR.js.map +1 -0
- package/dist/chunk-NAVL4R34.js +7546 -0
- package/dist/chunk-NAVL4R34.js.map +1 -0
- package/dist/chunk-NW5NYTQM.js +1366 -0
- package/dist/chunk-NW5NYTQM.js.map +1 -0
- package/dist/chunk-UK72UQ5U.js +237 -0
- package/dist/chunk-UK72UQ5U.js.map +1 -0
- package/dist/chunk-V5KZGB5V.js +722 -0
- package/dist/chunk-V5KZGB5V.js.map +1 -0
- package/dist/cloud-poller-ZIWSADJB-JXFRJUEM.js +10 -0
- package/dist/dist-ETCFRVPA.js +423 -0
- package/dist/dist-QZGJIBT5.js +1339 -0
- package/dist/dist-QZGJIBT5.js.map +1 -0
- package/dist/dist-R67WMLCF.js +183 -0
- package/dist/dist-R67WMLCF.js.map +1 -0
- package/dist/index.js +3998 -1569
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
- package/runtime/docker/Dockerfile.box +98 -14
- package/runtime/docker/apps/cli/share/agentbox-setup/SKILL.md +15 -8
- package/runtime/docker/packages/ctl/dist/bin.cjs +10220 -773
- package/runtime/docker/packages/sandbox-docker/scripts/agentbox-codex-hooks.json +37 -0
- package/runtime/docker/packages/sandbox-docker/scripts/agentbox-open +9 -9
- package/runtime/hetzner/agentbox-checkpoint-cleanup +52 -0
- package/runtime/hetzner/agentbox-codex-hooks.json +37 -0
- package/runtime/hetzner/agentbox-dockerd-start +132 -0
- package/runtime/hetzner/agentbox-open +28 -0
- package/runtime/hetzner/agentbox-setup-skill.md +196 -0
- package/runtime/hetzner/agentbox-vnc-start +77 -0
- package/runtime/hetzner/claude-managed-settings.json +54 -0
- package/runtime/hetzner/ctl.cjs +22350 -0
- package/runtime/hetzner/custom-system-CLAUDE.md +27 -0
- package/runtime/hetzner/scripts/install-box.sh +365 -0
- package/runtime/relay/bin.cjs +9118 -809
- package/share/agentbox-setup/SKILL.md +15 -8
- package/dist/chunk-BBZMA2K6.js +0 -238
- package/dist/chunk-BBZMA2K6.js.map +0 -1
- package/dist/chunk-HHMWQNLF.js +0 -1709
- package/dist/chunk-HHMWQNLF.js.map +0 -1
- package/dist/chunk-HPZMD5DE.js +0 -106
- package/dist/chunk-HPZMD5DE.js.map +0 -1
- package/dist/chunk-HTTKML3C.js +0 -2655
- package/dist/chunk-HTTKML3C.js.map +0 -1
- package/dist/chunk-KJNZP6I3.js +0 -586
- package/dist/chunk-KJNZP6I3.js.map +0 -1
- package/dist/chunk-M7I247BK.js +0 -525
- package/dist/chunk-M7I247BK.js.map +0 -1
- package/dist/create-6PWXI6HO-OWAMHBAK.js +0 -15
- package/dist/lifecycle-EMXR46DI-DUVBXNTV.js +0 -38
- package/dist/state-KD7M46ZP-KHFTHFUS.js +0 -26
- package/dist/stats-SZXOJE3D-N7OODCHW.js +0 -19
- package/dist/stats-SZXOJE3D-N7OODCHW.js.map +0 -1
- /package/dist/{create-6PWXI6HO-OWAMHBAK.js.map → _cloud-attach-DMVH6GWO.js.map} +0 -0
- /package/dist/{lifecycle-EMXR46DI-DUVBXNTV.js.map → cloud-poller-ZIWSADJB-JXFRJUEM.js.map} +0 -0
- /package/dist/{state-KD7M46ZP-KHFTHFUS.js.map → dist-ETCFRVPA.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@madarco/agentbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Launch Claude Code, Codex, and other coding agents in isolated sandboxes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Marco D'Alia",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@clack/prompts": "^0.9.0",
|
|
44
|
+
"@daytonaio/sdk": "^0.179.0",
|
|
44
45
|
"@xterm/headless": "^5.5.0",
|
|
45
46
|
"commander": "^12.1.0",
|
|
46
47
|
"execa": "^9.5.2",
|
|
@@ -55,11 +56,15 @@
|
|
|
55
56
|
"tsup": "^8.3.5",
|
|
56
57
|
"typescript": "^5.7.2",
|
|
57
58
|
"vitest": "^2.1.8",
|
|
58
|
-
"@agentbox/config": "0.0.0",
|
|
59
59
|
"@agentbox/core": "0.0.0",
|
|
60
|
+
"@agentbox/config": "0.0.0",
|
|
60
61
|
"@agentbox/ctl": "0.0.0",
|
|
62
|
+
"@agentbox/relay": "0.0.0",
|
|
63
|
+
"@agentbox/sandbox-cloud": "0.0.0",
|
|
64
|
+
"@agentbox/sandbox-core": "0.0.0",
|
|
65
|
+
"@agentbox/sandbox-daytona": "0.0.0",
|
|
61
66
|
"@agentbox/sandbox-docker": "0.0.0",
|
|
62
|
-
"@agentbox/
|
|
67
|
+
"@agentbox/sandbox-hetzner": "0.0.0"
|
|
63
68
|
},
|
|
64
69
|
"scripts": {
|
|
65
70
|
"build": "tsup",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# tar pipe for the no-git case). The old FUSE overlay over /host-src+/upper
|
|
8
8
|
# is gone — but fuse3 + fuse-overlayfs stay as the in-box dockerd's fallback
|
|
9
9
|
# storage driver (it prefers the kernel-native overlay2). Plus the "universal-ish" set of
|
|
10
|
-
# language runtimes (Node.js
|
|
10
|
+
# language runtimes (Node.js 24 from NodeSource, Python 3 from apt). Heavier
|
|
11
11
|
# tooling (Go, Java, Ruby, .NET, more browser tooling, vscode-server) goes in
|
|
12
12
|
# a later iteration.
|
|
13
13
|
#
|
|
@@ -57,7 +57,7 @@ ENV COLORTERM=truecolor \
|
|
|
57
57
|
RUN apt-get update \
|
|
58
58
|
&& apt-get install -y --no-install-recommends \
|
|
59
59
|
curl ca-certificates gnupg \
|
|
60
|
-
&& curl -fsSL https://deb.nodesource.com/
|
|
60
|
+
&& curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
|
|
61
61
|
&& apt-get install -y --no-install-recommends \
|
|
62
62
|
fuse3 \
|
|
63
63
|
fuse-overlayfs \
|
|
@@ -87,7 +87,7 @@ RUN setcap cap_net_bind_service=+ep "$(readlink -f "$(command -v node)")"
|
|
|
87
87
|
# Enable corepack (pnpm/yarn shims) at build time as root. Doing this here
|
|
88
88
|
# rather than in the wizard's install task avoids two failures the runtime
|
|
89
89
|
# `corepack enable` (run as non-root `vscode`) hits: it can't write shims into
|
|
90
|
-
# the root-owned NodeSource bin dir (/usr/bin), and node
|
|
90
|
+
# the root-owned NodeSource bin dir (/usr/bin), and node 24's bundled corepack
|
|
91
91
|
# resolves its dist path relative to the symlink dirname, so a
|
|
92
92
|
# ~/.local/bin/pnpm symlink looks for ~/.local/dist/pnpm.js and breaks.
|
|
93
93
|
# `corepack@latest` fixes the symlink resolution; baking the shims into
|
|
@@ -97,6 +97,13 @@ RUN setcap cap_net_bind_service=+ep "$(readlink -f "$(command -v node)")"
|
|
|
97
97
|
RUN npm install -g corepack@latest \
|
|
98
98
|
&& corepack enable pnpm yarn
|
|
99
99
|
|
|
100
|
+
# Pre-create the corepack download cache owned by `vscode`. Without this,
|
|
101
|
+
# the first corepack-driven install (e.g. the setup wizard's verification
|
|
102
|
+
# step) hits ENOENT on /home/vscode/.cache/node/corepack/v1 because nothing
|
|
103
|
+
# else creates ~/.cache for the runtime user.
|
|
104
|
+
RUN mkdir -p /home/vscode/.cache/node/corepack \
|
|
105
|
+
&& chown -R vscode:vscode /home/vscode/.cache
|
|
106
|
+
|
|
100
107
|
# Host repos are bind-mounted in at their identical absolute path (worktree
|
|
101
108
|
# pointer files contain absolute paths to <main>/.git/worktrees/<name>, so both
|
|
102
109
|
# sides have to resolve the same path), and the host owns those `.git/` dirs.
|
|
@@ -161,6 +168,38 @@ RUN mkdir -p /home/vscode/.claude \
|
|
|
161
168
|
&& ln -s /home/vscode/.claude/_claude.json /home/vscode/.claude.json \
|
|
162
169
|
&& chown -h vscode:vscode /home/vscode/.claude.json
|
|
163
170
|
|
|
171
|
+
# Cloud-provider credential pivot: ~/.agentbox-creds/<agent>/ is where the
|
|
172
|
+
# per-org `agentbox-credentials` Daytona volume gets mounted at runtime (three
|
|
173
|
+
# subpath mounts: claude/, codex/, opencode/). Three symlinks route the
|
|
174
|
+
# agent-expected credential paths through to it so the in-box agent reads
|
|
175
|
+
# tokens from the volume while the surrounding config sits on the snapshot-
|
|
176
|
+
# baked sandbox FS.
|
|
177
|
+
#
|
|
178
|
+
# These symlinks are dangling at build time — their targets only resolve once
|
|
179
|
+
# the volume is mounted. That's fine: ln succeeds, and the kernel resolves
|
|
180
|
+
# symlinks lazily on open().
|
|
181
|
+
#
|
|
182
|
+
# The Docker provider is unaffected: its named `agentbox-{claude,codex,
|
|
183
|
+
# opencode}-config` volumes mount *over* /home/vscode/.claude etc., obscuring
|
|
184
|
+
# the symlinks; the volume content includes the credential files directly.
|
|
185
|
+
RUN mkdir -p /home/vscode/.agentbox-creds/claude \
|
|
186
|
+
/home/vscode/.agentbox-creds/codex \
|
|
187
|
+
/home/vscode/.agentbox-creds/opencode \
|
|
188
|
+
/home/vscode/.codex \
|
|
189
|
+
/home/vscode/.local/share/opencode \
|
|
190
|
+
&& ln -s /home/vscode/.agentbox-creds/claude/.credentials.json \
|
|
191
|
+
/home/vscode/.claude/.credentials.json \
|
|
192
|
+
&& ln -s /home/vscode/.agentbox-creds/codex/auth.json \
|
|
193
|
+
/home/vscode/.codex/auth.json \
|
|
194
|
+
&& ln -s /home/vscode/.agentbox-creds/opencode/auth.json \
|
|
195
|
+
/home/vscode/.local/share/opencode/auth.json \
|
|
196
|
+
&& chown -R vscode:vscode /home/vscode/.agentbox-creds \
|
|
197
|
+
/home/vscode/.codex \
|
|
198
|
+
/home/vscode/.local \
|
|
199
|
+
&& chown -h vscode:vscode /home/vscode/.claude/.credentials.json \
|
|
200
|
+
/home/vscode/.codex/auth.json \
|
|
201
|
+
/home/vscode/.local/share/opencode/auth.json
|
|
202
|
+
|
|
164
203
|
# Prepare /home/vscode/.vscode-server and /home/vscode/.cursor-server (+ their
|
|
165
204
|
# extensions subdirs) so the named volumes mounted at runtime — per-box
|
|
166
205
|
# `agentbox-{vscode,cursor}-server-<id>` over the server dirs, then shared
|
|
@@ -184,6 +223,29 @@ USER vscode
|
|
|
184
223
|
RUN curl -fsSL https://claude.ai/install.sh | bash -s stable
|
|
185
224
|
USER root
|
|
186
225
|
|
|
226
|
+
# OpenAI Codex CLI. The @openai/codex npm package ships platform-native
|
|
227
|
+
# prebuilds for linux arm64/amd64, so a plain global install is enough.
|
|
228
|
+
# Parallel to the Claude Code install above: `agentbox codex` launches it in a
|
|
229
|
+
# tmux session and the box mounts a synced `agentbox-codex-config` volume at
|
|
230
|
+
# ~/.codex for auth/config (see packages/sandbox-docker/src/codex.ts).
|
|
231
|
+
#
|
|
232
|
+
# `bubblewrap` (bwrap) is Codex's command-sandbox backend; without it on PATH
|
|
233
|
+
# Codex falls back to a bundled copy and prints a warning on every run. It
|
|
234
|
+
# works nested because the agentbox container already runs with --cap-add
|
|
235
|
+
# SYS_ADMIN + apparmor:unconfined.
|
|
236
|
+
RUN apt-get update \
|
|
237
|
+
&& apt-get install -y --no-install-recommends bubblewrap \
|
|
238
|
+
&& rm -rf /var/lib/apt/lists/* \
|
|
239
|
+
&& npm install -g @openai/codex
|
|
240
|
+
|
|
241
|
+
# OpenCode CLI (sst/opencode) — the multi-provider terminal coding agent.
|
|
242
|
+
# Parallel to the Claude/Codex installs: `agentbox opencode` launches it in a
|
|
243
|
+
# tmux session and the box mounts a synced `agentbox-opencode-config` volume
|
|
244
|
+
# (see packages/sandbox-docker/src/opencode.ts). OpenCode splits its state
|
|
245
|
+
# across ~/.config/opencode (config) and ~/.local/share/opencode (data + auth);
|
|
246
|
+
# the volume holds both, with the config dir relocated via OPENCODE_CONFIG_DIR.
|
|
247
|
+
RUN npm install -g opencode-ai
|
|
248
|
+
|
|
187
249
|
# Browser support for in-box agents: Vercel's agent-browser drives Chrome via
|
|
188
250
|
# CDP. Two things have to happen here:
|
|
189
251
|
#
|
|
@@ -217,15 +279,26 @@ RUN apt-get update \
|
|
|
217
279
|
|
|
218
280
|
RUN npm install -g agent-browser playwright
|
|
219
281
|
|
|
282
|
+
# Portless CLI (https://portless.sh). Only the client — the box never runs the
|
|
283
|
+
# proxy; that's a host process. With `portless.enabled`, createBox bind-mounts
|
|
284
|
+
# the host's Portless state dir into the box and sets PORTLESS_STATE_DIR, so
|
|
285
|
+
# the in-box `portless list`/`get` share the host's route registry (discovery).
|
|
286
|
+
# Requires Node 24+ — hence the setup_24.x bump above.
|
|
287
|
+
RUN npm install -g portless
|
|
288
|
+
|
|
220
289
|
# Download Chromium as `vscode` so the ms-playwright cache lands in vscode's
|
|
221
290
|
# home (the user agent-browser runs as). The downloaded binary lives at
|
|
222
|
-
# `chromium-XXXX/chrome-linux
|
|
223
|
-
# revision number that changes between releases —
|
|
224
|
-
#
|
|
225
|
-
#
|
|
291
|
+
# `chromium-XXXX/chrome-linux*/chrome`, where XXXX is a Playwright-internal
|
|
292
|
+
# revision number that changes between releases — and the inner dir is
|
|
293
|
+
# `chrome-linux` for old releases and `chrome-linux64` (or `chrome-linux/arm64`)
|
|
294
|
+
# for current Chrome-for-Testing builds. Glob both. We resolve once and write
|
|
295
|
+
# a stable symlink so AGENT_BROWSER_EXECUTABLE_PATH can point at something
|
|
296
|
+
# predictable.
|
|
226
297
|
USER vscode
|
|
227
298
|
RUN playwright install chromium \
|
|
228
|
-
&&
|
|
299
|
+
&& CHROME_BIN="$(ls /home/vscode/.cache/ms-playwright/chromium-*/chrome-linux*/chrome 2>/dev/null | sort | tail -1)" \
|
|
300
|
+
&& test -n "$CHROME_BIN" \
|
|
301
|
+
&& ln -sf "$CHROME_BIN" /tmp/chromium-link \
|
|
229
302
|
&& test -x "$(readlink /tmp/chromium-link)"
|
|
230
303
|
USER root
|
|
231
304
|
RUN mv /tmp/chromium-link /usr/local/bin/chromium
|
|
@@ -285,12 +358,12 @@ RUN chmod +x /usr/local/bin/agentbox-dockerd-start
|
|
|
285
358
|
COPY packages/sandbox-docker/scripts/agentbox-checkpoint-cleanup /usr/local/bin/agentbox-checkpoint-cleanup
|
|
286
359
|
RUN chmod +x /usr/local/bin/agentbox-checkpoint-cleanup
|
|
287
360
|
|
|
288
|
-
#
|
|
289
|
-
#
|
|
290
|
-
#
|
|
291
|
-
#
|
|
292
|
-
#
|
|
293
|
-
#
|
|
361
|
+
# In-box link opener. This wrapper routes http(s) URLs to `agentbox-ctl open`,
|
|
362
|
+
# which opens the link in the box's own Chromium (agent-browser) and notifies
|
|
363
|
+
# the relay so the host user can be offered to also open it on the host. It
|
|
364
|
+
# shadows xdg-utils' /usr/bin/xdg-open (the symlink lands earlier in PATH) and
|
|
365
|
+
# is set as $BROWSER so any tool that opens a link — Claude Code's OAuth flow,
|
|
366
|
+
# `gh`, `git web--browse`, python's webbrowser — routes through it.
|
|
294
367
|
COPY packages/sandbox-docker/scripts/agentbox-open /usr/local/bin/agentbox-open
|
|
295
368
|
RUN chmod +x /usr/local/bin/agentbox-open \
|
|
296
369
|
&& ln -sf /usr/local/bin/agentbox-open /usr/local/bin/xdg-open
|
|
@@ -309,6 +382,10 @@ RUN printf '%s\n' \
|
|
|
309
382
|
'set -as terminal-overrides ",*:RGB"' \
|
|
310
383
|
'set -as terminal-features ",*:hyperlinks"' \
|
|
311
384
|
'set -as terminal-features ",*:RGB"' \
|
|
385
|
+
'set -g allow-passthrough on' \
|
|
386
|
+
'set -g set-clipboard on' \
|
|
387
|
+
'set -g extended-keys on' \
|
|
388
|
+
'set -as terminal-features ",*:extkeys"' \
|
|
312
389
|
'set -g mouse on' \
|
|
313
390
|
'bind -T copy-mode WheelUpPane send -N2 -X scroll-up' \
|
|
314
391
|
'bind -T copy-mode WheelDownPane send -N2 -X scroll-down' \
|
|
@@ -337,6 +414,13 @@ RUN chmod 0644 /etc/claude-code/CLAUDE.md
|
|
|
337
414
|
COPY packages/sandbox-docker/scripts/claude-managed-settings.json /etc/claude-code/managed-settings.json
|
|
338
415
|
RUN chmod 0644 /etc/claude-code/managed-settings.json
|
|
339
416
|
|
|
417
|
+
# Codex activity-reporting hooks. Unlike Claude's managed-settings (an /etc
|
|
418
|
+
# enterprise path), Codex discovers hooks at ~/.codex/hooks.json — so this is
|
|
419
|
+
# staged in the image and seeded into the codex-config volume by
|
|
420
|
+
# seedCodexHooks() at create/start time. See packages/sandbox-docker/src/codex.ts.
|
|
421
|
+
COPY packages/sandbox-docker/scripts/agentbox-codex-hooks.json /usr/local/share/agentbox/codex-hooks.json
|
|
422
|
+
RUN chmod 0644 /usr/local/share/agentbox/codex-hooks.json
|
|
423
|
+
|
|
340
424
|
# /etc/agentbox/ holds runtime-injected box.env (written by `agentbox create`
|
|
341
425
|
# via docker exec). Pre-created here so the writable layer starts with the
|
|
342
426
|
# right perms; the file itself appears at create time.
|
|
@@ -7,16 +7,22 @@ description: Generate an agentbox.yaml for the current AgentBox workspace. Invok
|
|
|
7
7
|
|
|
8
8
|
## Box layout (what you're configuring against)
|
|
9
9
|
|
|
10
|
-
Your user i `vscode` and you can use
|
|
10
|
+
Your user i `vscode` and you can use `sudo` to run commands as root.
|
|
11
11
|
|
|
12
|
-
`/workspace` is the
|
|
12
|
+
`/workspace` is where the user code lives, a per-box git worktree on a fresh `agentbox/<box-name>` branch (or a tar-piped copy of the host workspace for non-git projects).
|
|
13
|
+
Run `agentbox checkpoint --set-default` (similar to `docker commit`) to save any changes make to the system and workspace so that new boxes will start from a warm state. Everything is wiped on `agentbox destroy`.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
Some special folders:
|
|
15
16
|
|
|
16
|
-
- **Host main repo's `.git/`** — bind-mounted RW at its identical absolute host path. In-box commits land on the host's branch refs (visible to `git log` on the host immediately); the box itself carries no SSH/git creds, so `git push` goes through the host relay (`agentbox-ctl git push`). The host's **working tree is never written to** — only refs/objects under `.git/`.
|
|
17
|
-
- **`~/.claude`** —
|
|
17
|
+
- **Host main repo's `.git/`** — If the box bind-mounted RW at its identical absolute host path. In-box commits land on the host's branch refs (visible to `git log` on the host immediately); the box itself carries no SSH/git creds, so `git push` goes through the host relay (`agentbox-ctl git push`). The host's **working tree is never written to** — only refs/objects under `.git/`.
|
|
18
|
+
- **`~/.claude`** — and similar home folders for coding agents are seeded from the host's `~/.claude` on each create so auth, skills, and plugins persist without leaking the host's home dir.
|
|
18
19
|
- **`agentbox.yaml`** — read by `agentbox-ctl` from `/workspace`. Tasks and services declared here are what the supervisor will run.
|
|
19
20
|
|
|
21
|
+
Exposed ports and services:
|
|
22
|
+
- **portless** - every port with `expose:` setting in agentbox.yaml, will be exposed not only as a local port but also as a special domain name `https://<name>.localhost` (so on https) using `portless` cli and proxy. This will be also mapped to the host where also `portless` proxy is running so users can access the same service on the same looking url.
|
|
23
|
+
- **vnc** - the webVNC server exposed on 6080 will be proxies to the host on a random port.
|
|
24
|
+
- **vscode** - the vscode server is proxied to the host on a random port.
|
|
25
|
+
|
|
20
26
|
## Goal
|
|
21
27
|
|
|
22
28
|
Produce a `/workspace/agentbox.yaml` that captures this project's services, tasks, and box defaults so the in-box supervisor (`agentbox-ctl`) can boot the workspace deterministically.
|
|
@@ -64,7 +70,7 @@ The box's primary web app (the dev server / Next.js / API the user opens in a br
|
|
|
64
70
|
as: 80 # must be 80 — the container port AgentBox publishes
|
|
65
71
|
```
|
|
66
72
|
|
|
67
|
-
At most **one** service may set `expose:`. AgentBox forwards container `:80` to `127.0.0.1:<port>` and publishes it on the host, so `agentbox list`/`status` show it as the box's main URL on every engine (no OrbStack dependency). Set this on the same service whose `ready_when:` you just wrote (a DB or worker should **not** get `expose:`).
|
|
73
|
+
At most **one** service may set `expose:`. AgentBox forwards container `:80` to `127.0.0.1:<port>` and publishes it on the host with `portless` proxy to a <boxname>.localhost url, so `agentbox list`/`status` show it as the box's main URL on every engine (no OrbStack dependency). Set this on the same service whose `ready_when:` you just wrote (a DB or worker should **not** get `expose:`).
|
|
68
74
|
|
|
69
75
|
## 4. Restart + backoff
|
|
70
76
|
|
|
@@ -179,11 +185,12 @@ Tell the user (verbatim):
|
|
|
179
185
|
```
|
|
180
186
|
|
|
181
187
|
your box is ready, you can start more sessions with `agentbox claude`
|
|
188
|
+
you can access the web app at https://<boxname>.localhost
|
|
182
189
|
|
|
183
190
|
## 10. Known issues
|
|
184
191
|
|
|
185
192
|
- For Nextjs/Vite/Tasnstack projects, makes sure to forward also websocket for hot reload.
|
|
186
193
|
|
|
187
|
-
-
|
|
194
|
+
- Service like flask, nextjs, BETTER_AUTH_URL, NEXT_PUBLIC_APP_URL should use the <boxname>.localhost url for the local development so that on the host it will use the same url as the box.
|
|
188
195
|
|
|
189
|
-
-
|
|
196
|
+
- The `install` task is intentionally a no-op once `node_modules/.agentbox-installed` exists. Do **not** remove the marker guard to "force a fresh install" — that reinstalls on every box start. To force a one-off rebuild, delete `node_modules` (or just the marker) then run `agentbox-ctl reload`.
|