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.2.tar.gz (12.9 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.2-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: orcx-0.0.2.tar.gz
  • Upload date:
  • Size: 12.9 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.2.tar.gz
Algorithm Hash digest
SHA256 605156202404654321d817db112ba2f9efb3c09a1f87460510e1b16babc36ef4
MD5 5b0ef0f887ddc1f07c4232ed2c24b79d
BLAKE2b-256 c4af4d6f4a53fa3b440341d164eb225b20c1581e1c139e4a9e5a4f09da62083d

See more details on using hashes here.

Provenance

The following attestation bundles were made for orcx-0.0.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: orcx-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.4 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5c5e1008666771c7a9dc057b9fc3d76396a319c97a9541c71b6b7ab516c41df8
MD5 35cc374029305224167b6bdaaaf3863b
BLAKE2b-256 6155f8e2a34be3b7e8bef6980c971b0459b8f30b14f1092d6956a31e51af25f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for orcx-0.0.2-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