Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ jobs:
matrix:
python: ["3.9", "3.11", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
- name: Install
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.13"

Expand All @@ -25,7 +25,7 @@ jobs:
run: python -m build

- name: Upload build artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: dist
path: dist/
Expand All @@ -36,7 +36,7 @@ jobs:
environment: pypi
steps:
- name: Download build artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: dist
path: dist/
Expand Down Expand Up @@ -79,7 +79,7 @@ jobs:
echo "Resolved: $URL (sha256: $SHA256)"

- name: Dispatch formula update to homebrew tap
uses: peter-evans/repository-dispatch@v3
uses: peter-evans/repository-dispatch@v4
with:
token: ${{ secrets.HOMEBREW_TAP_TOKEN }}
repository: machinefi/homebrew-qspro
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

`qsp` — a command-line client for [QuickSilver Pro](https://quicksilverpro.io), 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**: every command accepts `--json` for structured output, exit codes are reliable, and the API surface is intentionally small.
Designed to be **AI-agent friendly**: data commands accept `--json` for structured output, exit codes are reliable, and the API surface is intentionally small.

---

Expand Down Expand Up @@ -65,7 +65,7 @@ qsp status # live per-model latency

## AI-agent usage

Every command supports `--json` and prints OpenAI-shaped JSON to stdout with errors on stderr.
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.

```bash
qsp models --json | jq '.[].id'
Expand Down
2 changes: 1 addition & 1 deletion src/quicksilverpro/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Design goals:
1. Drop-in OpenAI-compatible thin wrapper: `qsp chat "..."` works immediately.
2. AI-agent friendly: every command accepts `--json` and emits structured
2. AI-agent friendly: data commands accept `--json` and emit structured
output on stdout with errors on stderr and non-zero exit codes on failure.
3. No config surprises: API key lives in `~/.config/quicksilverpro/config.json`
(or `$QSP_CONFIG_DIR`); the `QSP_API_KEY` env var overrides.
Expand Down