Skip to main content

LLM orchestrator - route prompts to any model via litellm

Project description

orcx

LLM orchestrator - route prompts to any model via litellm.

Alpha - Core functionality works, API may change.

Why orcx?

  • 100+ providers via litellm - OpenRouter, OpenAI, Anthropic, Google, etc.
  • Agent presets - Save model + system prompt + parameters as reusable configs
  • Conversations - Multi-turn with -c continue and --resume ID
  • OpenRouter routing - Control quantization, provider selection, sorting
  • Cost tracking - See what each request costs
  • Simple - Just route prompts, not a full agent framework

Install

uv tool install orcx
# or
pip install orcx

Quick Start

# Set your API key
export OPENROUTER_API_KEY=sk-or-...

# Run a prompt
orcx run -m openrouter/deepseek/deepseek-v3.2 "hello"

# With file context
orcx run -m openrouter/deepseek/deepseek-v3.2 -f code.py "review this"

# Show cost
orcx run -m openrouter/deepseek/deepseek-v3.2 "hello" --cost

Usage

# Direct model (provider/model format)
orcx run -m openrouter/deepseek/deepseek-v3.2 "hello"

# Using model alias (if configured)
orcx run -m deepseek "hello"

# Using agent preset
orcx run -a reviewer "review this code"

# With file context
orcx run -a reviewer -f src/main.py "review this"

# Multiple files
orcx run -m deepseek -f code.py -f tests.py "explain the tests"

# Pipe from stdin
cat code.py | orcx run -a reviewer "review this"

# JSON output (includes usage/cost)
orcx run -m deepseek "hello" --json

# Custom system prompt
orcx run -m deepseek -s "You are a pirate" "greet me"

# Save response to file
orcx run -m deepseek "explain async" -o response.md

Conversations

Conversations are saved automatically. Continue or resume them:

# Start a conversation (prints ID like [a1b2])
orcx run -m deepseek "explain python decorators"
# [a1b2]

# Continue last conversation
orcx run -c "show me an example"

# Resume specific conversation
orcx run --resume a1b2 "what about class decorators?"

# Don't save this exchange
orcx run --no-save -m deepseek "quick question"

# List recent conversations
orcx conversations

# Show full conversation
orcx conversations show a1b2

# Delete conversation
orcx conversations delete a1b2

# Clean old conversations (default: 30 days)
orcx conversations clean --days 7

Conversations are stored in ~/.config/orcx/conversations.db.

Configuration

Config location: ~/.config/orcx/

config.yaml

# Default model (used when no -m or -a specified)
default_model: openrouter/deepseek/deepseek-v3.2

# Model aliases for shorthand
aliases:
  deepseek: deepseek/deepseek-v3.2
  sonnet: anthropic/claude-4.5-sonnet

# API keys (env vars take precedence)
keys:
  openrouter: sk-or-...

agents.yaml

agents:
  fast:
    model: openrouter/deepseek/deepseek-v3.2
    description: Fast, cheap reasoning
    temperature: 0.7
    max_tokens: 4096

  reviewer:
    model: anthropic/claude-4.5-sonnet
    system_prompt: You are a code reviewer. Be concise and actionable.

  # With OpenRouter provider preferences
  quality:
    model: openrouter/deepseek/deepseek-v3.2
    provider_prefs:
      min_bits: 8 # fp8+ only (excludes fp4)
      ignore: [DeepInfra] # blacklist providers
      prefer: [Together] # soft preference
      sort: throughput # or: price, latency

Provider Preferences

OpenRouter-specific routing options:

Option Type Description
min_bits int Minimum quantization (8 = fp8+)
quantizations list Explicit whitelist: [fp8, fp16, bf16]
exclude_quants list Blacklist: [fp4, int4]
ignore list Blacklist providers
only list Whitelist providers (strict)
prefer list Soft preference (tries first, falls back)
order list Explicit order
sort str "price", "throughput", "latency"

Commands

orcx run "prompt"        # Run prompt (uses default model/agent)
orcx run -m MODEL "..."  # Use specific model or alias
orcx run -a AGENT "..."  # Use agent preset
orcx run -c "..."        # Continue last conversation
orcx agents              # List configured agents
orcx models              # Show model format and examples
orcx conversations       # List/manage conversations
orcx --version           # Show version
orcx --debug             # Show full tracebacks on error

CLI Options

Option Short Description
--model -m Model or alias to use
--agent -a Agent preset to use
--system -s System prompt
--context Context to prepend
--file -f Files to include (repeatable)
--output -o Write response to file
--continue -c Continue last conversation
--resume Resume conversation by ID
--no-save Don't save conversation
--no-stream Disable streaming output
--cost Show cost after response
--json -j Output as JSON

Environment Variables

API keys loaded from env vars (take precedence over config file):

  • OPENROUTER_API_KEY
  • OPENAI_API_KEY
  • ANTHROPIC_API_KEY
  • DEEPSEEK_API_KEY
  • GOOGLE_API_KEY
  • MISTRAL_API_KEY
  • GROQ_API_KEY
  • TOGETHER_API_KEY

Model Format

Models use provider/model-name format. See your provider's docs for available models:

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

orcx-0.0.4.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

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

orcx-0.0.4-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file orcx-0.0.4.tar.gz.

File metadata

  • Download URL: orcx-0.0.4.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for orcx-0.0.4.tar.gz
Algorithm Hash digest
SHA256 93dd09ea023366aa6b04f324abd75b8d77100f212b1ba7759e464d4a35a2f391
MD5 25269ddb9a86b5b3a893127f3d0d3ce7
BLAKE2b-256 c40ef5869d6ca0920d9443e3dc6d9c9bab9a0f5671cce32e3d0fd46cfc3f839f

See more details on using hashes here.

Provenance

The following attestation bundles were made for orcx-0.0.4.tar.gz:

Publisher: release.yml on nijaru/orcx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file orcx-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: orcx-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for orcx-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 53992d9dc6453f10aa3b77fbf8d4fb6f2b965adf3ea4e27f9bdea7f0f415633c
MD5 822c08ea56e85f69f5f47f924ed033f1
BLAKE2b-256 84f64f81bff17bb0f4be416f3d33c1e531528cd365af30abc3a5fd7f8297ee5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for orcx-0.0.4-py3-none-any.whl:

Publisher: release.yml on nijaru/orcx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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