Welcome to the permanent underclass.

Permanent Underclass runs large open-weight language models across computers that belong to many different people. The first and last layers run on your machine. The machines in between each hold a slice of the model and never learn who is asking. No account.

Point anything that speaks the OpenAI API at the client on your machine. The people running the machines in between are paid in Monero for the tokens they serve, the way a mining pool pays miners.

Not open yet. The encrypted chain between machines works and has been tested on a real model. Payments and public nodes are not built.

$ dfin client --model model.gguf --head 0:3 --tail 77:end \
    --hub <hub> --listen 127.0.0.1:8080
# point any OpenAI-compatible tool at http://127.0.0.1:8080/v1

How it works

Your machine holds the ends

The client on your computer runs the first layers, the last layer and the output. Your text becomes model state before it leaves and turns back into text only when it returns.

Other machines hold the middle

Each node holds a range of layers. The route is sealed hop by hop, so a node knows only the two machines next to it, never who you are or the whole route.

Any model llama.cpp runs

Every node opens the same model file with a different layer range, so any architecture llama.cpp supports can be split. Large GLM and Kimi models first.

Paid like mining

Nodes earn Monero for the tokens they serve, in proportion to the work they do. You pay per token, or earn credit by running a node yourself.

No accounts

Clients and nodes are keys. There is no email, username or sign-in anywhere.

Who sees what

Instead of a promise, here is what each part of the network can see:

  • Your machine: your text, start to finish.
  • A node: the model’s internal state for its layers, and the addresses of the two machines beside it. Not your text, not who you are, not the whole route.
  • A relay, if you use one: your IP address and encrypted traffic.
  • This website: nothing. No accounts, no cookies, no analytics.

The internal state a node handles can leak some of what you wrote. Hardware-attested nodes that can’t look inside are planned, and you will be able to choose them. The design document covers the rest.

Run a node

Linux, macOS or Windows. CPU, or a GPU through Vulkan, CUDA or Metal.

How much memory you need depends on the model and how many of its layers you hold. You pick the range; the network routes traffic through it.

A node can stay unlisted: no open port, reachable only through a relay, so the machines beside it never learn its address.

Payouts start when the network opens.

FAQ

Is it live?

No. Splitting a model across machines over the encrypted chain works and has been tested on a real model. Payments, trust checks and public nodes are not built yet. The status page on GitHub is the one place that is kept current.

Can a node read what I send?

A node sees the model’s internal state for the layers it holds, not your text, and it does not know who you are. That state can leak some of what you wrote, which is why hardware-attested nodes are planned and you will be able to choose them.

How do node operators get paid?

In Monero, for every token their machine serves, the way a mining pool pays miners for their share of the work.

Why Monero?

Nobody can refuse to process it, and it needs no account. Its habits, keys instead of accounts and nothing logged, are the model for the rest of the network.

Which models?

Any model llama.cpp can run, split by layer. Large open-weight GLM and Kimi models come first.

Monero donations are open. Donate