Skip to content

isb 3.0.0: workspaces are removed; a dev box is a stack you deploy; every org gets the org API listener - #67

Merged
knowsuchagency merged 3 commits into
mainfrom
we-need-to-remove-lbm9
Oct 12, 2026
Merged

knowsuchagency merged 3 commits into
mainfrom
we-need-to-remove-lbm9

Conversation

@knowsuchagency

Copy link
Copy Markdown
Contributor

Breaking: isb no longer has a built-in workspace (the one-per-org long-lived machine with a home, an isb_ws_ token, herdr terminals, published ports and previews, setup scripts, secret delivery, workspace image builds and the Docker nesting exception). A persistent dev box is a one-replica stack the org deploys itself.

  • Org API listener for every org: http://<org gateway>:8481/orgs/<org>/{mcp,api/v1}, own subnet only, org API tokens only. --workspace-mcp-port is --org-api-port (ISB_ORG_API_PORT).
  • Sandboxes keep their lifecycle under their own name: sandbox_life + daemon::sandboxes (activity, reaper), the sandbox_settings tool, isb sandbox ls|extend|settings, a Sandboxes web page (list, extend, delete, shell, defaults). Per-org defaults live in <org root>/sandboxes.json, carried over from workspaces/settings.json on first read.
  • Stable SSH to a stack service: isb ssh-config ORG/STACK/SERVICE and isb ssh-proxy ORG/STACK/SERVICE reach the service's current replica; the block checks host keys strictly through KnownHostsCommand isb ssh-proxy --known-hosts instead of pinning keys a deploy makes stale.
  • Nesting: nothing in an org nests; isb org update/create drops the workspace-homes and allow-nesting project keys. Leftover workspace containers keep running; the daemon logs once how to remove them.
  • Removed: isb workspace, 22 workspace_* tools, org_nesting, isb org nesting, --workspace-pool, --workspace-home-root, --preview-domain, the workspace REST resource, the terminal session= parameter.
  • Docs, SKILL.md, guide topics, TASKS.md, README and the OpenAPI snapshot follow.

Verified: cargo test/clippy/doc, web tests and build, docs check; on a preview VM (org API listener from inside an org with an org token, refusals, sandbox defaults carry-over, extend, leftover warning, Sandboxes page and shell); the new SSH service target against titan's exa devbox.

Titan's 8 org workspaces were moved to devbox stacks on isb 2.4.0 beforehand (titan-iac branch isb-devboxes).

https://claude.ai/code/session_01JGncQcm5oCvqHnJ7m4Fodu

…lts get their own home

isb no longer has a built-in workspace (the one-per-org long-lived machine
with a home, an isb_ws_ token, herdr terminals, published ports and
previews, setup scripts, secret delivery, workspace image builds and the
Docker nesting exception). A persistent dev box is a one-replica stack the
org deploys itself, reached with isb ssh-config ORG/INSTANCE.

- The org API listener (bridge gateway :8481, /orgs/<org>/{mcp,api/v1},
  own subnet only, org API tokens only) now runs for every org.
  --workspace-mcp-port is --org-api-port (ISB_ORG_API_PORT).
- Sandbox lifetime moved out of the workspace code: sandbox_life (model),
  daemon::sandboxes (activity, reaper, sandbox_settings tool), stored in
  <org root>/sandboxes.json and carried over from workspaces/settings.json.
- isb sandbox ls|extend|settings replaces isb workspace sandboxes|extend|settings.
- Nothing in an org may nest; ensure drops the workspace-homes and
  allow-nesting project keys.
- Leftover workspace containers are left running; the daemon logs once how
  to remove them.
- Web UI: a Sandboxes page (list, extend, delete, shell, defaults) replaces
  the workspace page. Docs, SKILL.md, guide topics and the API snapshot
  follow.

Claude-Session: https://claude.ai/code/session_01JGncQcm5oCvqHnJ7m4Fodu
A stack replica is replaced by every deploy, with a new name and new host
keys, so a long-lived box deployed as a stack needs a target that outlives
its replicas. ORG/STACK/SERVICE reaches the service's running replica (in
rotation first, then the lowest slot); its ssh-config block is
`<service>.<stack>.<org>.isb` and checks host keys strictly through
`KnownHostsCommand isb ssh-proxy --known-hosts`, which asks isb for the
current replica's keys at each connection, instead of pinning keys a deploy
makes stale.

Claude-Session: https://claude.ai/code/session_01JGncQcm5oCvqHnJ7m4Fodu
@knowsuchagency
knowsuchagency merged commit ab97446 into main Oct 12, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant