A Sigil is a Program Derived Account (PDA) on Solana that represents the authorization a principal has granted to a specific agent keypair.Documentation Index
Fetch the complete documentation index at: https://sigil-10dddbf2.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Account structure
| Field | Type | Description |
|---|---|---|
agentPubkey | PublicKey | The agent’s ed25519 keypair address |
principalPubkey | PublicKey | The account that issued this Sigil |
capabilities | Capability[] | Scoped permissions (category + allowed domains) |
spendLimitPerTx | u64 | Max spend per single transaction (micro-USDC) |
spendLimitPerDay | u64 | Max spend per rolling 24-hour window (micro-USDC) |
spentToday | u64 | Running daily tally, reset by record_spend |
issuedAt | i64 | Unix timestamp of issuance |
expiresAt | i64 | Unix timestamp of expiry |
revoked | bool | Permanent revocation flag |
PDA derivation
Capabilities
A capability scopes what the agent is permitted to do:categoryis what services match against (e.g.requiredCapability: 'image-generation').allowedDomainslists the domains the agent may hit under that category. Services can enforce this or treat it as informational.
Spend limits
All amounts are in micro-USDC (6 decimal places):
This enforcement is on-chain — it cannot be bypassed by the middleware or the agent.
Lifecycle
Verification logic
client.verifySigil(agent, { principal, ...options }) returns true when all of the following hold:
- The Sigil PDA exists on-chain
revoked === falseexpiresAt > now- If
requiredCapabilityset: at least one capability has that category - If
maxSpendAmountset:spendLimitPerTx >= maxSpendAmount
false (never throws) when the account does not exist.