Install & Setup
Install the AirStrings CLI, initialize a workspace, and manage environments.
The airstrings CLI manages strings, locales, sections, and publishing from the terminal. It is the recommended tool for scripted and AI-assisted workflows.
Install
npm install -g @airstrings/cliOr run any command without installing:
npx -p @airstrings/cli airstrings <command>Requires Node.js 18+. Only the package name is scoped — the installed commands are airstrings and airstrings-mcp. The package downloads the prebuilt binary for your platform and verifies it against the SHA256 checksum published with each release.
brew install symbionix-sl/airstrings/airstringsmacOS and Linux.
Both paths ship the CLI and the airstrings-mcp binary used by the MCP server.
Set up a workspace
Initialize
Run init in your project directory:
cd my-project
airstrings initWith no key, init opens the browser to log in (an owner of the organization approves), stores an org key in ~/.config/airstrings/credentials.json (0600), creates a project named after the folder and writes .airstrings/config.json. --name <name> names the project; --project <id> binds an existing one. init never reuses a project by name: a collision exits 2 and names the existing project. Without a terminal it waits up to 90 seconds for the approval; with --no-browser or CI, or on timeout, it exits 9 with the URL. Re-run the same command after approving. When the browser opens on the same machine (not over SSH), the approval returns straight to the CLI on 127.0.0.1, with no code to check; a re-run listens on the same port. If an approval can't reach the CLI, the CLI starts a new login and reopens the page. Pass --url <base-url> if your team uses a non-default base URL.
If you belong to several organizations, pass --org <org_id> (the setup prompt in the dashboard includes it). init then uses the stored login for that organization, or logs in. If the approval comes from another organization it exits 3: approve from that organization's dashboard. A folder linked to another organization is re-linked: init creates a project in <org_id>, moves the old local .airstrings/ to .airstrings.<old_org_id>/ and prints This folder was linked to <old>; re-linked to <new>. The old organization's project is not touched.
Already have a project key (as_proj_…, from the project's API Keys page)? airstrings init <project-key> binds the folder to that project. In an existing workspace it switches to the new key in place and keeps your local strings.
Keys
| Key | Prefix | Covers | Get it |
|---|---|---|---|
| Org key | as_org_ | Every project of the organization | airstrings login |
| Project key | as_proj_ | Every environment of one project | Dashboard API Keys page |
| Legacy environment key | 64 hex characters | One environment | Created before CLI 0.18; still works |
The CLI picks the first key it finds: AIRSTRINGS_ORG_API_KEY, AIRSTRINGS_API_KEY, the workspace key, then the stored login. With an org key, airstrings project ls lists the organization's projects and --project <id|name> runs any command against one of them. One login is stored per organization. A workspace always uses its own organization's login; outside a workspace the CLI uses the active organization (the last one you logged in to, or the one set with airstrings org use). Logging in again to the same organization revokes its previous key. airstrings logout revokes and forgets the active organization's key; airstrings logout --org <org_id> forgets that one.
Gitignore the credentials
Never commit
.airstrings/config.json. It can hold your API keys.initwrites.airstrings/.gitignorewithconfig.jsonanddoctor.json; keep both lines. The CLI writesconfig.jsonwith0600permissions. If a key leaked, runairstrings apikey revokein the folder, thenairstrings login.
Verify
airstrings status
airstrings doctorstatus shows the current project, active environment, key type (org/project/environment), where the key came from, its permission (read/write), whether production is protected or open, the keys stored in the workspace (Stored:, masked), and the one next step for that state. doctor runs platform checks against your installation and workspace, including seed-integration checks that confirm your app picks up the bundled fallback seed (see Publishing & Bundles).
How the workspace works
Each project gets its own .airstrings/ directory. The only user-level file is the login's ~/.config/airstrings/credentials.json. The workspace is discovered by walking up the directory tree, like .git, so every command works from any subdirectory of your project.
Environments
| Command | What it does |
|---|---|
airstrings env | List every environment: protected/open, key in workspace or no key (✓ marks the active one) |
airstrings env use staging | Switch the active environment |
airstrings env add <api-key> | Add a legacy environment key (deprecated) |
airstrings env rm staging | Remove an environment's credentials |
airstrings env create staging | Create a new environment |
airstrings status | Show project, environment, key scope, stored keys, protection and next step |
airstrings project | Show project info |
airstrings project ls | List the organization's projects (org key) |
airstrings org | List stored logins (✓ marks the active organization) |
airstrings org use <name|id> | Set the active organization (outside workspaces) |
airstrings -e -u staging is shorthand for env use staging.
Protected production
Production is protected by default: it rejects direct writes and publishing, and changes reach it only by promotion: a human in the dashboard, or airstrings promote --to production with a full-power org key. Publish to staging and promote. If you turn protection off, production is open and the same project or org key publishes to it directly.
SDK configuration
airstrings sdk-config # production (default environment)
airstrings sdk-config --env staging
airstrings sdk-config --env production --jsonPrints the organization, project and environment IDs, the environment's Ed25519 public key(s), and a ready-to-paste initializer for the Web, React Native, iOS, Android and Go SDKs (Go from CLI 0.17.0). Public keys are not secret, so any key of the project works, including a legacy staging key. The MCP tool airstrings_sdk_config returns the same data.
String Variants
A/B test string values by attaching an experiment to a key: deterministic, stateless, cross-platform selection driven by an assignment id, with exposure events you forward to your own analytics.
Managing Strings
Local-first string editing with CSVs, sections, and the text and icu formats.