The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
Hulak
A lightweight, file-based CLI API client with age-encrypted secrets, first-class GraphQL support, and a built-in MCP server for AI agent workflows.
Install
claude mcp add hulak -s user -- hulak mcp --project api=~/work/api-testsInstall command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →Hulak
Your messenger in the terminal.
Quick Start • GraphQL Explorer • Project Layout • Documentation
Run one request, a whole directory, or stay interactive
hulak run ./requests/
Hulak runs request files directly from your project. It supports concurrent directory execution. It falls back to an interactive picker when you simply run hulak.
Dedicated GraphQL Explorer
Browse schemas from multiple endpoints. Search operations. Build queries interactively. Execute inline. Save generated files from the terminal.
Quick Start
Install
Hulak ships via xaaha/tap. Homebrew 6.0+ requires explicit trust for third-party taps; without it, brew upgrade silently skips hulak. One-time step per machine:
brew trust xaaha/tap
brew install --cask xaaha/tap/hulak
Other install options:
go install github.com/xaaha/hulak@latest- Build from source with
go build -o hulak
Shell completion (go install / source builds)
Homebrew installs completion automatically. If you installed via go install
or built from source, opt in once:
# 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 requires autoload -Uz compinit && compinit in your .zshrc.
Path A. API client with encrypted secrets (default)
mkdir my-apis && cd my-apis
hulak init # creates .hulak/store.age + identity
Scaffold a starter request, to quickly check how a request file looks run:
hulak example api # writes example-api.hk.yaml you can run
[!Note] For Other types run:
hulak example.examplesub-command gives you a quick way to write a request file you can modify. For more info runhulak example -h
To set up a secret you can run:
hulak secrets keys set placeholder https://jsonplaceholder.typicode.com/posts -env prod
Now, in your example-api.hk.yaml file, you can reference this secret:
method: POST
url: "{{.placeholder}}"
# rest of the body of the file remains same
Run the request:
hulak run example-api.hk.yaml --env prod
Prefer plaintext env/*.env files instead of encrypted secrets?
hulak init classic
Plaintext mode is fully supported. See docs/environment.md for more info
Encrypted Secrets Vault Or Plaintext .env files
Hulak runs in two modes. Pick once during hulak init. You can migrate later.
- Vault (default): secrets live in
.hulak/store.age, encrypted with an age or SSH keypair. Safe to commit. Teams share via a recipients file. See docs/store.md. - Plaintext: secrets live in plaintext
env/*.envfiles. Simpler, no encryption. Addenv/to.gitignore. See docs/environment.md.
Running classic and want to switch? See docs/migrating-to-vault.md.
Use it from an AI agent (MCP)
Hulak ships a built-in MCP server, so agents like Claude Code, Cursor, and Zed can drive your API collection in plain language — "list the requests", "dry-run login against staging", "call getUser and show the response".
For Claude Code, add it with one command:
Similar plugs
Reverse engineer anything with agents, from app behavior down to native binaries.
Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype…
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io