Entros_docs

Entros Developer Docs

Build with proof of personhood on Solana.

Entros is a Solana protocol that proves a wallet is operated by a returning human, with the raw biometric signal never leaving the device.

These docs cover the integration paths: drop-in React components, on-chain reads, SAS attestations, Realms voter-weight, and Agent Anchor. They also publish the technical reference for the SDK and on-chain programs, and the public roadmap for what comes next.

Three integration paths

Pick the path that matches your use case. Each integrator only needs one.

Tier 1 — Drop-in trigger. You want a button that takes a user from "unverified wallet" to "verified human" with a single click. The popup hosts the wallet connect, the 12-second behavioral capture, the proof, and the on-chain mint. Your app stays wallet-adapter-free until a verified payload arrives on the callback. Install: @entros/verify. Five lines of JSX.

Tier 2 — Programmatic SDK. You want to own the verification UX — custom capture canvas, branded loading states, inline rather than popup, mobile-native. The Pulse SDK exposes the lower-level primitives the popup is built on. Install: @entros/pulse-sdk. Same package powers Tier 1 internally.

Tier 3 — Read-only. You don't run verification yourself. You just need to gate access or display a Trust Score based on existing on-chain Anchors. One function call, free reads, no API key. Install: @entros/pulse-sdk.

Where to start

The shape of a Tier 3 read

Most integrations read one piece of on-chain state: a Trust Score on the user's Anchor PDA, or an attestation issued through SAS. There is no API key, no billing relationship, no off-chain dependency. The user pays a small protocol fee at verification time. Integrators read for free.

import { verifyEntrosAttestation } from "@entros/pulse-sdk";

const attestation = await verifyEntrosAttestation(walletAddress, connection);
if (attestation && attestation.isHuman && attestation.trustScore >= 100) {
  // proceed
}

That's the entire shape. The rest of the docs is what's in the box, what each number means, and how to set thresholds that fit your use case.

On this page