Skip to content

feat: --stack-start=manual holds submitted stacks until started from the UI - #73

Merged
martypitt merged 2 commits into
mainfrom
feat/manual-stack-start
Oct 26, 2026
Merged

martypitt merged 2 commits into
mainfrom
feat/manual-stack-start

Conversation

@martypitt

Copy link
Copy Markdown
Contributor

Summary

Adds a startup option that controls whether submitted stacks start straight away:

nebula --http=8099 --stack-start=manual
# or
NEBULA_STACK_START=manual nebula --http=8099
  • auto (default): no change. Stacks start as soon as they're submitted.
  • manual:
    • Submitted stacks are held as Not started until they're started from the management UI, or with POST /api/stacks/{id}/start.
    • Resubmitting a stack still replaces it, and the replacement waits too.
    • Useful for demos, or when a connected Orbital submits more stacks than you want running.
  • The setting only applies with --http. When running a script there's no UI to start the stack from, so Nebula warns and starts it straight away.

Also, submissions over /stream/stacks no longer log the whole payload, which contained every script in the submission. It now logs one line naming the stacks, e.g. Received submission of 8 stack(s): orbital1/..., org2/....

Details

  • Consumers still see held stacks. A stack used to be connected to its event and log streams only when it started on submit. A held stack is now connected when it's submitted, so Orbital sees it as NotStarted and gets its connection details once it starts. Without this, starting a never-started stack from the UI would have left Orbital with no updates.
  • The connection is idempotent. Previously every start added another subscription to the component events.
  • startStack and startComponent now refresh the component info returned by GET /stacks. Previously only the first start set it.
  • UI: stacks whose components have all never started show as Not started, with a Start action. The stack page says "Waiting to be started".
  • Docs: docs/pages/cli.mdx gets the option in the options table and a "Starting stacks manually" section with CLI, env-var and docker-compose examples. CLAUDE.md and nebula-ui/README.md get short mentions.

Test plan

  • StackStartModeTest (new):
    • a manual stack is held, reports NotStarted, then Running once started, and fills in GET /stacks
    • a replacement stack is held
    • resubmitting the same source leaves a started stack running
    • auto mode is unchanged
  • Existing runner and server tests pass: StackRunnerResubmissionTest, StackStartFailureTest, NebulaServerTest, StreamStacks*, UpdateStackRequestCompatibilityTest
  • Manual run with NEBULA_STACK_START=manual:
    • a submitted S3 stack waited with no containers until started from the UI
    • a connected Orbital's 8 stacks were all held
    • the submission logged one line

🤖 Generated with Claude Code

…the UI

Adds a startup option to control whether submitted stacks start straight away:

  nebula --http=8099 --stack-start=manual   (or NEBULA_STACK_START=manual)

- auto (default): unchanged - stacks start as soon as they're submitted.
- manual: stacks are held as NotStarted until started from the management UI
  (or POST /api/stacks/{id}/start). A resubmission still replaces the stack,
  and the replacement waits too. Ignored when running a script, where there's
  no UI to start it from.

A held stack is wired to its event and log streams on submission, so
consumers (eg: Orbital) see it as NotStarted and receive its coordinates once
it starts. Previously that wiring only happened on the initial start path, so
starting a never-started stack would have left consumers without updates.
startStack/startComponent now also refresh the state reported by GET /stacks.

The UI shows these stacks as "Not started", with a Start action.

Also stops logging the full payload of each /stream/stacks submission (every
script in it) - it now logs a single line naming the submitted stacks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@netlify

netlify Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for orbital-nebula ready!

Name Link
🔨 Latest commit e498154
🔍 Latest deploy log https://app.netlify.com/projects/orbital-nebula/deploys/6ab7a679406f830008407bf9
😎 Deploy Preview https://deploy-preview-73--orbital-nebula.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

# Conflicts:
#	nebula-ui/src/pages/stack-detail/ComponentsView.tsx
@martypitt
martypitt merged commit 2dd95c1 into main Oct 26, 2026
8 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