Skip to main content

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.

Groq (cloud) — fastest

  • Very low-latency inference on open-weight models (Llama, Qwen, DeepSeek, Mixtral, Gemma)
  • Reliable tool-call support
  • Get an API key: https://console.groq.com/keys
  • Default model: llama-3.3-70b-versatile

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)

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultracode-0.2.1.tar.gz (64.9 kB view details)

Uploaded Source

Built Distribution

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

ultracode-0.2.1-py3-none-any.whl (84.3 kB view details)

Uploaded Python 3

File details

Details for the file ultracode-0.2.1.tar.gz.

File metadata

  • Download URL: ultracode-0.2.1.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for ultracode-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4db5545a3195681b306c6834e99f9a7c3e2ec4a25c85c4c9c03dfb8a367dd943
MD5 1e0fe2502a2932f1bd85688650630571
BLAKE2b-256 7e465cf665fdb3b767250603f202074192d5e689383f471717a8f2a6bd2445f8

See more details on using hashes here.

File details

Details for the file ultracode-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ultracode-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 84.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for ultracode-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a6f2d6eaf7bd26fde52e0786b86413d13c8b6dd6fd35cefd0ff5ac6d568676d6
MD5 d956bd163ca6aa23af7da5eed27b219b
BLAKE2b-256 204a3a83476b97bcb417fa1c94376d41eb8314e5d9e50defeba2aef116fe3e5c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page