Quickstart.
Install haze, connect an OpenAI-compatible provider, choose a model, and give it real work in under five minutes.
Requirements
- Node 22 or newer. Check with
node -v. haze is an ESM TypeScript CLI and does not ship prebuilt binaries. - An OpenAI-compatible provider. Use a hosted provider, a local server, or your own proxy. You bring the API key; haze has no default model and never picks one silently.
- macOS or Linux are the primary targets; Windows works through WSL.
Install
npm i -g @denizokcu/haze
haze --version # 1.3.0
The global install gives you one binary: haze. Run it from any project directory — sessions, skills, and instructions are stored per workspace, with shared state under ~/.haze/.
Configure a provider
On first run, haze opens the provider picker. You can also run /provider any time to add, edit, or remove providers.
Hosted, via OpenRouter (recommended to start)
/provider # add provider → openrouter (preset) # paste your API key from openrouter.ai/keys
OpenRouter fronts Anthropic, Google, Meta, DeepSeek, and hundreds more behind one key. Provider presets also exist for OpenAI, Mistral, Groq, DeepSeek, xAI, Cerebras, Together, Fireworks, Hugging Face, Moonshot, NVIDIA, and Qwen.
Fully local, via Ollama
/provider # add provider → ollama (preset) — base URL http://localhost:11434/v1, no key needed /model local:qwen2.5-coder:32b
LM Studio works the same way (http://localhost:1234/v1). Loopback HTTP is allowed without TLS; any remote endpoint must use HTTPS when you send credentials.
Any OpenAI-compatible proxy
/provider # add provider → custom → name: gateway # base URL: https://llm.internal.example.com/v1 # API key: (optional)
~/.haze/settings.json with private POSIX permissions (0600). Malformed settings fail loudly at startup instead of being treated as empty.Pick a model
/model # picker → add models: fetches the provider's OpenAI-compatible /models list # or set one directly — also switches the provider: /model openrouter:anthropic/claude-sonnet-4.6 /model local:llama3.1 /model list # show all configured models
If model discovery fails, type names manually. Per-run overrides exist for scripts: haze -m provider:model never touches your saved settings.
Your first task
Ask for work the way you would describe it to a teammate. haze explores first, edits precisely, and validates before reporting.
fix the failing test in tests/parser and explain the root cause add rate limiting to the /auth endpoints, with tests @src/legacy/date.ts rewrite this module to use the Intl API, keep the public API @design/empty-state.png implement this empty state in the orders view
While it works you see compact tool blocks — files read, edits applied, commands run with exit codes and validation summaries. Validation pipelines use pipefail, so a formatter such as tail cannot hide a failing test process. If provider context fills, haze compacts and retries with a smaller budget; exhausted recovery leaves a resumable context_exhausted checkpoint. Esc aborts the current turn; sessions survive restarts via /resume or haze --continue.
/init once and haze writes a compact AGENTS.md describing your repo — commands, conventions, and layout — so every future session starts informed.Next steps
- Command reference — every slash command and CLI flag, including headless CI mode.
- Skills — turn your repeated workflows into slash commands with
/skills. - Tools — what the model can call, including LSP and MCP integration.
- Workflows — sessions, fleet, images, and context files in practice.