OAICA

A terminal AI CLI (fork of Ollama's client) backed by our own API. No local GPU or model download required — every request goes to api.sprapp.com, which routes to whichever GPU box is currently serving the model you asked for.

Install

macOS / Linux

curl -fsSL https://oaica.com/install.sh | bash

Detects your architecture automatically.

Windows (PowerShell)

irm https://oaica.com/install.ps1 | iex

Installs to %LOCALAPPDATA%\Programs\OAICA and adds oaica to your session PATH. Set $env:OAICA_INSTALL_DIR first for a custom location.

Get an API key

There's no self-serve signup yet — get a key from whoever manages prism-api-router's Cloudflare secrets (wrangler secret put API_KEY). Set it once:

export OAICA_API_KEY=<your-key>          # macOS/Linux
$env:OAICA_API_KEY="<your-key>"          # Windows PowerShell

Add the export line to your shell profile (~/.bashrc, ~/.zshrc) or Windows profile so it persists across sessions.

Once set, list what's live right now — the roster changes as boxes come and go, so check this instead of hardcoding a name:

oaica run kat-coder-i-compact
> /model list
Available models:
  flashplan
  kat-coder-i-compact
  oaica-v4-flash-i-compact
  oaica-v4-flash-mm
  openrouter-gpt4o-mini
  sfc6-i-compact
> /model flashplan
Switched to model 'flashplan'

Same list from the shell without opening a session: curl -s https://api.sprapp.com/v1/models -H "Authorization: Bearer $OAICA_API_KEY". Also works piped/non-interactively — printf '/model list\n' | oaica run kat-coder-i-compact.

Connecting to a specific box (e.g. bitdeer) directly

By default oaica talks to api.sprapp.com, which routes to whichever GPU box is currently live. To bypass the router and hit a specific backend directly (debugging, or a box not yet registered with the router):

export OAICA_HOST=http://<bitdeer-host>:<port>   # e.g. the bitdeer tunnel URL for a model's port
oaica run kat-coder-i-compact

Direct-to-box mode usually has no auth of its own (the router is what enforces OAICA_API_KEY) — only point at a box you trust on a network you trust.

Run a model

oaica run flashplan              # recommended — auto-picks fast vs strong-reasoning per prompt
oaica run kat-coder-i-compact    # fast, general-purpose
oaica run oaica-v4-flash-i-compact  # stronger reasoning, slower

Inside the interactive session

CommandWhat it does
/model <name>Switch the active model for the rest of the session
/model listList models currently available
/lora add <name>Activate a LoRA adapter on its backend model
/lora remove <name>Deactivate it
/lora listList configured adapters

A LoRA is shared across everyone calling that model — toggling it affects all concurrent callers, not just your session.

Calling the API directly (curl, any language)

curl -X POST https://api.sprapp.com/v1/chat/completions \
  -H "Authorization: Bearer $OAICA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"flashplan","messages":[{"role":"user","content":"..."}],"max_tokens":256}'

Standard OpenAI-compatible shape. GET /v1/models lists what's live right now — always check this instead of hardcoding a name, the backend roster changes as boxes come and go.

Full contract + JS example (for browser/PWA use): see API_BACKEND.md in the prism-mobile repo.

Known limitations