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

FerramentaDescrição
airstrings_initInicializar workspace
airstrings_strings_setAdicionar/atualizar string no CSV local (opcional push para sincronizar a chave com a API imediatamente)
airstrings_strings_rmRemover string do CSV local (opcional push para espelhar a remoção na API imediatamente)
airstrings_strings_lsListar strings locais
airstrings_pushEnviar strings locais para a API
airstrings_pullBaixar strings remotas para o local
airstrings_publishPublicar 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.