A terminal-based AI coding assistant built in Rust.
A Rust port of pi by Mario Zechner. Multi-provider · Streaming-first · Extensible · Session persistence
Getting Started · Architecture · Configuration · Contributing · Changelog
oxicode is a Rust port of pi, re-implementing its core architecture — unified LLM API, agent runtime, tool calling, terminal UI, and session persistence — in idiomatic Rust with Tokio, Ratatui, and Serde.
It brings the power of LLM-based coding assistants directly to your terminal — fast, private, and fully under your control.
| Feature | Description |
|---|---|
| 🌐 Multi-provider | OpenAI, Anthropic, Google, DeepSeek, Mistral, Groq, Cerebras, xAI, OpenRouter, Azure |
| ⚡ Streaming-first | Real-time token streaming with thinking/reasoning support |
| 🔧 Tool calling | Built-in read, write, edit, bash, grep, find — plus extensible trait system |
| 🖥️ Interactive TUI | Component-based terminal UI with themes, markdown rendering, and image support |
| 🌳 Session system | Persistent conversations with branching, forking, and JSONL storage |
| 🧩 Skill system | Pluggable prompt skills (brainstorming, deep research, code review, etc.) |
| 🔌 Extensions | Dynamically load native .so/.dylib/.dll or WASM plugins |
| 📦 Package manager | Install, update, and manage skill/extension packages |
| 🤖 Multi-agent SDK | Build multi-agent pipelines with the oxicode-sdk builder pattern |
cargo install (any Rust toolchain ≥ 1.96):
cargo install oxicode-clicargo binstall (10-100x faster — uses prebuilt binary from the GitHub release):
cargo install cargo-binstall
cargo binstall oxicode-cliPre-built binary (macOS Apple Silicon):
# aarch64-apple-darwin
curl -fsSL https://github.com/project-oxi/oxicode/releases/latest/download/aarch64-apple-darwin.tar.gz \
| tar xz -C /usr/local/binOr download from the Releases page.
Each release ships with SHA256SUMS for integrity verification.
Build from source (last resort):
git clone https://github.com/project-oxi/oxicode.git
cd oxicode && cargo build --release
cp target/release/oxicode /usr/local/bin/curl -fsSL https://github.com/project-oxi/oxicode/releases/latest/download/SHA256SUMS -o SHA256SUMS
sha256sum -c SHA256SUMS 2>/dev/null | grep aarch64-apple-darwin# Set your API key (Anthropic, OpenAI, Google, etc.)
export ANTHROPIC_API_KEY="sk-ant-..."# Interactive mode (default)
oxicode
# Single prompt
oxicode "Explain Rust ownership"
# Specify provider and model
oxicode -p openai -m gpt-4o "Design a REST API"That's it. No config files required — oxicode works out of the box.
oxicode is a multi-crate Rust workspace designed for modularity:
graph LR
A[oxicode-cli] --> B[oxicode-sdk]
A --> C[oxicode-tui]
B --> E[oxicode-agent]
E --> F[oxicode-ai]
| Crate | Purpose |
|---|---|
| oxicode-ai | Unified LLM API — 8 providers, streaming, tool calling, compaction |
| oxicode-agent | Agent runtime — tool-calling loop, event system, MCP client |
| oxicode-tui | Terminal UI — differential rendering, themes, markdown, chat widgets |
| oxicode-sdk | Multi-agent SDK — agent groups, message bus, port-based adapters, builder pattern |
| oxicode-cli | CLI binary — ties everything together (TUI + RPC + port composition root) |
Settings are layered — later layers override earlier ones:
defaults → ~/.oxicode/settings.toml → .oxicode/settings.toml → env vars → CLI flags
Example ~/.oxicode/settings.toml:
default_model = "anthropic/claude-sonnet-4-20250514"
default_provider = "anthropic"
thinking_level = "medium"
theme = "default"
temperature = 0.7
max_tokens = 4096
auto_compaction = trueEnvironment variable overrides:
| Variable | Setting |
|---|---|
OXICODE_MODEL |
default_model |
OXICODE_PROVIDER |
default_provider |
OXICODE_THEME |
theme |
OXICODE_TEMPERATURE |
default_temperature |
OXICODE_MAX_TOKENS |
max_response_tokens |
oxicode [OPTIONS] [PROMPT]
Options:
-p, --provider <PROVIDER> Provider (anthropic, openai, google, ...)
-m, --model <MODEL> Model (claude-sonnet-4-20250514, gpt-4o, ...)
-i, --interactive Force interactive mode
--thinking <LEVEL> off, minimal, low, medium, high, xhigh
-e, --extension <PATH> Load extension (repeatable)
-h, --help Print help
-V, --version Print version
Commands:
sessions List all sessions
tree [SESSION_ID] Show session tree
fork <PARENT> <ENTRY> Fork a session
delete <SESSION> Delete a session
pkg install <SOURCE> Install a package
pkg list List packages
config show Show configuration
config set <KEY> <VALUE> Set a configuration value
| Skill | Purpose |
|---|---|
| Autonomous Loop | Self-correcting design→implement→verify cycle |
| Brainstorming | Collaborative ideation with multi-approach comparison |
| Deep Research | Investigation, analysis, and design documentation |
| Reviewer | Multi-axis code review |
| Super Review | Deep system-level review |
| Planner | Implementation planning with dependency batching |
| Scout | Fast codebase reconnaissance and structure analysis |
| Design Farmer | Design system construction (colors, tokens, a11y) |
| Playwright CLI | Browser automation via Playwright |
| Worktree | Git worktree management |
cargo build # Debug build
cargo build --release # Release binary
cargo test --workspace # Run all tests (2,000+)
cargo clippy --workspace -- -D warnings # Lint
cargo fmt --all -- --check # Format checkSee CONTRIBUTING.md for the full development guide.
Which providers are supported?
OpenAI, Anthropic, Google, DeepSeek, Mistral, Groq, Cerebras, xAI, OpenRouter, and Azure OpenAI. Set the relevant API_KEY environment variable and use -p <provider> to select one.
Can I use oxicode as a library?
Yes. Each crate is published independently: oxicode-ai (LLM API), oxicode-agent (agent runtime), oxicode-tui (terminal UI), oxicode-sdk (multi-agent SDK). See individual crate READMEs for details.
How do sessions work?
Sessions are stored as append-only JSONL files in ~/.oxicode/sessions/. Each session is a tree — you can fork from any point to explore alternative paths without losing history. Use oxicode sessions to list, oxicode tree to inspect, and oxicode fork to branch.
Does oxicode send my code to third parties?
oxicode only communicates with the LLM provider you select. No telemetry, no analytics, no third-party data collection. Your code stays between you and your chosen provider.
oxicode is a Rust port of pi by Mario Zechner. The architectural design, provider abstraction, tool system, streaming events, and session tree are derived from the original pi project (MIT License). See NOTICE.md for details.
MIT © 2025 Mario Zechner, 2025–2026 oxicode contributors
oxicode is developed and maintained by volunteers. If oxicode saves you time or makes your workflow better, consider sponsoring the project to fund continued work on providers, the agent loop, and the TUI.