Skip to content
RunTimeAdmin edited this page Nov 15, 2026 · 78 revisions

Sigvara

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.

Start here

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

The score, in one table

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

What is actually proven

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).

What is not

  • 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 agentWallet message; 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.

About this wiki

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.

Overview

Clone this wiki locally