Docs ← Back to sailprotocol.com
SAIL Documentation Beta

How SAIL works

Run open AI models on independent GPUs, paid by the token over Lightning — from your own wallet.

SAIL is a decentralized marketplace for AI inference. Hosts run open models on their own GPUs and publish listings to the network. Users connect a Lightning wallet, pick a host, and pay per token as the answer streams back. There is no central server holding your money or your account — the sats go wallet-to-host, and the network never takes custody.

  • Discovery happens over Nostr — hosts publish signed listings; there's no directory server to seize.
  • Reachability happens over Tor — hosts answer on onion services.
  • Payment happens over Lightning — paid directly from your wallet, with any Lightning wallet.

This is an early beta

Expect rough edges. Keep amounts small while you're testing, and treat anything here as subject to change.


Install the app

The SAIL desktop app bundles everything it needs — including Tor — so you don't install anything else.

  1. Download the build for your OS from the latest release. Linux is available now (.deb and AppImage); macOS and Windows are in progress.
  2. Install and launch it. On Debian/Ubuntu: sudo dpkg -i sail_*.deb, then open it from your apps. Or make the AppImage executable (chmod +x SAIL-*.AppImage) and run it directly.
  3. Wait for Tor to bootstrap. The first launch starts a bundled Tor proxy so .onion hosts work out of the box. Clearnet hosts work immediately.

No Python or Tor required

The app is self-contained. You don't need to install Python, run a node, or configure Tor separately.

Connect a wallet

SAIL pays hosts directly from your wallet over Lightning — the app never holds your funds. There are two ways to pay, and you use whichever your wallet supports.

Option A — Nostr Wallet Connect (automatic, per token)

Wallets that speak NWC pay automatically as tokens stream, metered per token — the smoothest experience.

  1. Get an NWC connection string from a wallet that supports it — Alby, Coinos, Zeus, Primal, and others. It looks like nostr+walletconnect://…
  2. Paste it into the Wallet field in the app and click Connect.
  3. Prompt away. The app requests payment per chunk; your wallet approves each one. You can disconnect at any time.

Option B — any Lightning wallet (manual BOLT11 invoice)

No NWC? Switch on BOLT11 mode and pay an ordinary Lightning invoice from any wallet — Phoenix, BlueWallet, Strike, your own node, anything.

  1. Toggle "BOLT11 (any wallet)" and set max tokens — that ceiling is the invoice amount (price per token × max tokens).
  2. Pay the invoice, shown as a QR code plus a copyable string, from any Lightning wallet.
  3. The answer streams as soon as the host sees your payment settle.

BOLT11 trade-off

Manual mode charges a single upfront invoice for the ceiling you set, and unused tokens aren't refunded in this beta — so set max tokens close to what you actually expect to use. NWC mode meters finely and only charges for what you consume.

Match the network

Your wallet must be on the same network as the host's invoices. A mainnet wallet pays mainnet hosts. It cannot pay a host running on regtest/testnet, and vice-versa.

Using SAIL

  1. Refresh hosts. The app discovers available hosts over Nostr. Each card shows the model, the price per token, and the host's reliability.
  2. Pick a host and set max tokens (a ceiling on what a single answer can cost).
  3. Send a prompt. In NWC mode, tokens stream back and sats meter out in small chunks as they arrive — you pay only for what you use. In BOLT11 mode, you pay one invoice for the ceiling upfront, then the answer streams.
  4. Review history. Past sessions are saved locally on your machine (never uploaded) and can be reopened from the sidebar.

If a host stops responding mid-session, the app marks it down in your local reputation ranking and, where possible, fails over to the next-best host automatically.

Assume the host can read your prompt

The host runs the model on its own hardware, so your prompt and the response pass through that machine in the clear. Don't send anything you wouldn't want the host operator to see. Confidential inference is a future goal, not a guarantee today.


Run a host

A host serves an open model and earns sats per token — discovered over Nostr, reached over Tor, with no central gateway. Setup is now one script and a browser wizard; you don't bake macaroons or hand-edit configs unless you want to.

You'll need a Linux x86_64 machine with an NVIDIA GPU, and comfort running a command in a terminal. If you already run a node (MyNode / Umbrel / Start9 / RaspiBlitz) you're exactly who this is for.

Fastest path — the install script

Download it, read it, run it. It sets up the GPU check, Ollama, Tor, the SAIL daemon, and a model that fits your VRAM, then opens the setup wizard in your browser.

curl -fsSL https://raw.githubusercontent.com/sailprotocol/sail/master/scripts/install-host.sh -o install-host.sh
less install-host.sh      # read it first
chmod +x install-host.sh && ./install-host.sh

Then finish in the wizard: detect → model → pricing → payout → go live. Afterward you manage everything — balance, receive, withdraw, close, seed backup — from the local host dashboard. No Lightning commands required.

Payout options

At the wizard's payout step you choose how you get paid:

  • phoenixd (default, self-custodial) — the host runs a Lightning node for you and you hold the keys; channels open automatically on your first payment. Easiest, and the recommended starting point.
  • Your own LND node — point the host at an LND you already run (most sovereign; most setup).
  • A wallet over NWC — connect an external wallet via Nostr Wallet Connect.

The full, maintained guide lives in the repo

Rather than duplicate setup steps here (where they drift out of date), the complete, tested walkthrough — both the script path and every manual step, plus all three payout options — is kept in the repository as the single source of truth:

· Run-a-host guide
· How payments & your wallet work

Stuck? Open a GitHub Issue or Discussion.


Troubleshooting

"No hosts found"

Either no host is currently running, your POW_MIN_DIFFICULTY is set higher than the listing's proof-of-work, or the relay isn't carrying the listing. Try lowering the difficulty, switch to a more permissive relay, or run your own nostr-rs-relay.

"Connection refused" / host unreachable

The host you selected isn't reachable at its advertised endpoint — usually it's offline or the listing is stale. The app deprioritizes failing hosts automatically; click Refresh to re-rank and pick another.

Client: "bolt11 create failed: 404"

The host you reached is running an older build without the BOLT11 endpoints. Pick another host, or — if it's your own host — restart its daemon so it loads the current code (the running process must be restarted to pick up updates).

Host: invoice creation returns 403

Your macaroon doesn't have invoices:write. Re-bake it with info:read invoices:read invoices:write.

Host: TLS / certificate error

The node's cert doesn't list the address you're connecting to. This only applies if you chose the your own LND payout option; see the run-a-host guide. (The default phoenixd payout has no cert to manage.)

Payments don't settle

Almost always inbound liquidity. On the default phoenixd payout your channel opens automatically on your first received payment — generate a fund invoice from the host dashboard and pay it (~25–35k+ sat). See how payments work.

Wallet won't pay

Check the network matches (mainnet wallet ↔ mainnet host) and that your NWC connection string is current and authorized. In BOLT11 mode, make sure you pay before the invoice expires.

FAQ

Is my money held anywhere?

No. Clients pay each host directly, wallet to wallet — SAIL and the network hold no balance and are never in the payment path. Hosts are self-custodial too: by default a host runs its own phoenixd node and holds its own keys, managing its sats from a local dashboard. Nobody in the middle can freeze or seize funds.

Can the host see my prompt?

Today, assume yes — the host runs the model on its own hardware, so your prompt and the response are visible to it. Tor hides who you are (no IP, no account, no KYC), but not what you ask from the host serving you. Don't send secrets to a host you don't trust. End-to-end confidential inference — where the host can't read the prompt — is on the roadmap, not a promise today.

What wallets work?

Any Lightning wallet. NWC wallets (Alby, Coinos, Zeus, Primal) pay automatically per token; with any other wallet (Phoenix, BlueWallet, Strike, your own node) you pay a single Lightning invoice per request via QR or copy-paste.

What models are available?

Open-weight models that hosts choose to serve, from a curated set. The curation keeps purpose-built-for-harm models off the verified network — it is not a filter on your prompts.

Who keeps hosts honest?

Your client tracks each host's reliability and ranks accordingly, dropping ones that fail you. A signed verified-host list is planned, to let you optionally restrict yourself to vetted operators. Either way the network stays permissionless — anyone can run a host, and you decide whose compute you trust.