Argus
Argus is trust infra for agent-managed capital
Created on 10th May 2026
•
Argus
Argus is trust infra for agent-managed capital
The problem Argus solves
Argus
Trust infrastructure for agent-managed capital.
Two ENS-named agents managing a USDC position on Base. The manager parks funds in Aave v3 and exits on signed alerts. The watcher scrapes social, news, and prediction markets via Apify, scores threats, and signs alerts that the manager verifies via live ENS lookup. Every action is on-chain or signed-and-stored on Swarm.
Live demo
| Asset | Where |
|---|---|
| Vault contract (Base) | 0x4486738ec027F0776B25aC2F5E2744FCe6F96e1e |
| Manager agent | manager.argus.divljo.eth → 0x6da3471242039591A7A1C012caBeDEfaB466bE16 |
| Watcher agent | watcher.argus.divljo.eth → 0x11952796edC9eC91090e459fDE87BdcfC11e13aD |
| Namespace | argus.divljo.eth |
Quick verification anyone can run:
# manager exposes its endpoint via ENSIP-26 text records
cast text manager.argus.divljo.eth "agent-endpoint[a2a]"
cast text manager.argus.divljo.eth "agent-context"
# watcher publishes its bounty terms
cast text watcher.argus.divljo.eth "bounty"
# vault state on-chain
cast call 0x4486738ec027F0776B25aC2F5E2744FCe6F96e1e "totalAssets()(uint256)" --rpc-url https://mainnet.base.org
Bounties targeted
1. ENS — agent identity + agent-to-agent discovery (primary)
What we built:
- Three ENS subnames under user-owned
divljo.eth, issued onchain via NameWrapper:argus.divljo.eth— namespace rootmanager.argus.divljo.eth— manager EOA + ENSIP-26 recordswatcher.argus.divljo.eth— watcher EOA + ENSIP-26 records
- ENSIP-26 text records on each agent:
agent-endpoint[a2a],agent-context,description, plus a custombountyrecord on the watcher publishing its reward terms. - Live A2A discovery — the watcher resolves the manager's HTTP endpoint on every alert via
getEnsAddress+getEnsText("agent-endpoint[a2a]"). No hardcoded URLs anywhere. - Manager verifies watcher signatures by recovering the EIP-712 signer and comparing it to the live ENS-resolved address of
watcher.argus.divljo.eth, refreshed every 60s. Renaming or rotating an agent updates the trust path with zero code changes.
Where in the code:
packages/shared/src/ens.ts— CCIP-Read awareresolveAgent()helper used by all three runtimesagents/watcher/src/index.ts:35-47—resolveManagerEndpoint()runs before every POSTagents/manager/src/index.ts:28-34, 72-76— periodic ENS refresh + signature verification against ENS-resolved addressfrontend/components/AgentCard.tsxand/watcherspage — read text records live via@ensdomains/ensjs
2. Apify × x402 — metered scraping (primary)
What we built:
- Four Apify actors integrated, three signal types in parallel:
fatihtahta/polymarket-scraper-ppe(PPE) — prediction-market implied probabilities, the x402-eligible actorapidojo/tweet-scraper(PPR) — Twitter/Xtrudax/reddit-scraper-lite(PPR) — Reddittri_angle/telegram-scraper(PPR) — channel messages (configured to readwhale_alert_ioby default)
- Polymarket calls flow through
wrapFetchWithPaymentFromConfigfrom@x402/fetchv2.11 +@x402/evmv2.11, signing with the watcher EOA on Base. The Twitter/Reddit/Telegram actors stay on token auth because Apify's x402 path is PPE-only by design. - Polymarket items are special-cased in the classifier — implied probability is the threat probability directly, no LLM in the loop.
Why the split matters: Apify's experimental x402 endpoint only settles against Pay-Per-Event actors. We ship one PPE actor wired through x402 and three PPR actors on token auth — clearly documented in code and in the env (USE_X402 flag), so the bounty path is real, not decorative.
Where in the code:
agents/watcher/src/scrapers.ts— four scrape functions, thex402Fetcherwrapping only the Polymarket callagents/watcher/src/classifier.ts:24-34— Polymarket short-circuit usingimpliedProb
3. Swarm — verifiable evidence trail + a reusable KV library (secondary)
We ship two distinct Swarm contributions:
3a. Live receipt trail (used by the agents)
- All receipts (deposits, withdraws, threat alerts, evidence bundles) are uploaded to Swarm via
@ethersphere/bee-jsv12. - Uses the bzz.limo hosted gateway with
NULL_STAMP— no postage batch setup required, the gateway rewrites it. Verified live: upload returns a 64-char ref, retrieval atbzz.limo/bytes/<ref>returns the exact JSON. - Receipts are linked f
Tracks Applied (6)
Network Economy
Best Agentic Venture
Umia
A Simple Key-Value Store on Swarm
Swarm
Ethereum Chain State on Swarm
Swarm
Best ENS Integration for AI Agents
ENS
Apify Bounty
Apify
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
