Headless / non-interactive launch mode for orchestrators #315

Open
opened 2026-06-29 11:43:02 -04:00 by didericis-claude · 0 comments
Collaborator

Problem

cli.py start is interactive-only. It drives TUI selectors (agent pick, bottle multiselect, name/color modal) and a y/N preflight, then attaches a blocking PTY to the controlling terminal. That shape cannot be driven by an orchestrator (e.g. Paseo), CI, or webhook/comment dispatch, and it makes spinning up a known agent+bottle more friction than necessary.

Proposal

A --headless mode on start that takes agent / bottles / label / color from flags + manifest defaults, skips every prompt, and still execs the agent on the inherited stdio/PTY so an external PTY owner drives the session.

./cli.py start <agent> --headless [--bottle NAME ...] [--label L] [--color C]
  • --bottle (repeatable) defaults to the agent's own bottle: when omitted
  • --label defaults to the agent name; slug collisions auto-uniquify
  • --color defaults to none
  • preflight auto-confirmed (no human at the prompt)
  • --headless --dry-run previews the resolved plan without launching

Only the launch chrome goes non-interactive — the agent itself still runs as an interactive session on whatever PTY the caller provides.

Why

Prerequisite for orchestrator integration (Paseo), webhook/comment-driven dispatch, and remote spin-up — and a direct fix for the spin-up ergonomics.

## Problem `cli.py start` is interactive-only. It drives TUI selectors (agent pick, bottle multiselect, name/color modal) and a y/N preflight, then attaches a blocking PTY to the controlling terminal. That shape cannot be driven by an orchestrator (e.g. Paseo), CI, or webhook/comment dispatch, and it makes spinning up a known agent+bottle more friction than necessary. ## Proposal A `--headless` mode on `start` that takes agent / bottles / label / color from flags + manifest defaults, skips every prompt, and still execs the agent on the inherited stdio/PTY so an external PTY owner drives the session. ``` ./cli.py start <agent> --headless [--bottle NAME ...] [--label L] [--color C] ``` - `--bottle` (repeatable) defaults to the agent's own `bottle:` when omitted - `--label` defaults to the agent name; slug collisions auto-uniquify - `--color` defaults to none - preflight auto-confirmed (no human at the prompt) - `--headless --dry-run` previews the resolved plan without launching Only the launch *chrome* goes non-interactive — the agent itself still runs as an interactive session on whatever PTY the caller provides. ## Why Prerequisite for orchestrator integration (Paseo), webhook/comment-driven dispatch, and remote spin-up — and a direct fix for the spin-up ergonomics.
didericis added the Kind/Feature label 2026-06-29 11:45:20 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: didericis/bot-bottle#315