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 persisted or exposed.

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 display an existing Anchor, or gate something where a live capture would be more friction than the action is worth. One function call, free reads, no API key. Install: @entros/pulse-sdk. For anything with real stakes, pair it with a Tier 1 trigger at the point of the action.

Where to start

The shape of a Tier 3 read

A read pulls one piece of on-chain state: the 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?.isHuman && attestation.trustScore >= 100 && !attestation.expired) {
  // proceed
}

Two numbers, two questions. The score says how consistently this wallet has verified. Recency says how long ago it last did.

For an airdrop claim, a governance vote or anything else worth the friction, run a verification at the point of the action and read the Anchor after it. The score is a history. The verification is the person. <EntrosVerify /> does it in five lines. See the verification flow.

On this page