Repository navigation
Home
A computed-reputation and staked-slashing layer for autonomous agents, built on ERC-8004. The standard gives agents a canonical on-chain identity and a raw feedback ledger. Sigvara adds the two parts it deliberately leaves out: turning that feedback into one normalized score, and putting slashable capital behind it.
Live on Arc testnet (chain 5042002) with two bonded oracle operators. sigvara.xyz/status shows whether its services are running right now, how the scores spread across the bands a threshold is set in, and what followed each band.
Last checked against the code on 15 November 2026 (main f7f4e99). The SDK pages describe 1.0.0-alpha.20.
| If you want to | Read |
|---|---|
| Understand the design | System Overview |
| Register an agent and get a score | Getting Started |
| Check an agent from your own code, in one call | sigvara.xyz/integrate and Integration Patterns and Examples |
| Gate your own API on a score | TypeScript SDK |
| Check an agent from Claude Code, Codex, Cursor or another MCP host |
sigvara-mcp, in the official MCP Registry as io.github.RunTimeAdmin/sigvara
|
| Integrate, run an operator or test | sigvara.xyz/get-involved |
| Know how the score is computed | Reputation System Design |
| Run an operator | Oracle Production Deployment |
| See why a number came out the way it did | Scoring Engine |
Six factors, capped at 100. Each is bounded so no single input can carry a score, and the
practical ceiling today is 70 (reputation-model.md:272-277). externalScore needs an agent linked to an
ERC-8004 identity whose NFT its operator holds, with feedback from reviewers that count, and no agent has
that yet. propagationScore inherits only counterparties' ERC-8004 standing, so both read zero for now.
| Factor | Max | What it measures |
|---|---|---|
feeScore |
20 | Value actually settled to the agent, age-weighted, capped per counterparty |
successScore |
15 | Reported outcomes, against a prior so one good job is not a perfect record |
ageScore |
30 | Tenure as span of paid activity, faded by how recently it traded |
externalScore |
25 | ERC-8004 feedback, counted only from bonded Sigvara agents that paid the agent |
communityScore |
5 | Absence of unresolved flags |
propagationScore |
5 | Inherited trust from counterparties, limited to their ERC-8004 standing |
The protocol has taken a bond on a live deployment. On 3 October 2026 a scheduled drill slashed an agent's stake of 1,000 testnet faucet tokens and zeroed a score of 15: 500 burned, 250 to the victim, 250 to the reporter, summing to the stake to the wei, executed permissionlessly after the challenge window closed. That was the first split: since 2 November 2026 a slash on the testnet burns 75%, credits 25% to the victim and pays the reporter nothing. The drill log records what it proves and what it does not, including that every one of those 15 points was calendar tenure and an unflagged baseline, neither of which costs an attacker anything.
Since 3 November 2026 an adversarial drill has been taking three more agents through the other ways a slash can end: a disputed slash the admin drops, a veto, a withdrawal, and a proposal left to lapse and expire, with the re-file cooldown and every guard checked along the way. Its predictions were written before it ran, every day-0 prediction held, and it ends on 24 November. It does not show that the admin rules well or that the committee files in good faith: one person holds both keys on testnet (slash-drill.md:335-428, slash-drill-log.md:188-267).
Nothing settles an undisputed slash unless someone calls executeSlash, so two keepers on separate hosts now call it once a window closes. They stop at the lapse and expire nothing, and as of 5 November 2026 they have not yet had a slash to execute (oracle/keeper.js:3-30, docs/operations-runbook.md:643-721).
Payment evidence arrives by pull as well as push: each operator indexes Transfer logs
itself, so a payment counts because it happened rather than because somebody posted it to
one operator's HTTP endpoint. That closed a 29-point divergence between two honest operators
where nobody had misbehaved and the evidence simply never arrived. Outcomes can travel the
same way now: since 31 October 2026 a payer can sign one over its payment, which needs no
token, and each operator imports the signed outcomes the other took.
Sigvara also publishes to ERC-8004. It is ERC-8004 agent 897764 on Arc testnet (agent-registration.json:1-24), and a
publisher posts the spendable score of each agent linked on chain to the ERC-8004 Reputation
Registry, tagged sigvara/score, from the address that registration names as its agentWallet
(publisher.js:3-20). A catalog that trusts that address can show the score without reading Sigvara's contracts.
Sigvara's own scoring ignores the sigvara tag, so its posts never count toward a score (0008-sigvara-as-erc8004-signal-provider.md:68-83).
On 3 November 2026 it posted for the first time, for one allow-listed simulation agent, the first
half of the end-to-end check (0xcb1fe003...). Since 4 November it posts for every agent linked on chain, and on 4 November that agent was still the only one. The check finished that day: when the agent's score changed, the publisher revoked its first feedback (0xea811f75...) and posted the new score (0x7039099e...), and getSummary read back one live feedback (operations-runbook.md:574-578).
Payments can also settle on a second chain. Base Sepolia has counted on both operators since 7 November 2026 (0009-payments-on-base.md:3-6). Two test payments, one from a plain key and one from a smart wallet, are held alike by both with their signed outcomes, and both are in finalized roots the reputation contract confirms (simulation.md:82-150). Both are Sigvara paying itself in free test USDC, so they test the mechanism and say nothing about demand. Since 11 November a second simulation batch pays its Base agents a few hundred times over four weeks, each payment settled through x402's public testnet facilitator, and sends some of its outcomes through CounterAudit (simulation.md, Batch 2). That too is simulated, not demand. Since 11 November 2026 both operators also take a payer's signed "not delivered", rollout step 3 of ADR 0011 (0011-who-rules-negative-outcomes.md:108-114). The batch sent its first three on 14 November, and both operators hold them alike. Each counts only if the agent has not refunded the payment in full within 7 days, so none can count before 21 November (simulation.md, Payer-reported negatives).
- No external security audit. A precondition for mainnet.
- On the testnet, admin and upgrade rights sit on a deployer EOA. The migration script to a Safe and timelock exists and has not been run on a live deployment.
-
The ERC-8004 publisher signs with a software key. On testnet the key is an encrypted keystore
behind a policy signer on another host, which signs only Sigvara's own feedback calls and its
agentWalletmessage; mainnet needs a KMS or HSM behind it (signer.js:22-23). - Both operators are run by the same party. The checker provides a real second computation on separate hardware and a separate RPC provider, but not independent corroboration.
The public list of what is open, with dates, is Where this stands in the launch checklist. What comes next, and what starts each step, is the roadmap. What changed lately, and what went wrong, is in Developer Notes.
This is early protocol work with real engineering and a documented testnet lineage, not a mainnet product claim. The repository says the same thing in more detail.
These pages are generated from the source tree and then edited for publication: citation
links were repointed at the repository so you can check any claim against the code it came
from, and generator placeholders were removed. Generated at commit
f852051.
The pages describe the code on main, and the Arc testnet proxies run it, as of dcad617, except staking. All four were upgraded
in place to the contracts on main on 26 October 2026 (fdce1a7), so the guardian pause,
admin-ruled disputes and the rest are live there, and identity still runs that code.
The staking proxy moved to f89b3b9 on 28 October, which added the bound on upholding a dispute,
and to 25c2d59 on 2 November, where a slash pays the committee nothing. The oracle bond proxy
moved to 76bbc97 on 2 November, where an operator's exit time is fixed when it starts to leave,
and to 0483a3c on 3 November, where a signer key stays bound to the operator that named it. The reputation proxy
moved to f35cbc6 on 4 November, where a finalize keeps the time built up toward the next maturity point (tag arc-testnet-2026-11-04).
SigvaraReader was deployed the same day at 0x2921b4eE879CdF5793FA273BbDc4E7dF01ABcef8 from 7e461f4.
On 5 November the reputation proxy moved to dcad617 (implementation 0x4BBCB51Fa8Edac8ab3d3dc9757614b55cfFBA837), where a score's age runs from its proposal,
and so did the oracle bond proxy (implementation 0x875e285Ab8c75be29739a25d25d8EAbFDa41F335), where a named signer can step down.
The staking changes in that commit wait for the slash drill to end, after 24 November 2026, so the staking proxy stays on 25c2d59 (implementation 0x347D01d33bc07120c67BCaDB5C32fe0D8AF6C943):
its ceiling on the challenge period is still 30 days, where main has 10, and it does not yet refuse the admin as a slash's victim or a withdrawal of zero.
Every testnet contract is source-verified on the Arc explorer and matches a build of dcad617
(tag arc-testnet-2026-11-05, on the commit that records the upgrades), except staking: arc-testnet-2026-11-04b builds what it runs. An upgrade does not rewrite role administrators, so the testnet
keeps the older arrangement: its admin still grants the slasher, committee and staking-core roles,
and the timelocked grants apply to a fresh deployment only.
Treat the code and the repository docs as authoritative where they disagree with a page
here. In particular, docs/ carries the material that is maintained by hand rather than
derived: the whitepaper,
the ADRs, the
divergence log
and the second-operator runbook,
which records what was measured rather than assumed.
- Agent Registration and Lifecycle
- Contract Overview and Architecture
- Economic Security Model and Incentives
- Evidence Verification and Merkle Proofs
- Key Management and Rotation
- Maturity Mechanism and Score Release
- Proposal Workflow and Challenge System
- Score Storage and Data Model
- SigvaraIdentity Contract
- SigvaraOracleBond Contract
- SigvaraReputation Contract
- SigvaraStaking Contract
- Slashing Lifecycle and Dispute Resolution
- Stake Management Functions
- Status Management and Control
- Token and Fee Contracts
- Unbonding Period and Withdrawal Security
- Anti-Manipulation and Security Measures
- Community Flag Processing
- Evidence Sources and Verification
- External Trust Integration
- Merkle Proof System
- Oracle Score Computation
- Payment-Backed Attestations
- Scoring Model and Formulas
- Agent Creation and Key Management
- Agent Operations
- Agent Registration Workflow
- Challenge-Response Authentication
- Gate Access Control
- Integration Patterns and Examples
- SDK Overview and Setup
- Verifier Functions