For the complete documentation index, see llms.txt. This page is also available as Markdown.

πŸš€Quick Start

Verify a SecretVM end-to-end

The most common entry point. Connects to the VM, fetches CPU and GPU quotes, validates every binding, and returns a structured result.

import { checkSecretVm } from "secretvm-verify";

const result = await checkSecretVm("my-vm.vm.scrtlabs.com");

if (result.valid) {
  console.log("VM is genuine:", result.report.tls_fingerprint);
} else {
  console.error("Failed checks:", result.errors);
}

Verify a workload against a docker-compose

Use when you have an expected compose file and need to confirm a VM is running it.

import { verifyWorkload, formatWorkloadResult } from "secretvm-verify";
import { readFileSync } from "node:fs";

const quote = readFileSync("cpu_quote.txt", "utf8");
const compose = readFileSync("docker-compose.yaml", "utf8");

const result = verifyWorkload(quote, compose);
console.log(formatWorkloadResult(result));

The result is one of:

Status
Meaning

authentic_match

Quote is from a known SecretVM and the compose matches

authentic_mismatch

Quote is from a known SecretVM but the compose does not match

not_authentic

Quote's measurements do not appear in the SecretVM registry

If a VM URL is passed instead of a raw quote, both the quote and the compose are fetched from the VM automatically.

Verify an ERC-8004 agent

Resolve an on-chain agent and run the full TEE verification against the endpoints it advertises.

RPC configuration is required β€” set SECRETVM_RPC_BASE (or SECRETVM_RPC_<CHAIN>) to your preferred provider.

Was this helpful?