Overview
PyrusLLM turns a machine into a node on a peer-to-peer inference marketplace. Each node announces a signed manifest declaring which model it serves, what it charges and how loaded it is. Any node can ask any other for a completion, and the answer arrives with provenance attached: which machine produced it, how fast, and what it cost.
What it does
Weights travel over hypercore, not HTTP, and are cached on disk. Nothing leaves your machine unless you ask it to.
A fixed DHT topic discovers peers. Only nodes whose signed manifest verifies become routing candidates.
The manifest carries a payout address. Paid requests settle over x402 and come back with a receipt and an attestation.
Is PyrusLLM a CLI or an API?
It is both, and the distinction matters because they are used by different people at different moments.
| Surface | What it is | Who uses it |
|---|---|---|
pyrusllm <cmd> |
A CLI you run in a terminal. It is how you start the node, join the network, run a one-off prompt, move files and manage the wallet. | The operator of the machine. |
http://localhost:8787/v1/… |
An HTTP API served by pyrusllm serve. The
/v1/chat/completions and /v1/models routes are
OpenAI-compatible; the rest are PyrusLLM's own. |
Clients and agents — any OpenAI SDK, curl, Open WebUI, a Telegram bot. |
pyrusllm serve is what
starts the API. Everything the browser panels do, they do through that same
public API with a Bearer key — there is no privileged path reserved for the UI.
Architecture, in one pass
Three pieces cooperate on every node:
- The gateway (
pyrusllm serve) — the OpenAI-compatible HTTP surface, the router that picks a peer by load and price, and the four browser panels. - The swarm — a fixed DHT topic where nodes discover each other and exchange signed manifests. A manifest that does not verify is never a routing candidate.
- The wallet — an Ed25519/EVM keypair the node uses to sign attestations and receive x402 settlements.
See Research → What to build first for how a fourth piece — a signed inference receipt — extends this model.