Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuickSilver Pro — compute-pool node

Contribute a machine to the QuickSilver Pro compute pool and earn API credit. This is a small, single-file reference client: it does not run a model — it connects your machine to the pool and forwards each request to a local OpenAI-compatible server you already run.

No Mac required. The pool protocol makes no assumption about your hardware or inference engine. A Linux box with an NVIDIA GPU serving a model through vLLM contributes exactly the same way a Mac does — anything that speaks /v1/chat/completions works: vLLM, llama.cpp's server, Ollama, LM Studio, MLX, TGI.

How it works

  customer ──▶ QuickSilver API ──▶ relay ──▶ (WebSocket you dialed out) ──▶ your machine
                                                                              │
                                                            your local OpenAI-compatible server
  1. You register once with your account's provider key and get back a short-lived share key plus the relay's address.
  2. You open one outbound WebSocket to the relay. No inbound ports, no port forwarding, no public IP.
  3. The relay pushes each customer request down that socket; you replay it against your local server and stream the answer back up the same socket.
  4. A heartbeat every few seconds reports your spare capacity.

There is no polling, no job queue, and no result upload.

Quick start

1. Get a provider key. In the QuickSilver dashboard, create a compute provider key (starts with qsppk-). It is shown once — save it. It authorizes registering a node for your account; it cannot spend money.

2. Run a local model server that exposes an OpenAI-compatible API. For example, with vLLM:

vllm serve <your-model-weights> --served-model-name glm-5.3-flash --port 8000

The pool identifies models by a catalog id (e.g. glm-5.3-flash). Your server's readiness is checked by whether its response echoes that id exactly, so either serve under the catalog id (as above with --served-model-name) or use --local-model below to bridge the names.

3. Install this client and run it:

pip install websockets httpx
export QSP_PROVIDER_KEY=qsppk-...
python pool_node.py --model glm-5.3-flash --upstream http://localhost:8000

If your server serves the model under a different name than the catalog id:

python pool_node.py --model glm-5.3-flash \
    --upstream http://localhost:8000 \
    --local-model GLM-5.3-Flash-EXL3

The client rewrites the model name outbound to your server and back to the catalog id in the response, so the pool's readiness probe passes.

Options

flag default meaning
--model required Pool catalog id to serve, e.g. glm-5.3-flash.
--upstream http://localhost:8000 Base URL of your local OpenAI-compatible server. The relay's request path (e.g. /v1/chat/completions) is appended verbatim, so give the host without /v1.
--local-model (none) If your server serves the model under a name other than --model, its local name.
--provider-key $QSP_PROVIDER_KEY Your qsppk- provider key. Prefer the env var.
--worker machine hostname Per-machine label. Two machines on one account must use distinct values.
--max-concurrency 2 Concurrent request slots to advertise (clamped 1–64).

What you earn

Payout is a share of the catalog list price for the model you serve, credited to your QuickSilver account balance (API usage credit, not cash). Your own account's traffic does not earn. There are monthly caps per node and per pool. See the dashboard for current rates and your node's earnings.

Reading your earnings programmatically. The dashboard shows your ledger, and you can also pull it from the API: GET /v1/pool/ledger returns period-aggregated credit per node (request counts, tokens, accrued vs. final credit, status, the caps). Authenticate with a read-only key (qsprk-), a credential that only reads your ledger — it cannot spend or register nodes, so it is safe to store in a tool long-term. Generate one in the dashboard under Share Compute → Read-only earnings keys. (The qsppk- provider key also works, but prefer the read key so a tool never has to keep a credential that can register nodes.)

Notes

  • Keep both keys. Recovery after a dropped connection means re-registering, which only the qsppk- provider key can do. Store it alongside the share key.
  • Leaving the pool is an operator action — contact support. Revoking your provider key stops new registrations but does not stop an already-registered node from serving.
  • This is a reference implementation. It aims to be short and readable so you can audit exactly what it does and adapt it; it is not a supported product.

Requirements

Python 3.9+ and pip install websockets httpx (or pip install -r requirements.txt).

License

MIT — see LICENSE. This is a reference implementation; fork it and adapt it freely.

About

Reference client for contributing a machine to the QuickSilver Pro compute pool. No Mac required — any OpenAI-compatible server works.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages