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

HerramientaDescripción
airstrings_initInicializa el workspace
airstrings_strings_setAñade/actualiza un string en el CSV local (push opcional para sincronizar la clave con la API inmediatamente)
airstrings_strings_rmElimina un string del CSV local (push opcional para reflejar la eliminación en la API inmediatamente)
airstrings_strings_lsLista los strings locales
airstrings_pushEnvía los strings locales a la API
airstrings_pullTrae los strings remotos al entorno local
airstrings_publishPublica 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.