¿Qué hace cli-anything-tigris?
Una interfaz de línea de comandos sin estado para el almacenamiento de objetos Tigris. Envuelve el CLI oficial de tigris de modo que cada primitiva de Tigris (snapshots, IAM, credenciales con ámbito, OAuth) sea accesible a través de un único punto de entrada amigable para agentes, con --json en todos los comandos.
Alcance
Este envoltorio es exclusivamente para el CLI oficial de Tigris. Ejecuta el binario tigris y asume autenticación de Tigris mediante tigris login o claves de acceso de Tigris. No es una herramienta genérica para puntos finales S3, y no gestiona MinIO, Cloudflare R2, AWS S3 ni ningún otro punto final compatible con S3.
Instalación
# 1. Instalar el CLI subyacente de Tigris
npm install -g @tigrisdata/cli
# o:
brew install tigrisdata/tap/tigris
# 2. Autenticarse (OAuth en navegador)
tigris login
# 3. Instalar este envoltorio
pip install cli-anything-tigris
Requisitos previos:
- Python 3.10+
- CLI
tigrisen PATH (el alias del binario est3)
Uso
Comandos básicos
# Mostrar ayuda
cli-anything-tigris --help
# Iniciar REPL interactivo
cli-anything-tigris
# Whoami (salida JSON para agentes)
cli-anything-tigris --json auth whoami
# Listar buckets
cli-anything-tigris --json bucket list
# Subir un archivo local
cli-anything-tigris --json object put --bucket my-bucket --key ruta/al/archivo.txt --file ./local.txt
# Descargar un objeto
cli-anything-tigris --json object get --bucket my-bucket --key ruta/al/archivo.txt --output ./out.txt
# Copia del lado del servidor
cli-anything-tigris --json object cp t3://my-bucket/src.txt t3://my-bucket/dst.txt
# Tomar un snapshot
cli-anything-tigris --json snapshot take my-bucket --name baseline-v1
# Eliminar un bucket; se requiere --yes
cli-anything-tigris --json bucket delete --name old-bucket --yes
# Crear una clave de acceso con ámbito para una ejecución de agente
cli-anything-tigris --json access-key create my-agent-key
cli-anything-tigris --json access-key assign tid_AaBb --bucket my-bucket --role Editor
# Rotar o eliminar claves de acceso; se requiere --yes
cli-anything-tigris --json access-key rotate tid_AaBb --yes
cli-anything-tigris --json access-key delete tid_AaBb --yes
# URL de descarga prefirmada (1 hora)
cli-anything-tigris --json presign get --bucket my-bucket --key ruta/al/archivo.txt --expires 3600
Modo REPL
Cuando se invoca sin un subcomando, el CLI entra en un REPL interactivo con autocompletado con tabulador e historial.
Grupos de comandos
auth
Autenticación basada en OAuth.
| Comando | Descripción |
|---|---|
login | Inicio de sesión OAuth en navegador (tigris login) |
logout | Cerrar sesión actual |
whoami | Mostrar usuario/organización autenticada |
bucket
CRUD de buckets.
| Comando | Descripción |
|---|---|
list | Listar todos los buckets |
create --name NOMBRE | Crear un bucket |
delete --name NOMBRE --yes | Eliminar un bucket vacío (se requiere --yes) |
info NOMBRE | Obtener información del bucket |
object
Operaciones con objetos (envuelve tigris ls/cp/rm/stat).
| Comando | Descripción |
|---|---|
list --bucket B [--prefix P] [--limit N] | Listar objetos |
put --bucket B --key K (--file F | --text T) | Subir un objeto |
get --bucket B --key K --output F | Descargar un objeto |
delete --bucket B --key K | Eliminar un objeto |
info --bucket B --key K | Metadatos del objeto (HEAD / stat) |
cp ORIGEN DESTINO [-r] | Copiar. Acepta URIs t3:// o tigris://. |
presign
URLs con límite de tiempo.
| Comando | Descripción |
|---|---|
get --bucket B --key K [--expires SEG] | URL de descarga prefirmada |
put --bucket B --key K [--expires SEG] | URL de subida prefirmada |
snapshot
Snapshots de buckets en un punto en el tiempo, una primitiva específica de Tigris.
| Comando | Descripción |
|---|---|
list BUCKET | Listar snapshots de un bucket |
take BUCKET [--name N] | Tomar un snapshot |
access-key
Credenciales programáticas con ámbito: combínalas con snapshot para aislamiento por agente.
| Comando | Descripción |
|---|---|
list | Listar todas las claves de acceso |
create NOMBRE | Crear una nueva clave de acceso (el secreto se muestra UNA VEZ) |
get KEY_ID | Mostrar detalles de la clave |
delete KEY_ID --yes | Eliminar permanentemente una clave (se requiere --yes) |
assign KEY_ID --bucket B --role R | Acotar una clave a un bucket + rol |
rotate KEY_ID --yes | Rotar el secreto de una clave (se requiere --yes) |
iam
Políticas y usuarios de la organización.
| Comando | Descripción |
|---|---|
policy list | Listar políticas IAM |
policy create NOMBRE --document ARCHIVO | Crear una política desde un archivo JSON |
user list | Listar usuarios de la organización |
user invite CORREO [--role R] | Invitar a un usuario |
Formatos de salida
Todos los comandos admiten dos modos de salida:
- Legible para humanos (por defecto): tablas, colores, texto formateado
- Legible para máquinas (
--json): estructura JSON (o la salida--format jsondel CLI original, reproducida textualmente)
Para agentes de IA
Cuando se utiliza este CLI de forma programática:
- Siempre pasa
--jsonpara obtener salida analizable. - Verifica los códigos de retorno: 0 para éxito, distinto de cero para errores.
- Lee stderr para mensajes de error.
object cpacepta URIst3://bucket/claveotigris://bucket/clave; las copias del lado del servidor (t3 → t3) evitan por completo la transferencia de datos.presigndevuelve una URL en stdout en modo humano; en modo JSON es el campourl.- Para operaciones destructivas: la eliminación de buckets, eliminación y rotación de claves de acceso requieren
--yesexplícito; primero toma unsnapshotdel bucket objetivo, luego realiza la operación, y luego conserva o descarta el snapshot. - Para aislamiento por agente:
access-key create+access-key assign --bucket B --role Editorpara generar una clave acotada a un solo bucket; revoca conaccess-key deletecuando termine la ejecución del agente.
Por qué Tigris
- Distribuido globalmente. Los datos se colocan cerca de donde se leen.
- Sin cargos de salida. Los agentes que extraen artefactos desde cualquier lugar no incurren en costos de ancho de banda por región.
- Snapshots + credenciales con ámbito. Primitivas que los proveedores genéricos compatibles con S3 no ofrecen: la base para el aislamiento por agente.
- Compatible con S3. Útil junto con herramientas que soportan S3, pero este envoltorio en sí mismo no es un gestor de puntos finales S3/MinIO/R2/AWS genérico.
Versión
1.0.0