AI-powered coding assistant CLI - use local models (Ollama) or cloud providers (OpenRouter, HuggingFace)
Project description
ultracode
AI-powered coding assistant CLI. Works with local models (Ollama) or cloud providers (OpenRouter, HuggingFace).
No environment variables needed - everything is configured through simple CLI prompts.
Install
From PyPI (recommended)
pip install ultracode
Or with pipx for an isolated install:
pipx install ultracode
From source
git clone https://github.com/avirajbhatt99/code-agent.git
cd code-agent
pip install -e .
Verify
ultracode --version
Quick Start
1. Install Ollama (for local models)
macOS:
brew install ollama
ollama serve # start the server
ollama pull qwen2.5:7b # download a model
Linux:
curl -fsSL https://ollama.ai/install.sh | sh
ollama serve
ollama pull qwen2.5:7b
Windows: Download from ollama.ai/download, then:
ollama serve
ollama pull qwen2.5:7b
(Skip Ollama if you'd rather use OpenRouter or HuggingFace.)
2. Run ultracode
ultracode
First time? You'll see a setup wizard that asks you to pick a provider (Ollama / OpenRouter / HuggingFace) and a model.
3. Start coding
❯ read my code and explain it
● Glob(**/*.py)
● Read(src/main.py)
● Read(src/utils.py)
This is a Python CLI application that...
❯ write a function to calculate fibonacci
● Write(fibonacci.py)
Created fibonacci.py with the function.
❯ run the tests
● Bash(pytest)
All tests passed.
Usage
CLI commands
ultracode # start interactive session
ultracode setup # re-run setup wizard
ultracode config # view/edit configuration
ultracode models # list available models
ultracode pull # download an Ollama model
ultracode --help # show all commands
Configuration
ultracode config # view current config
ultracode config --provider openrouter
ultracode config --model gpt-4o
ultracode config --api-key # update API key
ultracode config --reset # reset to defaults
In-session slash commands
The leading / is optional.
| Command | Action |
|---|---|
/help |
Show help |
/clear |
Clear conversation and todos |
/tokens |
Show token usage this session |
/todos |
Show the current todo list |
/exit |
Quit (also /quit, /q, Ctrl+D) |
Esc |
Interrupt the current response |
Tools
ultracode ships with 48+ tools. Highlights:
| Category | Tools |
|---|---|
| Files | read_file, write_file, edit_file, delete, copy, move, mkdir, ls |
| Search | glob, grep |
| Shell | bash |
| Git | git_status, git_diff, git_log, git_add, git_commit, git_branch, git_checkout, git_push, git_pull, git_reset, git_merge, git_stash, git_clone, git_tag, git_remote, git_init |
| Web | web_fetch, http_request |
| Packages | npm_*, pip_*, cargo_* |
| Planning | todo_write |
Mutating tools (writes, shell, destructive git, network requests) ask for permission before running. Approve once (y), allow for the rest of the session (a), or deny (n, default).
Example tasks
"read my code and explain it"
"write a REST API for user management"
"fix the bug in auth.py"
"run the tests and fix failures"
"refactor this function to be cleaner"
"add type hints to utils.py"
Providers
Ollama (local) — default
- Free and private, runs on your machine
- Recommended:
qwen2.5-coder:7b,llama3.1:8b,mistral:7b - Tool calling is model- and version-dependent on Ollama. If the agent returns JSON as text instead of actually invoking tools, your model isn't emitting structured
tool_calls. Try a different model or upgrade Ollama. Cloud providers (OpenRouter, HuggingFace) are more reliable for tool use.
OpenRouter (cloud)
- Access GPT-4, Claude, Llama, DeepSeek, and more
- Some free models available
- Get an API key: https://openrouter.ai/keys
- Anthropic models (
anthropic/*) use prompt caching automatically to keep long sessions cheap
HuggingFace (cloud)
- Open-source models via the HF Inference API
- Get a token: https://huggingface.co/settings/tokens
Configuration file
Settings stored in:
- macOS / Linux:
~/.config/codeagent/config.json - Windows:
%APPDATA%\codeagent\config.json
{
"provider": "ollama",
"model": "qwen2.5:7b",
"ollama_host": "http://localhost:11434",
"max_iterations": 25
}
Troubleshooting
Ollama not connecting
ollama list # check it's running
ollama serve # start it
ollama pull qwen2.5:7b # pull a model
Bad API key
ultracode config --api-key
Reset everything
ultracode config --reset
ultracode setup
Windows
The Esc key interrupt is POSIX-only — on Windows, use Ctrl+C to interrupt and Ctrl+Z to exit.
If ultracode isn't found after pip install, your Python Scripts/ directory may not be on PATH. Either add it (usually C:\Users\<you>\AppData\Local\Programs\Python\Python3x\Scripts) or run via python -m codeagent.cli.
Development
git clone https://github.com/avirajbhatt99/code-agent.git
cd code-agent
pip install -e ".[dev]"
pytest # tests
mypy src/codeagent # type checking
ruff check src/codeagent # lint
License
MIT
Project details
Release history Release notifications | RSS feed
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 ultracode-0.1.1.tar.gz.
File metadata
- Download URL: ultracode-0.1.1.tar.gz
- Upload date:
- Size: 63.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
902b366caef757c098b67bf9dd39b3c5e3f8a2eae4bf2aa09971cf23d1057096
|
|
| MD5 |
98a74ac9730c5791d0e40f162662c8bb
|
|
| BLAKE2b-256 |
b12ede32d93823daa1be5236c0a6e7f8a754a480a09d68c099a66714d8d86ced
|
File details
Details for the file ultracode-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ultracode-0.1.1-py3-none-any.whl
- Upload date:
- Size: 80.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b91d85467ad77b95ea957ee67f9d112cd391c33998cf9af841740f1fbef5d0c
|
|
| MD5 |
b74fce86c10df3cd4545e8c6398609f8
|
|
| BLAKE2b-256 |
6683f2441f8384abe08b18ffd2dffda58b90924c044801031e2af36e27be92fa
|