Unified Strait CLI architecture, interaction model, and migration status.
The Strait CLI is being redesigned as a single unified TypeScript CLI with code-first workflows and operational parity.
The canonical architecture and migration matrix live in:
apps/cli/README.md
Unified CLI direction
Status: Phase A architecture freeze and Phases B-G implementation completed; Phase H cleanup is active.
Locked platform direction:
- One CLI surface:
strait - TypeScript implementation in
apps/cli - Command modeling with
stricli - Runtime architecture with Effect services
- Hybrid UX: interactive for
init/deploy/dev, script-first for list/get/admin surfaces - Universal configuration via
strait.json(replaces deprecatedstrait.config.ts) strait initcommand for scaffolding config files interactively- Atomic deployment versions with promote/rollback flow
- Hosted runtime support target: Node + Bun (while preserving endpoint execution mode)
Interaction policy
Default behavior is deterministic and automation-safe.
- Interactive flows are command-scoped (
init,deploy,dev). - Non-TTY, piped output, and
--cialways disable prompts and animation. - JSON/script output must remain stable and machine-consumable.
Animation and accessibility
Motion is optional feedback, never required behavior.
- Only micro-animations are allowed (spinners/progress/transitions).
- Motion is disabled in non-TTY, CI, and reduced-motion contexts.
- Every animated state must have equivalent plain-text fallback output.
Command migration and parity
Existing Go CLI command surfaces remain the migration baseline.
The Go command set in apps/strait/cmd/strait is the parity source for migration into the unified JS CLI.
Key migration notes:
- Operational groups (
jobs,runs,workflows,events, etc.) migrate with script-safe parity. - New code-first/deployment groups (
build,deploy,promote,rollback) are introduced. - YAML declarative commands (
validate,apply,diff) are removed from the unified CLI cutover path.
Installation (current state)
Until unified CLI release channels are in place, use the existing Go build path.
# Build from source (from repo root)
go build -o strait ./apps/strait/cmd/strait
# Or install from the app directory
cd apps/strait && go install ./cmd/straitLegacy command reference pages
The CLI reference pages under
docs/cli/*currently document the existing command surface and are being migrated in phases.
Use those pages as compatibility reference during cutover. The unified CLI contract takes precedence for all new work.