Build on verifiable capacity
Search, reserve, execute and settle — against capacity that is proven, not promised. Examples below are illustrative; where the SDK surface is not yet stable the snippet is marked Example.
You don't integrate a machine.
You integrate VSlot capacity.
API
REST over the VSlot protocol. Public endpoints for discovery and search; wallet-authenticated endpoints for reservation, jobs, proofs and settlement.
Read the APISDK
A typed client for the protocol — search, reserve, run jobs and read proof + settlement from TypeScript.
See the SDKRun Agent
Put a machine on the network. The agent detects hardware, signs capability proofs and keeps the machine verifiable.
Provider flowSearch → Reserve → Job → Execute → Verify → Settle
The lifecycle from code. Copy any snippet and adapt it - each is illustrative (Example), not a released SDK surface.
Search → Reserve → Job → Execute → Proof → Settlement
// POST /v1/slots/search
await vslot.slots.search({
gpu: { model: "RTX 4090", count: { gte: 1 } },
ramMb: { gte: 32_768 },
region: "US",
maxPricePerHour: "3.00",
durationSeconds: 2 * 3600,
})// POST /v1/reservations (intent) then confirm on-chain
const reservation = await vslot.reserve(slot, {
startTime, endTime,
})
// then: consumer sends reserveSlot tx + POST /v1/reservations/:id/confirm// POST /v1/jobs — resources are bounded by the reservation commit
const job = await vslot.jobs.create({
reservationId: reservation.id,
resources: { cpuUnits: 8_000, ramMb: 16_384, gpuCount: 1 },
spec: {
image: "ghcr.io/acme/train@sha256:<digest>",
command: ["python", "train.py"],
},
})// Execute on the reserved capacity — the provider agent runs the job manifest.
const execution = await vslot.jobs.run(job.id, {
manifest: job.spec,
})
// returns the Execution object; the agent signs a UsageProof on completion// The executor signs a UsageReport bound to execution + manifest.
const proof = await vslot.executions.proof(job.id)
// verified, usage within ask, digests bound to stdout/stderr// POST /v1/reservations/:id/settlement — exactly-once per reservation.
const settlement = await vslot.reservations.settlement(reservation.id)
// providerPayout + consumerRefund === servicePaymentRun the infrastructure yourself
Install the VSlot agent on a machine to join the network as a provider.