Repository navigation
Choose the sandbox backend at install time so Add node is ready after install - #152
Merged
Merged
Conversation
…the install host install.sh --sandbox docker|microsandbox|e2b|none (default docker, none for --web-only) saves the deployment through /core/v1/sandbox/deployment once the services are healthy, as Web's setup would. Docker and microsandbox use Web's Standard size from the bundled copy of apps/web/src/features/sandbox/standard-sizes.json and the bundle's Runtime release; E2B takes --e2b-api-key-file and --e2b-template and is refused before anything is installed when public_url is loopback. A repair or conversion never selects a backend. A refused selection prints Core's message and exits 1 with the services running. The installer no longer adds its own host as a node: local_node.py becomes sandbox_setup.py without the enrollment code or PARSAR_NODE_ENROLLMENT_TOKEN, and --sandbox-provider and --provider fail naming --sandbox. The summary says what the sandboxes are and where to add nodes, or why a loopback install can't yet.
… key file read A new installation whose first start fails now ends its error with "The sandbox backend was not chosen; after the repair, choose it ...", because the repair run never selects a backend. Private key files (the E2B API key and the Core key) are opened with O_NOFOLLOW and O_NONBLOCK, checked with fstat and read up to the 4 KiB limit plus one byte. The bundled standard-sizes.json must have exactly each provider's fields. Docs: CONTRIBUTING and the microsandbox guide no longer mention local-node flags; the install guide states the E2B key file rules. Tests cover a symlinked or 5000-byte E2B key file and a checksum list without standard-sizes.json.
SaladDay
added a commit
that referenced
this pull request
Sep 26, 2026
Web's Add node command passes the token on standard input in both modes (#148), and the Core installer no longer sets the variable (#152). The node installer now refuses the variable in every mode, with a one-line message naming --enrollment-token-stdin, instead of reading it. Standard input and the hidden prompt remain. A new node without a token is told to pass it on standard input. The operations upgrade table records the retirement.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 2b-installer of the new-user install work: the Core installer picks the sandbox backend at install time, so Add node is available straight after install. The installer no longer adds its own host as a node.
install.sh --sandbox docker|microsandbox|e2b|nonedocker.--web-onlyallows onlynone.POST /core/v1/sandbox/deploymentwith the Core key. It sends the same body Web's setup sends.apps/web/src/features/sandbox/standard-sizes.json, the single source for the Standard size, plus the bundle manifest's Runtime release.--e2b-api-key-fileand--e2b-template. The key file must be an absolute path, private, not a symlink and at most 4 KiB; it is read withO_NOFOLLOWandfstat. E2B is refused before anything is created when the public URL is loopback or missing.--convertnever create a deployment.--sandbox-providerand--providerfail with a message that names--sandbox.local_node.pybecomessandbox_setup.py. The installer's own node enrollment and its use ofPARSAR_NODE_ENROLLMENT_TOKENare removed.build-core-distribution.shcopies the sizes file into the bundle, and bundle verification requires it.configuration.md(the sizes table now points to the file), the Hosted Sandbox Manager guide, CONTRIBUTING and the microsandbox README.Review
parsarworks withoutlocal_node.py.--sandboxchoice lost after a failed first start) and the P3s were fixed in92cd1480: stale docs, tests for key-file refusals and a missing sizes file,O_NOFOLLOWreads, and exact size keys. They were verified by tests and the gate, per the small-fix rule.Verification
92cd1480, the exact head including main1f0920aa, passed. The Playwright browser cases were skipped on the server (Chrome unavailable; approved skip).ac05d3aa(Kimi only):--sandbox nonecreated no deployment.Need help on this PR? Tag
@codesmithwith what you need. Autofix is disabled.