Qodey
A coding agent for your terminal that runs on your own models. It uses Ollama, so everything stays on your machine — no accounts, no API keys, no cloud.
You type qodey, describe what you want, and it pokes around your project, edits files, runs commands, and fixes its own errors until the job is done (or it gets genuinely stuck, in which case it says so).
You need
- Python 3.9+
- Ollama installed and running (
ollama serve) - At least one model, e.g.
ollama pull qwen2.5-coder:32b
One honest note: coder models work noticeably better than plain chat models. A small chat model can still use Qodey, it will just fumble the tools more often.
Install
pip install qodey
qodey
From source, if you want to hack on it:
pip install -e .
python -m qodey
Or isolated with pipx:
pipx install qodey
What it does
- Figures out what's in your folder (React app, Python script, Rust crate, empty dir, …)
- Reads, writes, and edits files; creates folders; searches code
- Runs shell commands — installs, builds, tests — and actually reads the output when they fail
- Asks before anything destructive. Reads never ask; writes and commands do, unless you switch to auto mode
A typical exchange:
❯ add validation to the signup form
◉ Reading src/Signup.tsx…
✓ Reading src/Signup.tsx
◉ Editing src/Signup.tsx…
✓ Editing src/Signup.tsx
Done — email and password are validated on submit, errors show
under each field. `npm test` passes.
Commands
| Command | Does |
|---|---|
/help |
Show commands |
/open |
Switch to a different folder |
/models |
List your installed Ollama models |
/model |
Switch model (/model <name>) |
/status |
Show system status |
/files |
List project files |
/tree |
Show project tree |
/run |
Run a shell command |
/plan |
Toggle planning mode |
/settings |
View and change settings |
/permissions |
Switch permission mode (auto/confirm/safe) |
/compact |
Summarize old context to save space |
/clear |
Clear the conversation |
/exit |
Quit |
Permissions
Three modes, default is confirm:
confirm— reads happen freely, writes and commands ask firstauto— everything runs without asking (your funeral withrm -rf)safe— asks about practically everything
Change with /permissions.
Config
Lives at ~/.qodey/config.json. You usually don't need to touch it — /settings covers the common stuff — but it's plain JSON if you want to:
{
"ollama_url": "http://127.0.0.1:11434",
"default_model": "qwen2.5-coder:32b",
"temperature": 0.2,
"permission_mode": "confirm",
"plan_mode": true,
"max_agent_steps": 25
}
How it works
Each turn, Qodey sends the model a short description of your project (file list, detected stack — never whole files), the model answers with text plus tool calls, Qodey runs them, feeds the results back, and repeats until there's nothing left to do. If a tool call gets denied or a command fails, the model sees that and adjusts.
License
MIT
Metadata
Release files for qodey 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qodey-1.0.1.tar.gz | 340.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qodey-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 681.9 kB
Release files / qodey-1.0.1.tar.gz
| Download URL | qodey-1.0.1.tar.gz |
|---|---|
| Size | 340.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4a91c173fa949820cb4d0434b93e3b86ae3feea258604857a97bb15f00ab2df
|
|
BLAKE2b-256 checksum How to use checksums |
8ced7784be0f527894f66a59c20440386d115815bfba4c53d55f879dd862cb3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / qodey-1.0.1-py3-none-any.whl
| Download URL | qodey-1.0.1-py3-none-any.whl |
|---|---|
| Size | 341.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f768f6e38d9d3134683be003396884b3e1a375aca70f0e0be099804c8f9ecc44
|
|
BLAKE2b-256 checksum How to use checksums |
d0e80b5a5b20fbc32471d65b0aecb7f4718e1afe95b42de62513c3016efb7f22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|