> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI

> basaltic, la interfaz de línea de comandos de la plataforma.

`basaltic` es el cliente de línea de comandos. Es el camino más corto para conducir la plataforma desde un terminal o un trabajo de CI, y habla la misma API que los SDK.

<a id="install" />

## Instalar

```bash theme={null}
curl -fsSL https://get.basaltic.sh/cli | sh
```

El script elige la compilación para su plataforma, la verifica con la suma de comprobación publicada con la versión, e instala en `/usr/local/bin` cuando es escriturable o `~/.local/bin` de lo contrario. Léalo primero si lo prefieres — es [`install.sh`](https://github.com/basaltic-sh/cli/blob/main/install.sh) en el repositorio, y esa URL sirve el mismo archivo.

```bash theme={null}
BASALTIC_INSTALL_DIR=~/bin  curl -fsSL https://get.basaltic.sh/cli | sh
BASALTIC_VERSION=0.1.1      curl -fsSL https://get.basaltic.sh/cli | sh
```

Las compilaciones para Linux, macOS y Windows en amd64 y arm64 están en la página [releases](https://github.com/basaltic-sh/cli/releases), y `go install github.com/basaltic-sh/cli@latest` funciona si tienes Go.

Para actualizar:

```bash theme={null}
basaltic upgrade          # install the latest version
basaltic upgrade --check  # only say whether one exists
```

La CLI menciona cuando hay una versión más nueva disponible y nunca la instala por usted. El aviso va a stderr, solo en un terminal, y nunca cuando la salida es JSON o YAML — por lo que no puede aterrizar en algo que se está analizando. `BASALTIC_NO_UPDATE_CHECK=1` lo desactiva.

<a id="command-shape" />

## Forma de comando

```
basaltic <service> <resource> <verb> [flags]
```

```bash theme={null}
basaltic compute instance list
basaltic compute instance start i-abc123
basaltic network vpc create --name prod --cidr-ipv4 10.0.0.0/16
basaltic storage volume list
basaltic loadbalancer listener create lb-1 --port 443
```

Los argumentos posicionales son los identificadores del recurso, en el orden en que la ruta de la API los toma. Todo lo demás es una bandera.

Los nombres de servicio más largos tienen alias cortos, y cada recurso acepta su plural: `basaltic lb` es `basaltic loadbalancer`, `basaltic net` es `basaltic network`, y `basaltic compute instances list` es `basaltic compute instance list`. Las formas a continuación son las que se deben escribir.

Un servicio con un solo recurso del mismo nombre deja caer la palabra intermedia: `basaltic certificate list`, no `basaltic certificate certificate list`.

`basaltic --help` lista los servicios; `basaltic <service> --help` y `basaltic <service> <resource> --help` bajan desde allí.

<a id="authenticating" />

## Autenticación

El descubrimiento de regiones funciona antes de iniciar sesión:

```bash theme={null}
basaltic catalog region list
basaltic catalog region get sa-saopaulo-1
```

Estos comandos utilizan el catálogo público [region](/es/regions) sin enviar credenciales ni una selección de cuenta. Inicie sesión para administrar sus recursos.

La configuración se encuentra en un **perfil** en `~/.config/basaltic/config.yaml`. Los tokens no: se escriben en `~/.config/basaltic/credentials.yaml`, modo 0600, por lo que un archivo de configuración permanece seguro para copiar entre máquinas o verificar en archivos de puntos.

```bash theme={null}
basaltic login           # browser sign-in, as you
basaltic auth status     # who you are, which org, when it expires
basaltic auth logout     # revoke the session and delete the credential
```

`basaltic login` te inicia sesión como una **persona** — imprime una URL donde apruebas la CLI y eliges una organización, te muestra un código para pegar en el terminal, y almacena un token de corta duración que actúa como tú. Esto es lo que le permite crear una organización, aceptar una invitación o cambiar de organización desde la CLI; una cuenta de servicio no puede hacer nada de eso. El navegador no tiene que estar en la misma máquina, por lo que esto funciona a través de SSH. Consulte [iniciar sesión como usted mismo](/es/authentication#signing-in-as-yourself).

Los comandos de espacio de trabajo administran los recursos de la organización, como usuarios, grupos, cuentas y directivas de la organización. Los comandos de IAM administran roles, cuentas de servicio, políticas y sesiones en la cuenta seleccionada. Estos son dominios de políticas separados, aunque ambos servicios son globales.

Un inicio de sesión personal no otorga automáticamente acceso a los recursos de la cuenta a una persona, incluido el propietario de la organización.Utilice un rol asignado y la API AssumeRole para trabajar con la cuenta.Cambiar la cuenta de un perfil por sí solo no puede cambiar el alcance de la cuenta de una credencial. [Acceso a cuenta](/es/workspace/accounts).

Para un programa que tiene que ejecutarse sin usted, utilice una tecla de acceso de una
[Cuenta de servicio](/es/authentication#getting-credentials) en su lugar:

```bash theme={null}
basaltic auth login --api-key ACCESS_KEY_ID:SECRET_ACCESS_KEY
```

Esto almacena la clave en el perfil activo y la verifica antes de informar el éxito. El par de claves sigue siendo su única credencial de larga duración: la CLI la intercambia por un token de corta duración en cada ejecución y lo almacena en caché por separado.

<Tip>
  Prefiere almacenar una clave sobre pasar `--api-key` en cada invocación. La bandera pone el secreto en el historial de su shell y en la lista de procesos de cada usuario de la máquina.
</Tip>

<a id="output" />

## Producto

`--output text` es la opción por defecto y imprime tablas. `--output json` y `--output yaml` imprimen los nombres de los campos propios de la API, para la canalización.

```bash theme={null}
basaltic compute instance list -o json | jq -r '.[].id'
basaltic compute instance list --no-headers | awk '{print $1}'
```

## Paging

Los comandos de lista devuelven una página y dicen cuando hay más. `--all` recorre todas las páginas:

```bash theme={null}
basaltic compute instance list --limit 50
basaltic compute instance list --all
```

<a id="creating-things" />

## Creando cosas nuevas

Los campos escalares son banderas. Cualquier cosa estructurada toma JSON, porque un objeto anidado no tiene una representación plana honesta:

```bash theme={null}
basaltic compute instance create \
  --name web-01 \
  --flavor f-1 \
  --image debian-13 \
  --networks '[{"subnet":"<subnet-id>","floating_ip_assignment":"ipv4"}]'
```

Para cualquier cosa más grande, `--from-file` toma todo el cuerpo como JSON o YAML, y los indicadores sobrescriben los campos individuales de él:

```bash theme={null}
basaltic compute instance create --from-file instance.yaml --name web-02
```

El archivo contiene los campos requeridos — `networks` entre ellos — y las banderas al lado de él sobrescriben las claves individuales.

<a id="retrying-a-create" />

### Reintentar una creación

Una creación que ha superado el tiempo de espera puede haber tenido éxito, por lo que la CLI no repetirá una por sí sola. Dale una clave y se vuelve seguro volver a intentarlo — la plataforma devuelve el resultado original en lugar de crear un segundo recurso:

```bash theme={null}
basaltic compute instance create --name web-01 --flavor f-1 \
  --image debian-13 --networks '[{"subnet":"<subnet-id>"}]' \
  --idempotency-key "$(uuidgen)"
```

<a id="global-flags" />

## Banderas globales

| Bandera de España | Propósito |
| - | - |
| `-p, --profile` | Usar un perfil específico de la configuración |
| `--region` | Región de destino, p. ej. `sa-saopaulo-1` |
| `-o, --output` | Formato de salida: `text`, `json`, o `yaml` |
| `--no-headers` | Omitir la fila de encabezado en tablas de texto |
| `--account-id` | Actuar contra otra cuenta a la que tengas acceso |
| `--api-key` | `ACCESS_KEY_ID:SECRET_ACCESS_KEY`, sobreescribir env y config |
| `-v, --version` | Imprimir la versión |

`--output json` es el que se debe usar en los scripts.

<Note>
  `--account-id` es requerido para llegar a otra cuenta para la que está autorizado. Sin ella, los recursos de esa cuenta responden "no encontrado" en lugar de "no permitido" — una cuenta en la que no estás actuando es una en la que no puedes ver los recursos.
</Note>

Las variables de entorno sobrescriben el perfil: `BASALTIC_API_KEY`, `BASALTIC_REGION`, `BASALTIC_ACCOUNT_ID`, `BASALTIC_PROFILE`. Una bandera anula ambas.

<a id="configuration" />

## Configuración

```bash theme={null}
basaltic config list                # the configured profiles
basaltic config get <key>           # print one value
basaltic config set <key> <value>   # write one value on the active profile
basaltic config use <profile>       # make a profile the default
basaltic config path                # where the files live
```

Las claves son `region`, `api_key`, `account_id` y `domain`. Use `--profile` para escribir en un perfil distinto al activo:

```bash theme={null}
basaltic config set region sa-saopaulo-1
basaltic config set region sa-saopaulo-1 --profile staging
```

Los archivos están en `~/.config/basaltic/`, respetando `XDG_CONFIG_HOME`.

<a id="serial-console" />

## Consola de serie

```bash theme={null}
basaltic compute instance serial-console i-abc123
```

Abre una consola serie interactiva. El terminal se pone en modo raw, por lo que cada tecla llega al invitado — incluyendo `Ctrl-C`, que es usualmente para lo que se quiere. Presione <kbd>Ctrl-]</kbd> para desconectarse.

Es un terminal en vivo, no un registro. Para lo que la instancia ya ha impreso:

```bash theme={null}
basaltic compute instance console-output i-abc123
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.