Quickstart
A node, a funded wallet, and a settled compute job. Three commands, about a minute.
Before you start
You need the two binaries, matrixd (the node) and matrix (the CLI). Get them from a release or build from source with the installation guide. Nothing else: no GPU, no model server, no account with us.
1. Start a node
matrixd -init # writes config.yaml (0600) with a generated admin key
matrixd # starts the node-init writes a config with access control on and one generated admin key inside it, which is why the file is mode 0600. It also seeds a genesis reward pool, so there is native MATRIX to fund an account with - the coins are moved out of that pool, never minted.
2. Zero to a settled job
In another shell:
# the key is under security.api_keys in the config matrixd -init wrote
matrix --api-key <key> quickstartWhat it prints:
1. wallet created at ~/.matrix/wallet.json
buyer account: c5b097824f2e2222a278af3dbe4b519fa653a96e44ff08891668b3a2a708d5d9
2. funded buyer with 1000000 from the reward pool
buyer balance: 1000000
3. registered provider "quickstart-provider" (capacity 100, price 5/unit)
4. submitted job 807b0adf...: 10 units @ 5 = 50 (status pending)
5. completed job 807b0adf... (status completed)
done. native MATRIX moved buyer -> provider:
buyer c5b09782... 999950
provider quickstart-provider 50
job 807b0adf... settled for 50Five steps: a wallet, funding from the reward pool, a provider advertising capacity at a price, a job that reserves that capacity, and a completion that moves 50 native MATRIX from buyer to provider. Re-running is safe - the wallet is reused.
3. The same thing, one step at a time
Every step of the demo is a command you can run yourself:
matrix wallet create # an ed25519 keypair at ~/.matrix/wallet.json
matrix wallet show # your account id
matrix --api-key <key> fund --account <your-account> --amount 1000000
matrix provider register --id gpu-1 --capacity 100 --price 5
matrix provider list
matrix job submit --buyer <your-account> --provider gpu-1 --units 10
matrix job complete --id <job-id>
matrix balance --account <your-account>
matrix tx list --limit 5matrix --help lists the rest: job cancel, tx get, status, health, and the wallet commands that sign a transfer locally so the node never sees a private key.
4. Ask for an inference
A freshly initialized node registers a GPU-free echo backend as demo-inference-provider, so the inference path works before you have any models:
matrix inference submit \
--buyer <your-account> \
--provider demo-inference-provider \
--model demo \
--prompt "one sentence about peer-to-peer compute"From code
The node serves the same marketplace and inference APIs over HTTP on port 9093, so a script, a web app or a dApp front end can drive it directly:
import { MatrixClient } from 'matrix-os-sdk';
const matrix = new MatrixClient({
endpoint: 'http://127.0.0.1:9093',
apiKey: process.env.MATRIX_API_KEY,
});
const provider = await matrix.registerProvider({ id: 'gpu-1', capacity: 100n, pricePerUnit: 5n });
const job = await matrix.submitJob({ buyer: myAccount, provider: provider.id, units: 10n });
const settled = await matrix.completeJob(job.id);
console.log(settled.status, settled.price); // JOB_STATUS_COMPLETED 50nThe SDK is packages/sdk in the savagemanage/matrix-os repository. It is not published to npm yet, so add it from a checkout with yarn add file:/path/to/matrix-os/packages/sdk.
Next
- Architecture - what is inside the node you just started
- Compute marketplace - how a job is priced, reserved and settled
- Configuration - every field in the file
-initwrote - matrix CLI - the full command surface