GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - strait-dev/cli: CLI for Strait — the agentic workflow orchestration platform. 55+ commands for jobs, workflows, deployments, secrets, and real-time monitoring. Scriptable for CI/CD and agent toolchains.

BranchesTags
Open more actions menu

Latest commit

 

History

116 Commits
116 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
cmd/strait
cmd/strait
 
 
docs
docs
 
 
internal
internal
 
 
.gitignore
.gitignore
 
 
.golangci.yml
.golangci.yml
 
 
.goreleaser.yaml
.goreleaser.yaml
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
lefthook.yml
lefthook.yml
 
 

Repository files navigation

Strait

Command-line interface for the Strait orchestration platform

CI Release License OpenSSF Scorecard Go Platform

Website · Documentation · Platform repo · Releases


What is Strait?

Strait is an open-source job orchestration platform. Your code stays on your infrastructure — Vercel, Cloudflare Workers, AWS Lambda, Netlify, Express, Kubernetes, or a long-lived Go worker. Strait schedules, retries, fans out, and observes — it does not host your code.

Two transports, one mental model:

  • strait.serve — Strait calls a signed HTTPS endpoint you expose (push).
  • strait.worker — your process holds a long-lived gRPC stream and pulls tasks (pull).

This repo ships the CLI: scaffold projects, register jobs, manage endpoints, run a local tunnel, inspect runs, and operate workers.

Installation

# Homebrew (macOS / Linux)
brew install strait-dev/tap/strait

# From source (requires Go 1.26+)
go install github.com/strait-dev/cli/cmd/strait@latest

Pre-built binaries for darwin/linux/windows on GitHub Releases.

Quick start

# 1. Scaffold a starter project (pick any template — see `strait init --list`)
strait init --template vercel --name my-app

# 2. Authenticate with the orchestrator (opens a browser)
strait auth login

# 3. Sync strait.json orchestration definitions
cd my-app && strait sync

# 4. Point Strait at your deployed endpoint and round-trip a signed canary
strait endpoint set hello https://my-app.vercel.app/api/strait
strait endpoint verify hello

# 5. Watch a run end-to-end
strait runs watch <run-id>

Run a worker instead

Workers are SDK programs, not CLI processes — scaffold one and run it on your own infrastructure:

strait init --template go-worker --name my-worker
cd my-worker && go run .          # opens a gRPC stream to the orchestrator
strait worker status              # confirm it's connected

Local development with a tunnel

strait dev launches a Cloudflare Quick Tunnel, rewrites each job's endpoint_url to point at the tunnel, and restores the original URLs on exit. Drop into any scaffold:

strait dev

Templates

strait init --template <name> scaffolds a working starter. Currently:

Template Stack
vercel Next.js App Router + serve()
cloudflare Cloudflare Workers + serve()
lambda AWS Lambda (Function URL) + serve()
netlify Netlify Functions + serve()
express Node.js Express + serve()
go-chi-serve Go + chi router + serve.Serve
go-worker Go worker holding a gRPC stream
k8s-worker TypeScript worker for Kubernetes

Each scaffold ships a starter strait.json so strait sync works immediately.

Example strait.json:

{
  "$schema": "https://schemas.strait.dev/v1/strait.json",
  "version": "1",
  "jobs": [
    {
      "slug": "hello",
      "name": "Hello",
      "endpoint_url": "https://my-app.example.com/api/strait",
      "max_attempts": 3,
      "timeout_secs": 30
    }
  ],
  "workflows": []
}

Commands

strait --help shows the full tree. Canonical groups:

Group Commands
Scaffolding init --template <name>
Migration migrate inngest|trigger|hatchet --input <path>
Sync sync (strait.json orchestration upsert; supports --dry-run, --prune)
Endpoint endpoint set/get/verify
Worker worker status/drain/get/tasks (workers run on customer infra via strait-go/worker)
Dev dev (Cloudflare Tunnel + auto-register)
Jobs jobs list/get/create/update/delete/clone/trigger/health/versions/dependencies/add-dependency/remove-dependency/pause/resume/batch/batch-enable/batch-disable/trigger-bulk/version-get
Job groups job-groups list/get/create/update/delete/jobs/pause/resume/stats
Runs runs list/get/logs/cancel/replay/reschedule/dlq/dlq-replay/outputs/tool-calls/checkpoints/watch/children/lineage/dependency-status/restart/pause/resume/state/resources/debug-bundle/usage/debug/reset-idempotency-key/bulk-cancel/bulk-cancel-all/bulk-replay/bulk-dlq-replay
Workflows workflows list/get/create/update/delete/clone/trigger/dry-run/plan/simulate/versions/diff/policy/visualize/graph/active-versions/version-get/version-impact/version-steps/canary-get/canary-set/canary-rollback
Workflow runs workflow-runs list/get/pause/resume/retry/approve-step/retry-step/skip-step/force-complete-step/compare/compensate/compensation-plan/debug/explain/graph/labels/timeline/replay-subtree/bulk-cancel/bulk-replay, workflow-runs steps {list|approve|retry|skip|force-complete}
Deployments deployments list/create/finalize/promote/rollback/canary
Triggers triggers list/get/send/stream/purge (raw send uses /v1/events/dispatch)
Webhooks webhooks list/get/create/delete/rotate-secret/deliveries/retry/test (subscriptions API)
Event sources event-sources list/get/create/update/delete/subscriptions/subscribe/unsubscribe
Notifications notifications list/get/create/update/delete/deliveries
Log drains log-drains list/get/create/update/delete
Logs logs
Secrets secrets list/get/create/delete, api-keys list/create/rotate/revoke/expiring-soon
Team / RBAC team list/add/remove/roles/policies/audit, roles list/get/create/update/delete, tag-policies list/create/delete
Projects / Env projects list/switch/get/create/delete/export/import, env/environments list/get/create/update/delete/variables
Analytics analytics costs/reliability/top-failing/performance/approvals/cost-insights/cost-trends/cost-top/cost-by-trigger/cost-forecast, analytics {runs|jobs|tags|webhooks|workflows|events} ... (cloud edition)
Billing / Usage usage current/history/forecast/anomalies/projects/export/email-preferences-get/email-preferences-set, billing spending-limit/project-budget/anomaly-config/regions/downgrade-preview/check-org-limit
Export / Stats export jobs/runs/workflows, stats, batch-operations list/get, organizations jobs/runs
Auth auth login/logout/whoami, context, alias, completion, config
Dashboard tui (interactive jobs/runs/workflows pane switcher)
Diagnostics debug bundle/profile/request, version, upgrade
Extensions extension list/install/run/create/remove

strait deploy push is deprecated and currently delegates to strait sync for compatibility. New scripts should use strait sync.

Configuration

Strait CLI reads configuration from (in order of precedence):

  1. Command-line flags (--server, --project, --org, --api-key)
  2. Environment variables (STRAIT_SERVER, STRAIT_PROJECT, STRAIT_ORG, STRAIT_API_KEY)
  3. Per-project file: ./.strait.yaml
  4. User-global file: ~/.config/strait/config.yaml

Org-scoped commands (billing, some usage views) resolve the organization from --org, then STRAIT_ORG, then the org config key or active context.

Credentials from strait auth login are stored in the OS keychain (macOS Keychain, Linux Secret Service, Windows Credential Manager).

Every command supports --format json|yaml|csv|table|jsonpath|go-template for machine output and --quiet to suppress styling.

Development

make build         # build binary to bin/strait
make test          # run tests with race detector
make lint          # golangci-lint
make check         # vet + lint + test
make hooks         # install lefthook pre-commit hooks
make mutation-dry  # run Gremlins coverage analysis without mutating code
make mutation      # run Gremlins mutation testing → bin/gremlins-report.json
make refresh-openapi  # vendor the server OpenAPI spec into internal/client/testdata
make e2e           # live end-to-end suite (needs STRAIT_SERVER/STRAIT_API_KEY/STRAIT_PROJECT)

Mutation testing is pinned to go-gremlins/gremlins v0.6.0 via go run, so no separate install step is needed. Scope local runs with MUTATION_ARGS, e.g. make mutation MUTATION_ARGS="--diff origin/main".

API contract

The CLI's request paths are validated against the server's OpenAPI spec (vendored at internal/client/testdata/openapi.json). TestEndpointsMatchOpenAPISpec in internal/client statically extracts every endpoint the client calls and fails the build if any path is missing from the spec — so CLI/server drift is caught in CI. After a server API change, run make refresh-openapi (against a running server) to update the vendored spec.

See AGENTS.md for the contributor operating guide.

Reporting security issues

Email [email protected] — see SECURITY.md.

License

MIT

About

CLI for Strait — the agentic workflow orchestration platform. 55+ commands for jobs, workflows, deployments, secrets, and real-time monitoring. Scriptable for CI/CD and agent toolchains.

Topics

ai-agentsclideveloper-toolsdevopsgogolangjob-orchestrationstraitterminalworkflow-orchestration

Resources

Readme
MIT license

Security policy

Security policy
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.