Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concord (formerly Leo) — Autonomous USDC Payroll Agent

An autonomous on-chain agent that runs USDC payroll on Arc testnet — executed and monitored entirely through Circle infrastructure, operating on a schedule with no per-payment human approval. A manual "send" override exists in the dashboard for ad-hoc transfers only.

Built for the Encode Club × Arc Hackathon (Agentic Economy track).

Brand note: the project launched as "Leo / AutoSub" (subscriptions + payroll). It has pivoted to payroll only. The contract is still named SubscriptionVault and the repo is still leo-arc-agent — only the product focus changed.


What it does

Concord is an autonomous agent that makes recurring USDC payments on-chain — its headline job is payroll (paying workers on schedule, like a boss who never forgets payday):

  1. Detects when a subscription is due (reads the SubscriptionVault contract).
  2. Executes the payment via Circle Smart Contract Platform — Circle submits the transaction from its own infrastructure, bypassing Arc's public-RPC rate limits.
  3. Monitors the on-chain Paid event via a Circle Event Monitor, which pushes a webhook to a live endpoint.
  4. Runs autonomously on a 20-minute heartbeat — no human in the loop.

Architecture

[ every 20 min ]  cron heartbeat
        │
        ▼
  circle-tick.mjs  ──reads due subs──►  Circle Smart Contract Platform
        │                                 executes vault.pay(id)
        │                                        │
        │                                        ▼
        │                                on-chain Paid event (Arc testnet)
        │                                        │
        ▼                                        ▼
  (next cycle) ◄── Circle Event Monitor ── fires webhook ──► receiver logs it
Layer Technology Role
Identity ERC-8004 on-chain agent identity Verifiable agent registration
Contract SubscriptionVault.sol (Arc testnet) Holds subs, enforces agent/owner auth
Execution Circle Smart Contract Platform (SCP) Submits pay() — bypasses Arc RPC throttle
Detection Circle Event Monitor Watches Paid, delivers webhook
Autonomy Scheduled tick (circle-tick.mjs) Decides + acts every 20 min

Why Circle?

Arc's public RPC rate-limits direct transaction submission (-32011). Routing execution through Circle's Smart Contract Platform solves this: Circle submits from its own infrastructure, so the agent never touches the throttled endpoint. Payment detection is likewise offloaded to Circle's Event Monitor rather than polling the chain.

This makes Concord a clean example of an agent built on Circle rails: Circle is both the hands (execution) and the eyes (event detection).


Key contracts & addresses (Arc testnet)

Item Address
SubscriptionVault 0xd25A1979a5bDa25c3ABd8b661957C2AaC9515a0F
Circle agent wallet 0x76bc3241c19e277b16e3159513cf4f27c9c2577a
USDC (Arc testnet) 0x3600000000000000000000000000000000000000
Paid event topic 0x59e5c638e8e7ab669e805847b18203cf00e4ab4d0688c3da8e486aba4cc4fed2

Chain ID: 5042002 · RPC: https://rpc.testnet.arc.network


Repository layout

File Purpose
src/SubscriptionVault.sol The subscription vault contract
circle-client.mjs Shared Circle SDK client (SCP + wallets)
circle-tick.mjs Main autonomous tick — fund/pay logic
circle-import-and-monitor.mjs Imports vault to SCP + creates Event Monitor
create-circle-wallet.mjs Creates the Circle-managed agent wallet
register-entity-secret.mjs Generates + registers Circle entity secret
setup-circle-agent.mjs Sets Circle wallet as vault agent + funds gas
webhook_receiver.mjs Local endpoint that logs Circle Paid webhooks
fix-intervals.mjs Registers realistic subscriptions (1d / 3d / 7d)
.env.example Environment template (no secrets)

Running it

# 1. install deps
npm install

# 2. configure credentials
cp .env.example .env      # then fill in your Circle API key + entity secret

# 3. one-time setup
node register-entity-secret.mjs      # generate + register entity secret
node create-circle-wallet.mjs        # create Circle agent wallet
node setup-circle-agent.mjs          # set as vault agent
node circle-import-and-monitor.mjs   # import vault + create Event Monitor

# 4. run the autonomous tick (or schedule it every 20 min)
node --env-file=.env circle-tick.mjs

Security

  • No private keys or secrets are committed. .env, wallet files, and Circle recovery files are .gitignored.
  • All credentials load from environment variables at runtime.
  • Testnet only.

Proof of real activity

Concord is not a mock — it performs real, on-chain transactions on Arc testnet, executed and detected entirely through Circle.

Verified live payment (2026-07-16):

Evidence Value
On-chain tx hash 0x7e6c8584ef789eb582691bd09d3fa94f8b35ce0cf2d8d53562391ab3143ea93a
Block 52109832
Vault balance before → after 5 USDC → 4 USDC (1 USDC sub paid)
Circle execution tx 008932c2-cdcb-5a11-939a-446fa495bd6a
Paid webhook delivered ✅ 13:33:43 UTC to live endpoint
ERC-8004 agent identity #851166

Live dashboard (no web3 knowledge required): open https://adebisi1111.github.io/leo-arc-agent/?v=3 to see Concord's payroll as plain bills — what's paid, what's due, and when.

Activity metrics (Circle Console): 54 API calls, 96.3% success, 0 server-side errors — sustained real usage across the session.


Status

✅ Circle-native execution proven on-chain (real pay() tx 0x7e6c85…) ✅ Circle Event Monitor + webhook delivery confirmed ✅ Autonomous 20-minute tick running ✅ Realistic subscriptions (1d / 3d / 7d) registered ✅ Live bills dashboard (plain-language, no wallet/gas jargon)


Built on Arc testnet with Circle Developer-Controlled Wallets + Smart Contract Platform.

About

Autonomous USDC subscription agent on Arc testnet, built on Circle rails

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages