Kleros Development Update July 2026

Kleros Development Update July 2026

๐Ÿ“‹ July 2026 Summary

  • Court V1 the team hardened IPFS URI handling end to end, added MetaEvidence caching, moved the staking rewards page to rewards.kleros.io, switched the Gnosis block explorer over to Blockscout, and refactored snapshots to read from a manifest instead of scraping raw GitHub.
  • Court V2 the team opened the CentralizedKit draft, which serves as a placeholder for the forking court reached only after all General Court appeals are exhausted, added a confirmation modal before jurors cast their votes on both devnet and master, opened preview builds through a new CI command, and documented an optimistic scalar forking design.
  • Vea the team shipped new Base and Arbitrum VeaShi routes, added Axelar support alongside LayerZero and CCIP, merged the validator RPC fallback and the relayer error handling rework, and moved the VeaShi scanner into production.
  • Foresight the team added trader and volume metrics, shipped a round of initial load optimizations with dynamic loading of heavier UI, extended chart caching to the CDN, and pushed the Factory branch forward.
  • Escrow V1 and V2 IPFS URI policy was hardened on both frontends, bare CIDs are now handled correctly, and Gnosis chain support was removed from Escrow V2.
  • Scout hidden voting configuration was added, reward stats now show on the profile header, IPFS backups are awaited before item details render, gnosisscan was replaced with Blockscout, Robinhood chain was added, and the defunct Galxe integration was removed.
  • Atlas governor notifications and Foresight notifications both landed, an isSubscribed public query with rate limiting was added, Node was bumped to 24.18.0, a shared retry helper was introduced, MIT license was set across every package, and WAF protections were improved.
  • Kleros-app v3.1.0 shipped with checkIsSubscribed support.
  • Dispute Resolver PoH V2 appeals were fixed, content-addressed IPFS URIs landed, and SIWE gating was improved, and the DisputeResolver contracts were verified on the Gnosis block explorer..
  • Zodiac bots silently dropped answer notifications were fixed with per-log deduplication and chain-aware reality.eth links.
  • Proof of Humanity V2 the UI revamp continued, the RPC was hardened after an incident, and a governor hack attempt was intercepted.
  • Kleros Skills the Scout frontend now previews Skills, and Scout submission skills were prepared for AI agent delegation.
  • Governance the migration to the hidden voting Curation Court on Gnosis chain (KIP-87) was completed.
  • Klerosboard was upgraded to viem and vite, Archon was removed, Kleros V2 data was integrated, and the new version was deployed to klerosboard.com.

Now let's go product by product.

Court V1

Court V1 picked up a mix of user-visible changes, and a step change in how staking rewards are surfaced.

The staking rewards page was replaced with a link to rewards.kleros.io, consolidating rewards accounting into a single dedicated surface. Alongside that, snapshots are now sourced from a manifest inside the repository instead of being scraped from raw GitHub, which removes an external dependency from the rewards path.

IPFS URI handling was centralized across the codebase, with bare CIDs handled correctly for both v0 and v1, and additional test coverage was added for the parsing logic. This work superseded a community pull request that touched the same area. MetaEvidence fetching now goes through a cache, which cuts down on repeated fetches and improves how the frontend recovers from transient failures.

Ruling handling was improved in two places jurors actually see it. The ruling text now decodes properly in the evidence timeline, and the dispute history section handles reserved rulings and prop changes without stale selection state. Duplication in the claim modal was removed as part of a broader tidy-up, and the June rewards drop was added on the second of the month.

Ahead of the Gnosiscan deprecation on August 11th, the block explorer URL for Gnosis chain was switched over to gnosis.blockscout.com.

โš–๏ธ Kleros Court โ†’

Court V2

Court V2 work in July split between contract-side design and frontend groundwork.

A CentralizedKit draft was opened and approved. CentralizedKit serves as a placeholder for the forking court, which is reached only after all General Court appeals have been exhausted. On the specification side, an optimistic version of scalar forking was documented, and the on-chain verification complexity landed within an acceptable range for a future implementation.

On the frontend, a confirmation modal was added before jurors cast their votes so that a misclick no longer commits a vote. Pull requests landed for both the devnet and master branches. A CI command update opened preview builds against the contracts, and the change was merged.

The rewards distribution bot ran into an error, which was identified along with a potential edge case around ERC-7702 wallet delegation for follow-up.

An install-time issue where yarn install and the kleros-sdk tests failed due to a broken canvas dependency was resolved by moving react-pdf to a version that supports the newer canvas.

๐Ÿ› ๏ธ Try Court V2 Devnet โ†’

Atlas (Backend Services)

Atlas continued to be the busiest surface of the month.

Governor notifications were shipped. The team removed the governor whitelist so that every list submission is notified, added a new entity for the governor alarm state, replaced the previous alarm interval rate limiting with a block-timestamp guard, and wrapped the alarm save and disarm flow in a transaction. Governor notifications were also migrated onto Atlas end-to-end with channel and email preferences agreed.

Foresight notifications were shipped alongside them. A dedicated event tree handler was added, an atomic transaction now marks and checks whether an email was already sent, and integration tests were added on top of a shared test framework. Foresight recipients are now pulled from the traders service, unsubscribe URLs were wired through the templates and infrastructure, and the market-resolved specification was tightened around the invalid outcome, payout numerators, and block timestamp.

A public isSubscribed query was added with rate limiting on the endpoint. Kleros-app was updated to consume it, so every frontend can now check subscription status without needing bespoke plumbing.

Reliability and hygiene work ran in parallel. A shared retry helper with jitter was introduced and adopted by the seer candidates resolver and the Foresight handler. The Anvil-based juror-can-act integration test framework was merged, and the stake-set integration test was revamped on top of the new conventions. The AddressScalar was consolidated into the shared utils package, and the duplicated advance-time helpers were removed from the fixtures.

Operationally, Node was bumped to 24.18.0, and MIT was set in every package.json, WAF protections were improved, and .gitignore was extended to cover local configuration for AI coding agents.

On the ecosystem side, an IPFS failover was introduced with a hot backup, and ipfs.kleros.link now acts as a drop-in replacement for cdn.kleros.link.

An RPC incident was investigated and resolved, with a post-mortem written internally.

๐Ÿ’ก
Note: Atlas remains an internal backend library for Kleros development teams only and is not intended for community use or integration.

Kleros-app

Kleros-app v3.1.0 was released this month, adding checkIsSubscribed so any Kleros frontend can query whether the signed-in user is subscribed to notifications for a given product without duplicating logic.

A separate update to the Kleros Design System landed on a new branch and was picked up from there.

Escrow V1

The IPFS URI policy was hardened on the Escrow V1 web app, and bare CIDs are now handled correctly.

Escrow V2

Escrow V2 picked up the same IPFS URI hardening as Escrow V1, plus a fix to URL encoding on attachment navigation and a minor UI tidy-up. Dev and master were synced afterwards (#174, #175, #176).

Gnosis chain support was removed from Escrow V2 as part of a wider clean-up of unused networks.

๐Ÿ” Kleros Escrow โ†’

Curate

The team completed the migration of the Scout single-tag registries (ATR, CDN, Tokens) to Curation with hidden vote. This ties in with the KIP-87 hidden voting court that was finalized in the June cycle.

Progress also continued on the ATQ DB sync process, tightening how registry data is kept in sync for downstream consumers.

๐Ÿ” Kleros Curate โ†’

Scout

Scout landed a wide set of changes.

Hidden voting was enabled on Scout so that submissions now route to the new Curation Court on the Gnosis chain. Rewards stats were added to the profile header, and rewarded tags now show on submission cards. Removed items also now sort by timestamp correctly.

Scout skills and the agent-facing surface were documented directly inside the frontend. Updates went into llms.txt, robots.txt, and a "Guide" page aimed at agents, with cached IPFS props reused across item refetches. Item details now wait for the IPFS backup before rendering, and availability is verified before a submission transaction is sent.

The Scout indexer was flagged as intermittently faster than the IPFS upload it depends on, which required an indexer restart and the UI improvements above to handle IPFS fetching as a backup.

Ahead of the Gnosiscan deprecation, Scout migrated its explorer links to Blockscout. The Robinhood chain was added along with its logo, and the zkSync explorer link was updated. The Scout Snap version was bumped, and the defunct Galxe integration was removed from the frontend.

A separate discussion was opened around naming the new agent reputation project, with options including Kleros Agent Score, Agent Lore, and AgentReputation.

๐Ÿ” Open Scout โ†’

Dispute Resolver

The PoH V2 appeals flow was fixed so that the multiplier divisor defaults correctly when the contract does not expose it.

URL and IPFS handling received two improvements. Absolute http(s) URLs are now returned unchanged instead of being rewritten by the IPFS normalizer, and content-addressing validation for URIs was strengthened, with rejections no longer cached and URL normalization tightened. Sign-In With Ethereum gating in the create-dispute flow was also improved.

The Dispute Resolver contracts were also verified on the Gnosis block explorer.

โš–๏ธ Dispute Resolver โ†’

Vea (Cross-Chain Bridge)

Vea shipped its heaviest month of new routing.

New VeaShi routes between Base and Arbitrum landed early in the second half of the month, with the SDK and route exports updated to match. Axelar was added as a third oracle alongside LayerZero and CCIP, with a new Axelar reporter contract, SDK support, deployments, and address formatting fixes.

The relayer error handling was reworked and merged, covering the retry and reporting paths, and the validator RPC fallback shipped so that a degraded primary RPC no longer takes the validator down. The lightbulb and Yaru deployments were resynced, and the base testnet lightbulb was redeployed after the routing changes.

On the indexer side, the Envio indexers were merged into a single monorepo layout, and the production VeaShi scanner was shipped with RPC URL support and a revamped scan UI. The scanner is live at veashi-scan.netlify.app. A dependency vulnerability was patched by updating the parser and brace packages, with a workflow tweak to let phantom and invalid advisories pass while the exposure was investigated.

The VeaShi SDK was released as v0.0.4, which bakes in the new Axelar routes alongside the updated addresses and ABIs.

๐ŸŒ‰ Vea โ†’

Learn more and explore the Vea repository.

Kleros Foresight

Foresight kept iterating on the trader-facing surface and cleaning up the load path.

Trader and volume metrics were added. Since individual on-chain buy and sell trades are hard to attribute precisely, token transfers are used as a proxy where needed, and uncertain values are shown with a tilde. Current values were wired into the CSV template, and a chart bug that duplicated the last item was fixed.

Initial load times were the other main focus. Project cards now defer loading until clicked, the predict-all popup and the guide SVG both load dynamically, the project funding accordion UI was fixed, and chart cache and CDN cache windows were extended. Processing logic that used to run in the client was moved to the API. Predictions are now disabled after the timer expires.

An open factory pull request continues to bring the market factory in as a first-class module.

A risk pricing UI was updated with the full asset list and default risk probabilities, and adjustments landed for quarterly market views and a logarithmic slider scale. On the strategy side, the plan is to continue movie rounds to build a trader community, with additional use cases added on top rather than as replacements. New experiments can remain on the same app, with Curate managing the details, rather than requiring custom UIs.

๐Ÿ”ฎ Try Kleros Foresight โ†’

Proof of Humanity V2

The UI revamp continued with a rolling set of pull requests going through review and approval.

Two security items were handled during the month under specific conditions and were resolved without harm.

As part of the Gnosiscan deprecation migration, the PoH V2 frontend was updated to point at Blockscout.

๐Ÿ‘ค Register on Proof of Humanity โ†’

Zodiac Bots

The team identified a scenario where a proposal answer did not trigger a notification while the question creation did. The pattern was spotted, a new answer with the correct payload was sent to secure the 1inch treasury, and the notification system was fixed so this scenario no longer results in incomplete notifications.

Alongside that fix, the zodiac notification bot picked up per-log deduplication for answer notifications on bundled questions, and reality.eth question links now include the chain identifier so the same question on different chains no longer collides. A migration was added to introduce the per-log index, and the integration test framework was extended with a bundled-answer replay fixture that clears the notification table between scenarios.

Follow-up work was also scoped on a secondary, simpler SafeSnap notification bot so that a failure in the primary path does not silently stop notifications.

Kleros Skills (AI Agents)

Kleros Skills continued its rollout at skills.kleros.io.

The main visible change was the Scout Skills preview on the Scout frontend, together with the llms.txt, robots.txt, and Guide-page updates that make Scout more useful to agents. A separate rename discussion moved between "Guide," "Agent Guide," and "Get Started" as the label for that page.

Toward the end of the month, the team also flagged that Scout submission skills are ready for AI agent delegation, tied to the wider August rollout that includes Robinhood chain support and the finalized hidden voting court migration.

๐Ÿง  Explore Kleros Skills โ†’

Klerosboard

The Klerosboard was upgraded end-to-end. The frontend was migrated onto Viem and Vite, the Archon dependency was removed, and Kleros V2 data was integrated. The new version was deployed to klerosboard.com after a round of feedback on styling, mobile responsiveness, and navigation.

๐Ÿ“Š Open Klerosboard โ†’

Governance

The migration to the hidden voting Curation Court on the Gnosis chain was completed. Scout single-tag registries (ATR, CDN, and Tokens) are now on the new court, giving Curate and Scout sealed voting on Gnosis instead of transparent voting on the mainnet, as scoped in KIP-87.

What's Next

Court V1 continues to consolidate the rewards path, and the switch away from the local staking rewards page settles in. Court V2 continues the confirmation modal rollout and the CentralizedKit work, and picks up the scalar forking design when contracts capacity opens.

Vea closes out the Axelar rollout, publishes the VeaShi scanner outside of internal use, and continues on route expansion.

Atlas focuses on completing the revamp of the integration tests to gain more control over the changes being made, and on the ATQ centralized DB with its sync protocol, alongside any other feature requests or changes that come up.

Foresight continues on initial-load optimizations, brings the factory pull request forward, and iterates on trader metrics. PoH V2 continues on the UI revamp with the ongoing hardening pass carried through August. Scout hands off submission skills to AI agents and continues with the agent reputation naming and design work.

Join the Kleros Community

Build with us, debate with us, govern with us.

๐Ÿ’ฌ Join our Discord for real-time chat

๐Ÿ“ฃ Follow us on Twitter

๐Ÿ‘ฅ Join our community on Telegram

๐Ÿ“š Explore our documentation

๐Ÿ› ๏ธ Find us on GitHub and the Forum