qsp — a command-line client for QuickSilver Pro, one OpenAI-compatible API for top LLMs (DeepSeek, Qwen, Kimi, Gemini) and FLUX text-to-image — billed to a single balance. Open-source chat models run 20% below OpenRouter / Together / Fireworks.
Designed to be AI-agent friendly: data commands accept --json for structured output, exit codes are reliable, and the API surface is intentionally small.
QuickSilver Pro is developed in three repositories under machinefi:
| Component | Repo | Visibility |
|---|---|---|
CLI — qsp command-line client (this repo) |
qspro-cli |
Public |
| Backend — API gateway + billing | qspro-backend |
Private |
| Frontend — landing + dashboard | qspro-frontend |
Private |
End-user site: https://quicksilverpro.io.
pip install quicksilverproPython 3.9+. Also exports itself as quicksilverpro if you prefer the long name.
qsp init # opens dashboard to get a key, stores it locally
qsp chat "Write me a haiku" # one-shot streaming chat (deepseek-v4-flash by default)
qsp image "a fox in the snow" # text-to-image, saves a file (flux.2-pro by default)
qsp balance # current credits
qsp models # supported models with prices & context length
qsp status # live per-model latency| Command | Purpose |
|---|---|
qsp init [--email X] [--key sk-...] |
Sign in (browser walkthrough) or paste an existing key |
qsp logout |
Forget locally-stored key |
qsp whoami [--json] |
Show signed-in email + balance |
qsp balance [--json] |
Credit balance + lifetime spend |
qsp models [--json] |
Available models + pricing + context length |
qsp chat "PROMPT" [-m MODEL] [-s SYS] [--max-tokens N] [--temperature F] [--no-stream] [--json] |
One-shot completion, streams to stdout by default |
qsp image "PROMPT" [-m MODEL] [-o FILE] [--size WxH] [-n N] [--json] |
Text-to-image; saves to a file (flux.2-pro by default) |
qsp usage [-n 10] [--json] |
Recent calls + aggregate per-model |
qsp status [--json] |
Live health of API + per-model probes |
qsp keys list [--json] |
Your API keys |
qsp keys create ALIAS [--monthly-limit USD] [--json] |
Create a new key with optional spend cap |
qsp keys delete ALIAS [-y] |
Delete a key (confirmation prompt unless -y) |
qsp pay {5,20,50} |
Opens Stripe checkout for a credit top-up |
Data commands (chat, image, models, balance, usage, status, keys list/create, whoami) support --json and print OpenAI-shaped JSON to stdout with errors on stderr.
qsp models --json | jq '.[].id'
qsp usage --json | jq '.totals.cost'
qsp chat "Summarize: $DOCUMENT" --json --no-stream | jq -r '.choices[0].message.content'
qsp image "a fox in the snow" -o fox.png # writes fox.png
qsp image "a fox in the snow" --json | jq -r '.data[0].b64_json' | base64 -d > fox.pngExit codes: 0 success · 1 remote/operational error · 2 usage / auth error.
Key stored at ~/.config/quicksilverpro/config.json (chmod 600). Override with:
QSP_API_KEY— use this key directly, ignore stored configQSP_API_URL— defaulthttps://api.quicksilverpro.io/v1QSP_AUTH_URL— defaulthttps://pay.quicksilverpro.ioQSP_MODEL— default model forqsp chatQSP_IMAGE_MODEL— default model forqsp imageQSP_CONFIG_DIR— where to store configQSP_HTTP_TIMEOUT— seconds, default 60 (image requests default to 180)
You don't need this CLI to use QuickSilver Pro. The OpenAI Python / Node / Swift SDKs work with only a base_url change:
from openai import OpenAI
client = OpenAI(
base_url="https://api.quicksilverpro.io/v1",
api_key="sk-...", # your QuickSilver Pro key
)
r = client.chat.completions.create(
model="deepseek-v3",
messages=[{"role": "user", "content": "Hello"}],
)See quicksilverpro.io/dashboard#quickstart for JS / Swift / curl.
MIT.
QuickSilver Pro is a product of MachineFi Inc. (68 Willow Rd, Menlo Park, CA).