AirStrings
Gestiona cadenas de localización de AirStrings y publica paquetes de cadenas firmados por aire desde tu espacio de trabajo, con verificación de firma en el dispositivo.
Documentación
airstrings
Interfaz de línea de comandos para AirStrings — gestiona strings, locales, bundles y publicación desde la terminal.
Instalación
npm (cualquier plataforma)
npm install -g @airstrings/cli
airstrings <command>
Requiere Node 18+. Instala airstrings y airstrings-mcp.
Homebrew (macOS / Linux)
brew install symbionix-sl/airstrings/airstrings
Desde el código fuente
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
Configuración
Inicializa un workspace en el directorio de tu proyecto:
cd my-project
airstrings init ask_live_xxxxxxxxxxxx
Esto valida la clave, detecta automáticamente tu proyecto y entornos, y guarda todo en .airstrings/config.json. Cada proyecto tiene su propio workspace — no hay configuración global compartida.
Entornos
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]
Proyecto y Entornos
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 y strings rm son local-first: editan los CSV del workspace y nunca llaman a la API a menos que se proporcione --push.
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
Secciones
airstrings sections list
airstrings sections create onboarding --description "Onboarding flow strings"
airstrings sections delete sec_xxxxx
Bundles y Publicación
airstrings bundles # List published bundles
airstrings publish # Publish all locales
airstrings publish en es # Publish specific locales
Compilaciones seguras sin conexión
Incluye bundles publicados dentro de tu aplicación para que los SDKs puedan servir strings sin red — arranques en frío sin conexión, compilaciones SSG/SSR, CI:
airstrings bundles pull
Esto descarga los bundles publicados y firmados para el entorno activo en airstrings/bundles/ en la raíz del workspace (además de un registro de procedencia manifest.json), verificando cada firma Ed25519 antes de escribir. Haz commit de la carpeta:
git add airstrings/bundles
git commit -m "chore: update bundled fallback strings"
Los SDKs detectan la carpeta automáticamente y la usan como semilla al iniciar, re-verificando cada bundle antes de usarlo. Ejecuta el pull en CI o como paso previo al lanzamiento para mantener la instantánea commiteada actualizada.
airstrings bundles pull dist/seed # custom output dir (persisted to workspace config)
airstrings bundles pull --locale en-US # restrict to one locale
No es lo mismo que airstrings pull: pull obtiene strings de borrador del workspace como CSVs editables para el flujo de edición, mientras que bundles pull obtiene bundles publicados y firmados — artefactos de entrega inmutables para distribución. Los dos nunca comparten una ubicación de salida.
Importación
airstrings import csv strings.csv # Import strings from CSV
airstrings import status imp_xxxxx # Check import progress
Workspace
El flujo de workspace te permite gestionar strings localmente y sincronizar con la API. Este es el flujo recomendado para la gestión de strings asistida 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
El comando airstrings init crea una carpeta .airstrings/ en la raíz de tu proyecto:
.airstrings/
config.json # workspace config (credentials, project, active env)
strings.csv # unsectioned strings
onboarding/onboarding.csv # section strings
settings/settings.csv
Cada sección recibe su propio subdirectorio con un archivo CSV. Los strings sin sección viven en la raíz strings.csv. Todos los archivos son CSV plano y se pueden commitear al control de versiones.
Servidor MCP
AirStrings proporciona un servidor MCP para que asistentes de IA como Claude puedan gestionar strings directamente mediante llamadas a herramientas estructuradas.
airstrings mcp install # for Claude Code
airstrings mcp install --claude-desktop # for Claude Desktop
airstrings mcp status # check installation
Eso es todo. Reinicia Claude y las herramientas estarán disponibles.
Ejemplo: localización asistida 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
En lugar de generar archivos CSV, la IA llama a herramientas MCP estructuradas — una llamada por string. Esto ahorra tokens y elimina errores de formato CSV.
Herramientas MCP disponibles
| Herramienta | Descripción |
|---|---|
airstrings_init | Inicializa el workspace |
airstrings_strings_set | Añade/actualiza un string en el CSV local (push opcional para sincronizar la clave con la API inmediatamente) |
airstrings_strings_rm | Elimina un string del CSV local (push opcional para reflejar la eliminación en la API inmediatamente) |
airstrings_strings_ls | Lista los strings locales |
airstrings_push | Envía los strings locales a la API |
airstrings_pull | Trae los strings remotos al entorno local |
airstrings_publish | Publica bundles al CDN |
Salida JSON
Añade --json a cualquier comando para obtener salida legible por máquina:
airstrings strings list --json
airstrings project --json | jq '.name'
Configuración
La configuración se guarda por proyecto en .airstrings/config.json (como .git/config). No hay configuración global — cada workspace es autónomo con sus propias credenciales y entorno activo.
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
El workspace se encuentra recorriendo el árbol de directorios hacia arriba, por lo que los comandos funcionan desde cualquier subdirectorio.
Requisitos
- Go 1.26.1+
- Una cuenta de AirStrings con una clave de API
Licencia
MIT — consulta LICENSE.