Skip to main content

Hazzel

Hazzel

A small terminal coding agent. Bring your own key.

PyPI Python License

Hazzel lives in your terminal. It reads code, edits files, runs commands, and works with git — always with your approval first.

Hazzel demo

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, GEMINI_API_KEY, DEEPSEEK_API_KEY, OPENROUTER_API_KEY) work too. Ollama runs local models with no key (OLLAMA_HOST overrides the default http://localhost:11434/v1).

Windows works too (PowerShell or cmd) — the full-screen menus gracefully fall back to plain prompts, no new dependencies.

❯ 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 @path to 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. Read-only cmds (ls, cat, git status…) skip approval.
  • 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 /tmp before you trust them.
  • Goal (/goal): pin an objective, run it with /goal run; every turn steers toward it until done.
  • Git-native: /status, /diff with file browser, /review with senior-level findings, /commit with suggested message, /branch, /log, /push, /pull, /sync. No --force, no reset --hard via shell.
  • GitHub PRs via gh: /pr lists open PRs, /pr view|diff|checks <n> reads, /pr comment|merge|close <n> and /pr create <title> write (approval first, plan-mode read-only). Needs gh auth login.
  • Model thinking stays collapsed behind an Enter-to-expand prompt — peek only when curious.
  • Read the web: fetch <url> pulls public docs and references into context (read-only).
  • Multiline input: Ctrl+J for newlines, full multiline paste.
  • Extras: /docs prints the full usage guide, /init drafts an AGENTS.md project map, /export saves the transcript, /copy grabs the last reply, /retry re-runs your last message.
  • Streams responses with per-turn token usage (/usage).

Providers

Bring your own key. No subscription.

  • Groq (default: openai/gpt-oss-120b)
  • OpenAI
  • Anthropic
  • Mistral
  • Gemini
  • DeepSeek
  • OpenRouter (100+ models through one key)
  • Ollama (local, no key)

Switch anytime with /model.

What it is not

Early-stage (v1.3.2). Expect rough edges.

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

hazzel-1.3.8.tar.gz (104.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hazzel-1.3.8-py3-none-any.whl (108.5 kB view details)

Uploaded Python 3

File details

Details for the file hazzel-1.3.8.tar.gz.

File metadata

  • Download URL: hazzel-1.3.8.tar.gz
  • Upload date:
  • Size: 104.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for hazzel-1.3.8.tar.gz
Algorithm Hash digest
SHA256 3bf15ec2d91245a4541cab169148308d1f8383187f3c54149fbc7c6ed1a9f605
MD5 7957036870bb7d3229c2014a7bdad3b1
BLAKE2b-256 c96ea1ad31d8e74d875a5771e1d3e9f8ef8307c2ffd05037b1abe61f88332ae4

See more details on using hashes here.

File details

Details for the file hazzel-1.3.8-py3-none-any.whl.

File metadata

  • Download URL: hazzel-1.3.8-py3-none-any.whl
  • Upload date:
  • Size: 108.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for hazzel-1.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2b8032aafbefee4dbba1edcd6a1e7eee09a5067504f647108b174fad3758b830
MD5 7a54a6106d28a31d16da5c5e3c6ee02d
BLAKE2b-256 4c9b63d5efa082c99cf2a5ae689922c4463d5da6e87ab79fa26fe7525c24573e

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.0

2 files

1.3.9

2 files

This release

1.3.8 This release

2 files

1.3.7

2 files

1.3.6

2 files

1.3.5

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

0.4.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page