solvers/<network>/<name>.json; the network lives in the path, never
in the card. The trust model behind cards and registries is in
Discovery and Registries.
Generate the Card
solver card prints to stdout and nothing else — no file is written, nothing
is uploaded. --name must match ^[a-z0-9-]+$ and must equal the filename
you save it under; omit it and the daemon invents a solver-<hex> slug for
you to rename.
The card is built from your configured markets, not wallet state.
Generation fails — with every reason reported at once — if there are no
markets, a market has no enabled direction, or a price path is missing and
cannot be derived from the feed URL. The web UI’s card.json panel produces
the same output.
Check the Card Before You Share It
The registry enforces rules the daemon does not, so a card that generated cleanly can still be rejected:- A
minof"0"on an enabled side is rejected.solver market adddefaults mins to0— set--min-baseand--min-quoteexplicitly, then regenerate. - Negative
price_decimalsis rejected. The daemon computes it as base decimals minus quote decimals, so a quote asset with more decimals than the base produces a negative value. It is also only correct for feeds quoted in display units — hand-edit it for atomic-denominated feeds. namemust be unique within its network directory, and at least one side must havemax > 0.
discovery_pubkey + sig) is optional for an Arkade-only card — a
bare card is fully valid, and for registry listing the pull request is the
authentication.
Share It Privately
A card works with no registry at all. Wallets let users pin one directly — by URL or pasted JSON — under Settings → Advanced → Solvers; pinned cards join discovery like any registry entry. This is the right first step: no review latency, and you decide who sees you. Hand the file to your users in whatever channel you already share.Run Your Own Registry
Forkarkade-os/solver-registry,
replace the cards under solvers/, and enable GitHub Pages with the GitHub
Actions source. The index format is identical to the public registry’s, so any
client can follow your Pages URL. Forking is permissionless — clients follow a
set of registries, and yours is just another entry in it. A good fit for a
curated app or an institutional allow-list.
List in the Public Registry
- Generate the card and save it as
solvers/<network>/<name>.json - Open a pull request at
arkade-os/solver-registry - CI validates every card and reports failures in the PR summary — one broken card never blocks other networks
https://arkade-os.github.io/solver-registry/<network>.json, grouped by pair with the best fee_bps first. Review of the pull request is the listing gate, so merge
time is a human process.
Keep the Card in Sync
Nothing updates your listing automatically —solver card only prints, and no
software contacts the registry on your behalf. After changing markets,
regenerate the card and open a new PR, or re-share the file with anyone who
pinned it. A stale card just advertises bounds you no longer honour: offers
outside them fail rather than fill.
Run a Solver
Install, secure, fund, and open a market.
Discovery
Cards, registries, and curation — the trust model.