diff --git a/README.md b/README.md index ae61adc..8d6f662 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # QuickSilver Pro CLI -`qsp` — a command-line client for [QuickSilver Pro](https://quicksilverpro.io), one OpenAI-compatible API for frontier and open-source LLMs (Claude, GPT, Gemini, DeepSeek, Qwen, Kimi, Muse) **and** FLUX text-to-image — all billed to a single balance. Open-source chat models run up to 20% below OpenRouter. +`qsp` — a command-line client for [QuickSilver Pro](https://quicksilverpro.io), one OpenAI-compatible API for frontier and open-source LLMs (Claude, GPT, Gemini, Grok, GLM, DeepSeek, Qwen, Kimi, Muse) **and** FLUX text-to-image — all billed to a single balance. Open-source chat models run up to 20% below OpenRouter. Designed to be **AI-agent friendly**: data commands accept `--json` for structured output, exit codes are reliable, and the API surface is intentionally small. diff --git a/pyproject.toml b/pyproject.toml index 06c9e3f..64f41f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,8 +4,8 @@ build-backend = "hatchling.build" [project] name = "quicksilverpro" -version = "0.3.0" -description = "CLI for QuickSilver Pro — one OpenAI-compatible API for Claude, GPT, Gemini, DeepSeek, Qwen, Kimi and Muse chat plus FLUX image generation, on a single balance." +version = "0.4.0" +description = "CLI for QuickSilver Pro — one OpenAI-compatible API for Claude, GPT, Gemini, Grok, GLM, DeepSeek, Qwen, Kimi and Muse chat plus FLUX image generation, on a single balance." readme = "README.md" requires-python = ">=3.9" license = { text = "MIT" } @@ -14,7 +14,7 @@ keywords = [ "openai", "claude", "anthropic", "gpt", "gemini", "deepseek", "qwen", "kimi", "muse", "flux", "llm", "inference", "api", "chatgpt", "ai", "cli", "coding-agent", "image-generation", "text-to-image", - "openrouter-alternative", "quicksilverpro", + "openrouter-alternative", "quicksilverpro", "grok", "glm", "nemotron", ] classifiers = [ "Development Status :: 4 - Beta", diff --git a/src/quicksilverpro/__init__.py b/src/quicksilverpro/__init__.py index af9393b..07733c4 100644 --- a/src/quicksilverpro/__init__.py +++ b/src/quicksilverpro/__init__.py @@ -3,4 +3,4 @@ See https://quicksilverpro.io for docs. `qsp --help` for quick reference. """ -__version__ = "0.3.0" +__version__ = "0.4.0" diff --git a/src/quicksilverpro/cli.py b/src/quicksilverpro/cli.py index 4b9208c..cc384c5 100644 --- a/src/quicksilverpro/cli.py +++ b/src/quicksilverpro/cli.py @@ -280,9 +280,9 @@ def balance(as_json: bool) -> None: # Hardcoded so `qsp models` works before the user has signed in. A curated, # hot-first view of the lineup — once signed in, `qsp models` shows the full -# live catalog (30+ models incl. every Qwen/Kimi/Gemini/Claude variant). Keep +# live catalog (40 models incl. every Qwen/Kimi/Gemini/Claude variant). Keep # prices in sync with the backend; CI smoke-tests this path. Prices verified -# 2026-08-08 against qsp.gateway_model_pricing. +# 2026-08-25 against the live /v1/models endpoint. _MODELS_FALLBACK: list[dict] = [ {"id": "claude-opus-5", "object": "model", "owned_by": "quicksilverpro", "context_length": 1000000, @@ -296,6 +296,14 @@ def balance(as_json: bool) -> None: "context_length": 1048576, "pricing": {"prompt": "0.0000040000", "completion": "0.0000240000"}, "best_for": "OpenAI GPT-5.6 Sol · frontier reasoning + tool use"}, + {"id": "grok-4.6", "object": "model", "owned_by": "quicksilverpro", + "context_length": 500000, + "pricing": {"prompt": "0.0000020000", "completion": "0.0000060000"}, + "best_for": "xAI Grok 4.6 · frontier reasoning + real-time knowledge"}, + {"id": "glm-5.3", "object": "model", "owned_by": "quicksilverpro", + "context_length": 1048576, + "pricing": {"prompt": "0.0000011200", "completion": "0.0000035200"}, + "best_for": "Z.ai GLM 5.3 · reasoning flagship for software engineering"}, {"id": "qwen3.8-max", "object": "model", "owned_by": "quicksilverpro", "context_length": 1048576, "pricing": {"prompt": "0.0000020000", "completion": "0.0000060000"}, @@ -304,21 +312,29 @@ def balance(as_json: bool) -> None: "context_length": 1048576, "pricing": {"prompt": "0.0000024000", "completion": "0.0000120000"}, "best_for": "Moonshot Kimi K3 · agentic coding + tool use · 1M context"}, + {"id": "kimi-k2.7-code", "object": "model", "owned_by": "quicksilverpro", + "context_length": 256000, + "pricing": {"prompt": "0.0000005840", "completion": "0.0000028000"}, + "best_for": "Kimi K2.7 Code · purpose-built coding agent"}, {"id": "muse-spark-1.2", "object": "model", "owned_by": "quicksilverpro", "context_length": 1048576, "pricing": {"prompt": "0.0000010000", "completion": "0.0000034000"}, "best_for": "Meta Muse Spark · long-context coding agent"}, {"id": "deepseek-v4-pro", "object": "model", "owned_by": "quicksilverpro", "context_length": 1048576, - "pricing": {"prompt": "0.0000003480", "completion": "0.0000006960"}, + "pricing": {"prompt": "0.0000004350", "completion": "0.0000008700"}, "best_for": "frontier reasoning + coding · 1M context"}, {"id": "deepseek-v4-flash", "object": "model", "owned_by": "quicksilverpro", "context_length": 1048576, "pricing": {"prompt": "0.0000001120", "completion": "0.0000002240"}, "best_for": "official 0731 agent model · lowest cost · 1M context"}, - {"id": "gemini-3.6-flash", "object": "model", "owned_by": "quicksilverpro", + {"id": "nemotron-3.5-lightning", "object": "model", "owned_by": "quicksilverpro", + "context_length": 262144, + "pricing": {"prompt": "0.0000000800", "completion": "0.0000002000"}, + "best_for": "NVIDIA Nemotron · fastest + cheapest agent loops"}, + {"id": "gemini-3.7-flash", "object": "model", "owned_by": "quicksilverpro", "context_length": 1048576, - "pricing": {"prompt": "0.0000012750", "completion": "0.0000063750"}, + "pricing": {"prompt": "0.0000006375", "completion": "0.0000031875"}, "best_for": "Google Gemini · fast multimodal · 1M context"}, {"id": "flux.2-pro", "object": "model", "owned_by": "quicksilverpro", "price_per_image": 0.027,