Open-source terminal AI coding agent with multi-model support (OpenAI, Anthropic, Gemini, Ollama, vLLM).
Project description
Quoriv
An open-source, terminal-based AI coding agent. Model-agnostic. Locally-runnable. Fully extensible.
Quoriv is a Python-built coding agent that lives in your terminal and works directly inside your repository. It plans, reads and writes files, runs shell commands, executes tests, searches your codebase, and delegates work to specialized sub-agents — under a permission system you control. It is built on DeepAgents and LangGraph, and works with OpenAI, Anthropic Claude, Google Gemini, Ollama (local), and self-hosted vLLM endpoints.
Status: v1.0 released.
pip install quoriv— see the docs site for usage.
Why Quoriv
| Quality | What it means |
|---|---|
| Model-agnostic | One config flag swaps between OpenAI / Anthropic / Gemini / Ollama / vLLM. No vendor lock-in. |
| Local-first option | Run entirely offline with Ollama or a private vLLM server. Nothing leaves your machine. |
| Repo-native | Lives in your terminal, edits your real files, runs your real tests. No web upload, no copy-paste. |
| Permission-aware | Multi-tier modes (read-only / ask / auto / yolo) so you choose the autonomy level. |
| Extensible | Both MCP plugins (external) and a Python plugin API (internal). |
| Memory | Per-project + per-user + per-session memory. The agent remembers across runs. |
| Cost-aware | Per-task model routing: cheap fast model for trivial work, strong model for hard reasoning. |
| Open-source | Apache 2.0. Yours to read, modify, fork, and self-host. |
Installation
Note: Quoriv is not yet on PyPI. Once Phase 0 is complete, install with:
pip install quoriv
For development:
git clone https://github.com/BurhanHussain1/quoriv.git
cd quoriv
pip install -e ".[dev,ast]"
Quick start
# Configure your API key (stored in OS keychain, never on disk)
quoriv config set openai
# Start a session in the current repo
quoriv chat
# Run with a specific permission mode
quoriv chat --mode read-only # investigation only
quoriv chat --mode ask # default — prompts before each risky tool
quoriv chat --mode auto # auto-runs safe tools, prompts for risky ones
quoriv chat --mode yolo # autonomous (use with care)
# Switch model
quoriv chat --model openai:gpt-4.1
quoriv chat --model anthropic:claude-sonnet-4-6
quoriv chat --model ollama:qwen2.5-coder:32b
Configuration
Quoriv reads two TOML files (project config overrides global):
- Global —
~/.quoriv/config.toml - Project —
.quoriv/config.tomlin your repo
Example:
[model]
default = "openai:gpt-4.1"
fast = "openai:gpt-4o-mini" # used for trivial / routing
strong = "openai:gpt-4.1" # used for hard reasoning
[permissions]
mode = "ask"
[ui]
theme = "dark"
API keys live in the OS keychain via keyring — never in plaintext.
Architecture
Terminal (Rich + prompt_toolkit)
|
src/quoriv/cli.py
|
src/quoriv/app.py <-- main loop
|
core/ (DeepAgents + LangGraph + routing + context)
|
models/ (OpenAI / Anthropic / Gemini / Ollama / vLLM)
|
tools/ + permissions/ + memory/ + plugins/ + repo/
See PROJECT_PLAN.md for the full architecture and phase-by-phase roadmap.
Built-in tools
| Category | Tools |
|---|---|
| Files | read, write, edit, multi_edit, ls, glob, grep |
| Shell | execute (with sandboxing + permission gating) |
| Code intel | find_symbol, go_to_definition, find_references (tree-sitter) |
| Git | status, diff, log, commit, branch, blame |
| Tests | run_tests (language-aware: pytest / jest / cargo / go test) |
| Web | web_search, web_fetch |
| Patch | apply_diff (safe unified-diff apply) |
Custom tools: write a Python plugin or connect any MCP server.
Permission modes
| Mode | Read | Write | Shell | Use case |
|---|---|---|---|---|
read-only |
auto | blocked | blocked | Investigation, code review |
ask |
auto | prompt | prompt | Default — full control |
auto |
auto | auto-safe / prompt-risky | prompt-risky | Power-user productivity |
yolo |
auto | auto | auto | Trusted workflows only |
Path protection (e.g., .env, ~/.ssh) is enforced in every mode.
Slash commands
| Command | Description |
|---|---|
/help |
Show all commands |
/clear |
Clear the conversation |
/model <name> |
Switch active model |
/mode <mode> |
Switch permission posture |
/cost |
Show token usage and dollar cost |
/tools |
List enabled tools |
/undo |
Revert the last set of edits |
/save <name> |
Save current session |
/load <name> |
Resume a saved session |
/memory |
Inspect / edit memory |
/doctor |
Health check: API keys, model access, tool config |
Development
# Set up
git clone https://github.com/BurhanHussain1/quoriv.git
cd quoriv
pip install -e ".[dev,ast]"
pre-commit install
# Run tests
pytest
# Lint + type-check
ruff check .
ruff format .
mypy
# Run the CLI from source
python -m quoriv chat
See CONTRIBUTING.md for contributor guidelines.
Roadmap
| Phase | Scope | Status |
|---|---|---|
| 0 | Foundation: scaffold, config, OpenAI provider | In progress |
| 1 | Core agent + tools + Rich TUI + permissions | Planned |
| 2 | Memory, model routing, MCP + Python plugins | Planned |
| 3 | Anthropic / Gemini / Ollama / vLLM, hooks, replay | Planned |
| 4 | OSS release: PyPI, binaries, docs site, v1.0.0 | Planned |
See PROJECT_PLAN.md for the full plan.
Inspiration
- Claude Code (Anthropic) — UX reference
- Gemini CLI (Google) — UX reference
- Aider — patch-based editing patterns
- DeepAgents — agent runtime
- claw-code — Rust implementation reference
License
Apache 2.0 © 2026 Burhan Hussain
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 quoriv-1.0.0.tar.gz.
File metadata
- Download URL: quoriv-1.0.0.tar.gz
- Upload date:
- Size: 199.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53855f7a14936bbd488f80d2d9bfc1c9ff614a21f0368e269aac2e14412e70f4
|
|
| MD5 |
90ae6dadd98b7e1ca8eaa334712f2966
|
|
| BLAKE2b-256 |
3aa81583ac15cbdb53f7e523a1de904206df943aea261cfd1fe53bd582234ab3
|
Provenance
The following attestation bundles were made for quoriv-1.0.0.tar.gz:
Publisher:
release.yml on BurhanHussain1/quoriv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quoriv-1.0.0.tar.gz -
Subject digest:
53855f7a14936bbd488f80d2d9bfc1c9ff614a21f0368e269aac2e14412e70f4 - Sigstore transparency entry: 1574935369
- Sigstore integration time:
-
Permalink:
BurhanHussain1/quoriv@5e337f98c75ff2f7d2b4eb716995487a919e2083 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/BurhanHussain1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5e337f98c75ff2f7d2b4eb716995487a919e2083 -
Trigger Event:
push
-
Statement type:
File details
Details for the file quoriv-1.0.0-py3-none-any.whl.
File metadata
- Download URL: quoriv-1.0.0-py3-none-any.whl
- Upload date:
- Size: 116.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdde27e7c0e73112104845ba2364a25ed25a749160987f2e56aab27d37e983fa
|
|
| MD5 |
cab0de88e48fc933daa90694f6b6b2ac
|
|
| BLAKE2b-256 |
77679389d60b6bbefd0b517b364c02aab5064599ad6ff3d35d7886a181d215d8
|
Provenance
The following attestation bundles were made for quoriv-1.0.0-py3-none-any.whl:
Publisher:
release.yml on BurhanHussain1/quoriv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quoriv-1.0.0-py3-none-any.whl -
Subject digest:
bdde27e7c0e73112104845ba2364a25ed25a749160987f2e56aab27d37e983fa - Sigstore transparency entry: 1574935487
- Sigstore integration time:
-
Permalink:
BurhanHussain1/quoriv@5e337f98c75ff2f7d2b4eb716995487a919e2083 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/BurhanHussain1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5e337f98c75ff2f7d2b4eb716995487a919e2083 -
Trigger Event:
push
-
Statement type: