Skip to main content
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

  1. Explicit path (if provided via options)
  2. strait.json in working directory
  3. strait.config.ts / .js / .mjs / .cjs (deprecated, TypeScript SDK only)

CLI discovery order

  1. Explicit --config flag
  2. strait.json in working directory
  3. 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:
  1. Project ID
  2. Project name (optional)
  3. Source directory (default: src)
  4. Runtime — Node.js or Bun (default: Node.js)
  5. 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.