Strait Docs
CLI

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 deprecated strait.config.ts)
  • strait init command 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 --ci always 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/strait

Legacy 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.

Was this page helpful?

On this page