OxiCode icon
Cross-platform · Active · v0.4+

OxiCode

Terminal AI coding assistant

OxiCode brings the power of LLM-based coding assistants directly to your terminal — fast, private, and fully under your control. It's a Rust port of pi by Mario Zechner, re-implementing its unified LLM API, agent runtime, tool calling, terminal UI, and session persistence in idiomatic Rust with Tokio, Ratatui, and Serde.

$ cargo install oxicode-cli View on GitHub
11
Providers
11
Workspace crates
2,000+
Tests
$ oxicode
▌ Streaming · claude-sonnet-4 · 142 tokens · $0.003

  Sure — three equivalent rewrites, pick whichever fits:

    fn total(values: &[Item]) -> u64 {
        values.iter().map(|x| x.value).sum()
    }

> Ready for the next prompt.

What's inside

Multi-provider LLM

OpenAI, Anthropic, Google, DeepSeek, Mistral, Groq, Cerebras, xAI, OpenRouter, Azure — switch providers with a single flag.

Streaming-first

Real-time token streaming with thinking/reasoning support. No waiting for full responses.

Session branching

Persistent conversations stored as JSONL. Fork from any point to explore alternative paths without losing history.

Skill system

Pluggable prompt skills — brainstorming, deep research, code review, design system construction, and more.

Extensions

Dynamically load native .so/.dylib/.dll or WASM plugins. Build custom tools and integrations.

Multi-agent SDK

Build multi-agent pipelines with the OxiCode SDK builder pattern. Agent groups, message bus, port-based adapters.

Install

Cargo install cargo install oxicode-cli
Cargo binstall (prebuilt) cargo binstall oxicode-cli

In action

Real prompts, real output — the same interfaces humans and agents use.

TUI mid-streaming
$ oxicode "Refactor this loop into iter().collect()"

▌ Streaming · claude-sonnet-4 · 142 tokens · $0.003

  Sure - the imperative accumulator is the classic case iter() and
  sum() cover. Three equivalent rewrites, pick whichever fits:

    fn total(values: &[Item]) -> u64 {
        values.iter().map(|x| x.value).sum()
    }

  If you specifically need to handle overflow, prefer:

    fn total(values: &[Item]) -> u64 {
        values.iter().fold(0u64, |acc, x| acc + x.value as u64)
    }

> Ready for the next prompt.
CLI help
$ oxicode --help

Rust-native terminal AI coding assistant

USAGE:
    oxicode [OPTIONS] [PROMPT]

OPTIONS:
    -p, --provider <NAME>       LLM provider (openai | anthropic | google | ...)
    -m, --model <NAME>          Model id (provider-dependent)
        --stream / --no-stream  Streaming tokens (default: stream)
        --cwd <DIR>             Workspace (defaults to $PWD)
        --branch-from <ID>      Fork from a stored session
        --skill <NAME>          Apply a skill (brainstorm | review | research | ...)
    -h, --help                  Print help
    -V, --version               Print version