AirStrings
Gerencie strings de localização do AirStrings e publique pacotes de strings assinados over-the-air a partir do seu workspace, com verificação de assinatura no dispositivo.
Documentação
airstrings
Interface de linha de comando para AirStrings — gerencie strings, locales, bundles e publicação a partir do terminal.
Instalação
npm (qualquer plataforma)
npm install -g @airstrings/cli
airstrings <command>
Requer Node 18+. Instala airstrings e airstrings-mcp.
Homebrew (macOS / Linux)
brew install symbionix-sl/airstrings/airstrings
A partir do código-fonte
go install github.com/symbionix-sl/airstrings-cli/cmd/airstrings@latest
Compilar localmente
git clone git@github.com:symbionix-sl/airstrings-cli.git
cd airstrings-cli
go build -o airstrings ./cmd/airstrings
Configuração
Inicialize um workspace no diretório do seu projeto:
cd my-project
airstrings init ask_live_xxxxxxxxxxxx
Isso valida a chave, detecta automaticamente seu projeto e ambientes, e armazena tudo em .airstrings/config.json. Cada projeto tem seu próprio workspace — sem configuração global compartilhada.
Ambientes
airstrings env # list environments (✓ = active)
airstrings env use staging # switch to staging
airstrings env add <api-key> # add credentials for another environment
airstrings env rm staging # remove environment credentials
airstrings -e -u staging # shorthand for env use
airstrings status # show current project, env, and key
Uso
airstrings <command> [options]
Projeto e Ambientes
airstrings project # Show project info
airstrings env # List environments
airstrings env use staging # Switch active environment
airstrings env create staging # Create a new environment
airstrings locales # List locales with string counts
Strings
strings set e strings rm são local-first: eles editam os CSVs do workspace e nunca chamam a API, a menos que --push seja fornecido.
airstrings strings list # List all strings (remote)
airstrings strings list --locale en --limit 50 # Filter by locale
airstrings strings ls --local # List local workspace strings (offline, no credentials)
airstrings strings ls --local --section onboarding # List one section, offline
airstrings strings get welcome.title # Get a single string (remote)
airstrings strings set welcome.title en="Hello" es="Hola" --format text # Write to local CSVs
airstrings strings set app.name en="My App" --format text --push # Also upsert to the API
airstrings strings rm old.unused.key # Remove from local CSVs
airstrings strings rm old.unused.key --push # Also delete from the API
airstrings strings rm welcome.title --locale es --push # Remove one locale, locally and remotely
Seções
airstrings sections list
airstrings sections create onboarding --description "Onboarding flow strings"
airstrings sections delete sec_xxxxx
Bundles e Publicação
airstrings bundles # List published bundles
airstrings publish # Publish all locales
airstrings publish en es # Publish specific locales
Builds seguros offline
Envie bundles publicados dentro do seu aplicativo para que os SDKs possam servir strings sem rede — inicializações frias offline, builds SSG/SSR, CI:
airstrings bundles pull
Isso baixa os bundles publicados e assinados para o ambiente ativo em airstrings/bundles/ na raiz do workspace (além de um registro de procedência manifest.json), verificando cada assinatura Ed25519 antes de gravar. Faça commit da pasta:
git add airstrings/bundles
git commit -m "chore: update bundled fallback strings"
Os SDKs detectam a pasta automaticamente e a usam como seed na inicialização, reverificando cada bundle antes do uso. Execute o pull no CI ou como etapa de pré-lançamento para manter o snapshot commitado atualizado.
airstrings bundles pull dist/seed # custom output dir (persisted to workspace config)
airstrings bundles pull --locale en-US # restrict to one locale
Não é o mesmo que airstrings pull: pull busca strings de rascunho do workspace como CSVs editáveis para o fluxo de edição, enquanto bundles pull busca bundles publicados e assinados — artefatos de entrega imutáveis para envio. Os dois nunca compartilham um local de saída.
Importação
airstrings import csv strings.csv # Import strings from CSV
airstrings import status imp_xxxxx # Check import progress
Workspace
O fluxo de trabalho do workspace permite gerenciar strings localmente e sincronizar com a API. Este é o fluxo de trabalho recomendado para gerenciamento de strings assistido por IA.
# Initialize workspace
airstrings init ask_live_xxxxxxxxxxxx
# Add strings locally (no API calls)
airstrings strings set onboarding.welcome en="Welcome!" it="Benvenuto!" --format text --section onboarding
airstrings strings set onboarding.welcome de="Willkommen!" es="¡Bienvenido!" fr="Bienvenue!" --format text --section onboarding
airstrings strings set app.tagline en="The best app" it="La migliore app" --format text
# List local strings (offline, no credentials)
airstrings strings ls --local
airstrings strings ls --local --section onboarding
# Edit and remove
airstrings strings set onboarding.welcome en="Welcome to the app!" --format text --section onboarding
airstrings strings rm old.key --section onboarding
# Sync a single key immediately while editing
airstrings strings set app.tagline en="The best app" --format text --push
# Push everything to AirStrings
airstrings push
airstrings push --section onboarding # push single section
# Pull remote strings to local
airstrings pull
O comando airstrings init cria uma pasta .airstrings/ na raiz do seu projeto:
.airstrings/
config.json # workspace config (credentials, project, active env)
strings.csv # unsectioned strings
onboarding/onboarding.csv # section strings
settings/settings.csv
Cada seção recebe seu próprio subdiretório com um arquivo CSV. Strings sem seção ficam na raiz strings.csv. Todos os arquivos são CSV simples e podem ser commitados no controle de versão.
Servidor MCP
O AirStrings fornece um servidor MCP para que assistentes de IA como o Claude possam gerenciar strings diretamente por meio de chamadas de ferramentas estruturadas.
airstrings mcp install # for Claude Code
airstrings mcp install --claude-desktop # for Claude Desktop
airstrings mcp status # check installation
É isso. Reinicie o Claude e as ferramentas estarão disponíveis.
Exemplo: localização assistida por IA
You: "Translate my app's onboarding screen into Italian, German, Spanish, and French"
Claude uses airstrings_strings_set:
key: "onboarding.welcome"
values: {"it": "Benvenuto!", "de": "Willkommen!", "es": "¡Bienvenido!", "fr": "Bienvenue!"}
section: "onboarding"
Claude uses airstrings_strings_set:
key: "onboarding.subtitle"
values: {"it": "Inizia il tuo viaggio", "de": "Beginne deine Reise", "es": "Comienza tu viaje", "fr": "Commencez votre voyage"}
section: "onboarding"
Claude uses airstrings_push:
section: "onboarding"
-> Pushed 2 strings (0 errors)
Sections: onboarding
Em vez de gerar arquivos CSV, a IA chama ferramentas MCP estruturadas — uma chamada por string. Isso economiza tokens e elimina erros de formatação CSV.
Ferramentas MCP disponíveis
| Ferramenta | Descrição |
|---|---|
airstrings_init | Inicializar workspace |
airstrings_strings_set | Adicionar/atualizar string no CSV local (opcional push para sincronizar a chave com a API imediatamente) |
airstrings_strings_rm | Remover string do CSV local (opcional push para espelhar a remoção na API imediatamente) |
airstrings_strings_ls | Listar strings locais |
airstrings_push | Enviar strings locais para a API |
airstrings_pull | Baixar strings remotas para o local |
airstrings_publish | Publicar bundles no CDN |
Saída JSON
Adicione --json a qualquer comando para saída legível por máquina:
airstrings strings list --json
airstrings project --json | jq '.name'
Configuração
A configuração é armazenada por projeto em .airstrings/config.json (como .git/config). Sem configuração global — cada workspace é autocontido com suas próprias credenciais e ambiente ativo.
airstrings init <api-key> [--url <base-url>] # create workspace and authenticate
airstrings env add <api-key> [--url <base-url>] # add environment credentials
airstrings env rm <name> # remove environment credentials
airstrings env use <name> # switch environment
airstrings status # show active context
O workspace é encontrado subindo pela árvore de diretórios, então os comandos funcionam a partir de qualquer subdiretório.
Requisitos
- Go 1.26.1+
- Uma conta AirStrings com chave de API
Licença
MIT — veja LICENSE.