Strait uses a universal strait.json configuration file that all SDKs and the CLI can read. This replaces the TypeScript-specific strait.config.ts file (now deprecated).
Getting Started
Run the init command to create a strait.json file:
Or create one manually:
The $schema field enables autocomplete and validation in VS Code, IntelliJ, and other editors that support JSON Schema.
Field Reference
project (required)
sdk (optional)
SDK client configuration. These values are read by all five SDKs.
CLI fields (optional)
These fields are read by the CLI only. SDKs ignore them.
Environment Variable Overrides
Environment variables always take precedence over strait.json values. This lets you use the config file for defaults while overriding per-environment in CI/CD or production.
Auth tokens are never stored in strait.json. The API key always comes from the STRAIT_API_KEY environment variable or the CLI profile store (~/.config/strait/). Never commit secrets to version control.
Config File Discovery
All SDKs and the CLI look for strait.json in the current working directory. There is no upward directory traversal — the file must be at the project root where commands are invoked.
SDK discovery order
- Explicit path (if provided via options)
strait.json in working directory
strait.config.ts / .js / .mjs / .cjs (deprecated, TypeScript SDK only)
CLI discovery order
- Explicit
--config flag
strait.json in working directory
strait.config.ts / .js / .mjs / .cjs (deprecated)
CLI connection resolution priority
When the CLI resolves server URL, project ID, and API key, the priority chain is:
Loading Config from Each SDK
For Ruby and Rust SDK configuration examples, see their dedicated repositories:
Migrating from strait.config.ts
If you’re using the deprecated strait.config.ts, run:
This creates a strait.json file. You can then delete your strait.config.ts. The SDKs and CLI will automatically prefer strait.json when both files exist.
When a .ts config file is loaded, the SDK and CLI emit a deprecation warning:
strait init Command
The strait init command scaffolds a new strait.json interactively:
It prompts for:
- Project ID
- Project name (optional)
- Source directory (default:
src)
- Runtime — Node.js or Bun (default: Node.js)
- Base URL (optional)
It also checks your .gitignore and offers to add .strait (the build output directory).
Non-interactive mode
For CI/CD or scripting, use --yes with --project:
This uses all defaults without prompting.