
hulak v0.3.30
Cliente CLI de API ligero basado en archivos con secretos cifrados con age y soporte de primera clase para GraphQL, diseñado para humanos y agentes de IA.
Cliente de API nativo de Git con secretos cifrados.
REST · GraphQL · OAuth
Inicio rápido • Explorador de GraphQL • Estructura del proyecto • Documentación
Ejecuta una petición, un directorio completo o permanece en modo interactivo
hulak run ./requests/
Hulak ejecuta archivos de petición directamente desde tu proyecto. Admite ejecución concurrente por directorio. Si simplemente ejecutas hulak, utiliza un selector interactivo como alternativa.
Explorador de GraphQL dedicado
Examina esquemas de múltiples endpoints. Busca operaciones. Construye consultas de forma interactiva. Ejecuta en línea. Guarda archivos generados desde la terminal.
Inicio rápido
Instalación
Hulak se distribuye mediante xaaha/tap. Homebrew 6.0+ exige confianza explícita para taps de terceros; sin ella, brew upgrade omite hulak silenciosamente. Es un paso único por máquina:
brew trust xaaha/tap
brew install --cask xaaha/tap/hulak
Otras opciones de instalación:
go install github.com/xaaha/hulak@latest- Compila desde el código fuente con
go build -o hulak
Completado de shell (instalación con go install / compilación desde el código fuente)
Homebrew instala el completado automáticamente. Si instalaste mediante go install
o compilaste desde el código fuente, actívalo una vez:
# zsh
hulak completion zsh > "${fpath[1]}/_hulak" # then restart your shell
# bash (macOS, Homebrew bash-completion)
hulak completion bash > $(brew --prefix)/etc/bash_completion.d/hulak
# bash (Linux)
hulak completion bash | sudo tee /etc/bash_completion.d/hulak >/dev/null
Zsh requiere autoload -Uz compinit && compinit en tu .zshrc.
Ruta A. Cliente de API con secretos cifrados (predeterminado)
mkdir my-apis && cd my-apis
hulak init # creates .hulak/store.age + identity
Genera una petición de inicio; para ver rápidamente cómo es un archivo de petición, ejecuta:
hulak example api # writes example-api.hk.yaml you can run
[!Note] Para otros tipos ejecuta:
hulak example. El subcomandoexamplete ofrece una forma rápida de escribir un archivo de petición que puedes modificar. Para más información ejecutahulak example -h
Para configurar un secreto, puedes ejecutar:
hulak secrets keys set placeholder https://jsonplaceholder.typicode.com/posts -env prod
Ahora, en tu archivo example-api.hk.yaml, puedes hacer referencia a este secreto:
method: POST
url: "{{.placeholder}}"
# rest of the body of the file remains same
Ejecuta la petición:
hulak run example-api.hk.yaml --env prod
¿Prefieres archivos env/*.env en texto plano en lugar de secretos cifrados?
hulak init classic
El modo de texto plano es totalmente compatible. Consulta docs/environment.md para más información.
Almacén de secretos cifrado o archivos .env en texto plano
Hulak funciona en dos modos. Elige uno durante hulak init. Podrás migrar más adelante.
- Vault (predeterminado): los secretos residen en
.hulak/store.age, cifrados con un par de claves age o SSH. Es seguro confirmarlos. Los equipos los comparten mediante un archivo de destinatarios. Consulta docs/store.md. - Texto plano: los secretos residen en archivos
env/*.enven texto plano. Más simple, sin cifrado. Añadeenv/a.gitignore. Consulta docs/environment.md.
¿Estás usando el modo clásico y quieres cambiar? Consulta docs/migrating-to-vault.md.
Úsalo desde un agente de IA (MCP)
Hulak incluye un servidor MCP integrado, de modo que agentes como Claude Code, Cursor y Zed pueden manejar tu colección de API en lenguaje natural — "lista las peticiones", "prueba login contra staging", "llama a getUser y muestra la respuesta".
Para Claude Code, añádelo con un solo comando:
claude mcp add hulak -s user -- hulak mcp --project api=~/work/api-tests
Cursor, Zed, Codex, opencode y Pi usan en su lugar un pequeño archivo de configuración. Consulta docs/mcp.md para cada uno.
Los secretos nunca salen de tu máquina: el agente trabaja con nombres de peticiones y entornos, nunca con valores descifrados. Las lecturas y pruebas en seco son de solo lectura; las escrituras se validan contra el esquema; los archivos de respuesta no se guardan a menos que se pida.
Configuración completa, referencia de herramientas y modelo de seguridad: docs/mcp.md.
Comandos
| Comando | Propósito | Más información |
|---|---|---|
run | Ejecuta archivo(s) de petición o un directorio | body.md, actions.md |
gql | TUI del explorador de GraphQL | graphql-explorer.md |
secrets | CRUD del almacén cifrado | store.md |
init | Inicializa un proyecto hulak | store.md |
migrate | Conversión de Postman a hulak | migrating-to-vault.md |
example | Genera archivos de petición de ejemplo | — |
doctor | Comprueba la salud del proyecto | — |
mcp | Sirve peticiones a agentes de IA a través de MCP | mcp.md |
version | Muestra la versión | — |
Ejecuta hulak <command> --help para ver las opciones y ejemplos por comando.
Comportamiento del selector
Si omites --env, se abre un selector interactivo.
hulak runyhulak gqlsolo preguntan cuando los archivos hacen referencia a{{.key}}.- Los subcomandos de
hulak secretspreguntan siempre (exceptosecrets list). - Las shells no interactivas requieren
--env <name>.