Ship app strings with your AI agent.
AirStrings lets indie developers and small teams extract, translate, review, sign and publish app strings from the tools they already use. No localization team, no release cycle, no unsigned content.
$ npm install -g @airstrings/cliFresh strings, straight from the edge.
How it works
Ask. Review. Publish safely.
Extract
Let your agent find UI copy, create keys and keep source strings synced through the CLI or MCP.
airstrings strings set
Review
Preview changes by environment before anything reaches production. Humans approve the words; agents do the busywork.
airstrings publish
Publish
AirStrings signs bundles, pushes them to the CDN and SDKs verify before rendering. Copy moves fast without trusting unsigned payloads.
AirStrings load + verify
Built for AI agents
AI writes your app’s copy. Only you can ship it.
Point an agent at your project and let it rewrite every string in your app. It works in staging. Production is sealed, and stays sealed until a person says otherwise.
Let it work as fast as it wants. Staging is where it lives.
It doesn’t matter what the agent intended, or who gave it the key. It cannot reach your users.
You read it first. Then it ships.
What reaches your users is exactly what you approved, word for word.
Turn Protected off and agents publish straight to production, no promotion step. Some teams want that. We just don’t assume it.
Other tools give you a review step you can switch off. We give you a locked door, and the only key.
Quick start
Agent-ready in 30 seconds.
Install the CLI, connect a project and tell your assistant what to change. It can create strings, translate missing locales and publish when you approve.
Agent-native workflow
Localization that starts in your editor.
The airstrings CLI and MCP tools give agents a narrow, typed surface after init. Your assistant extracts, translates and prepares changes; AirStrings stores, signs, publishes and rolls them back.
Find hardcoded onboarding copy, translate it to Italian, German, Spanish and French, then prepare a staging publish
Done. I created the keys, filled the missing locales and published staging for review.
$ airstrings strings set onboarding.title --format text --push it=… de=… es=… fr=…CLI first, MCP included
Use plain commands for repeatable work, or MCP when your assistant needs discoverable tools.
Structured output for agents
Every command can return JSON, so agents can plan, verify and recover without scraping terminal text.
Small surface area
Typed tools cover the localization loop without loading a full TMS into context: airstrings mcp install
Security
Fast copy changes still need safety rails.
AI can write strings quickly. AirStrings makes sure only reviewed, signed bundles reach users, and the SDK rejects anything tampered with.
Signed publishing
Every bundle is signed before it leaves the platform. There is no unsigned delivery path.
Verified before render
Bad signature, unknown key or unsupported format means the bundle is rejected instead of rendered.
Anti-substitution, anti-downgrade
The signature covers project, locale, revision, format version and timestamp. Bundles cannot be swapped across projects or quietly rolled back.
Rotation and promotion
SDKs accept multiple public keys, and environments give you a controlled path from staging to production.
{ "keyId": "as_key_7f3c", "revision": 54, "strings": { "onboarding.title": "Get started", "cart.empty": "Your cart is empty" }, "sig": "ed25519:9a4f…c1" ✓ }
Real environments
dev, staging, prod, each with its own signing key, API keys and CDN path. Diff preview and promotion between environments.
Developer experience
SDKs ready to use, with examples to explore.
Pick your stack, copy the install command and explore working examples for loading signed strings in your app.
SwiftUI @Observable, Compose StateFlow, and framework-agnostic web: idiomatic integrations, not REST wrappers.
iOS
Swift 6 · iOS 17+Swift Package Manager
dependencies: [
.package(url: "https://github.com/symbionix-sl/airstrings-sdk-ios", from: "1.1.1")
]Android
Kotlin 2.0 · API 26+Gradle
dependencies {
implementation("com.github.symbionix-sl:airstrings-sdk-android:v1.1.1")
}Experiments
A/B test your strings
Run experiments on live copy, measure in your own analytics, and ship the winner over the air.
Test up to 10 versions
Add variants to any string and set the traffic split, 50/50 or 90/10. One experiment covers every language at once.
Assigned on device
Users get their version transparently, picked on the device: the same user always sees the same one, even offline.
Promote the winner
Exposure events feed your own analytics. Promote the winner and it becomes the live string, republished automatically. No code change, no app release.
in production today
Our own fitness platform runs on AirStrings across its apps and backend: 5,200+ strings in 7 languages, updates live over the air in minutes, every bundle signed and verified on device.
AirStrings
This page and the entire AirStrings dashboard are delivered by AirStrings itself: 1,100+ strings in 5 languages, every bundle signed with Ed25519 and verified.
Pricing
Start free. Upgrade when it matters.
Free includes enough to ship a real indie app. Paid plans add more projects, unlimited locales, more environments and faster support.
Free
Ship your first app
- 1 project
- 1,000 string keys per project
- 3 locales per project
- 2 environments per project
- 3 seats
- Community support
- A/B testing in staging
Paid plans
More room when the app is real.
Add projects, environments, support and unlimited locales when your app needs more room. Signing, SDKs, CLI and MCP stay included.
FAQ
Questions before you hand strings to an agent.
Is this just AI translating JSON files?
No. AI can draft translations anywhere. AirStrings adds the production layer around it: keys, environments, signed bundles, CDN delivery, SDK verification and rollback.
Is this priced for indies?
Start free with 3 seats and 3 locales. Pro is a flat €29 per month and Team is a flat €99 per month when you need more room.
What happens when users are offline?
SDKs serve strings from a verified disk cache after the first fetch. With nothing cached, they fall back to key names instead of crashing your UI.
What if I outgrow it or leave?
The SDKs are MIT-licensed, and cached bundles keep working on devices. Your source strings can live in your project workspace, so you are not trapped if you leave.
Let your agent ship the next string.
Create a free project, install the CLI and ask your assistant to make a safe copy change end to end.

AirStrings