Hazzel
A small terminal coding agent. Bring your own key.
Hazzel lives in your terminal. It reads code, edits files, runs commands, and works with git — always with your approval first.
pip install hazzel
cd your-project
hazzel
Run /model, pick a provider, paste your key. Keys are stored at ~/.config/hazzel/config.json with 0600 permissions. Env vars (OPENAI_API_KEY, ANTHROPIC_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY) work too.
❯ Fix the failing test in tests/test_agent.py
● read_file tests/test_agent.py
● edit_file src/hazzel/agent.py
● run_command pytest -q — passed
Why Hazzel?
Most coding agents keep getting bigger. Hazzel stays small on purpose.
The model suggests what to do. Hazzel decides whether and how to do it. Every mutation goes through you: file changes show a diff before they apply, shell commands ask first, and destructive git stays blocked.
If you want the most feature-heavy agent, there are better options. If you want a terminal agent you can see through, that's Hazzel.
What it does
- Read, search, and list your codebase. Tag files with
@pathto put them in context. - Create and edit files with diff preview and approval. Undo with
/undo. - Run shell commands with approval and timeout, sandboxed to your project root.
- Plan mode (
/plan on): read-only exploration. Hazzel proposes a numbered plan, changes nothing until you run/plan off. - Prove mode (
/prove on): smoke-checks Python edits in/tmpbefore you trust them. - Git-native:
/status,/diffwith file browser,/commitwith suggested message,/branch,/log,/push,/pull,/sync. No--force, noreset --hardvia shell. - Streams responses with per-turn token usage (
/usage).
Providers
Bring your own key. No subscription.
- Groq (default:
openai/gpt-oss-120b) - OpenAI
- Anthropic
- Mistral
Switch anytime with /model.
What it is not
Early-stage (v0.1.5). Expect rough edges.
No web browsing, no pull requests, no deploys, no background agents, no session persistence across restarts. It doesn't replace your editor — it stays in the terminal next to it.
Contributing
Issues and pull requests welcome.
License
AGPL-3.0-or-later. See LICENSE.
If it fits your workflow, star the repo. It helps other terminal-first developers find it.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hazzel-0.1.5.tar.gz.
File metadata
- Download URL: hazzel-0.1.5.tar.gz
- Upload date:
- Size: 68.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddad06c7f44f0886abce6e0c3d29f6784c3355c94031ee5d4714eaac87a291ca
|
|
| MD5 |
a331453ff05062e9ffc0374b1ccf47ee
|
|
| BLAKE2b-256 |
c6fead2892ee173801fbbe5aa841509242ba840e649e0234fddad9b6954fb6c3
|
File details
Details for the file hazzel-0.1.5-py3-none-any.whl.
File metadata
- Download URL: hazzel-0.1.5-py3-none-any.whl
- Upload date:
- Size: 75.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b08f8291f6eee23dbb961093730f371a039ccf79168d7ed38e35e2f381337652
|
|
| MD5 |
6f3e961eedca9ead4dbe7d38ed28f06f
|
|
| BLAKE2b-256 |
03fd35d707e2ebcd179387e13e1031e8cc7db08081d35b0a99dc5edf5d42331d
|