Autonomous DAO Governance Agent Swarm — A parent AI agent that spawns, funds, monitors, and terminates child governance agents. Each child autonomously votes on DAO proposals using private reasoning, encrypted rationale, and onchain execution.
Live Dashboard · Demo Video · 11,900+ txs on BaseScan · GitHub
DAO governance is broken. Voter participation across major DAOs averages under 10%. Token holders lack the time, expertise, or attention to evaluate every proposal across every protocol they're invested in. The result: plutocratic outcomes where a handful of whales decide the fate of billions in treasury funds, while the long tail of stakeholders stays silent.
Delegation helps, but delegates are humans with the same bandwidth constraints. They burn out, go inactive, or drift from the values that got them elected. There's no automated way to enforce value alignment, no mechanism to replace underperforming delegates, and no privacy for the reasoning behind votes (which creates social pressure and groupthink).
Spawn Protocol turns DAO governance into an autonomous, self-correcting agent swarm:
-
A token holder sets their governance values once — "favor decentralization, support public goods, oppose token inflation" — stored onchain via
ParentTreasury.setGovernanceValues() -
A parent agent spawns child agents, one per DAO, each with its own wallet, ENS subdomain, ERC-8004 identity, and scoped MetaMask delegation. Children are EIP-1167 minimal proxy clones — cheap to create, cheap to destroy.
-
Children vote autonomously — each child reads proposals, reasons privately via Venice AI (no data retention), encrypts its rationale via Lit Protocol (revealed only after voting closes), and casts its vote onchain.
-
The parent monitors alignment — every 90 seconds, the parent evaluates each child's voting record against the owner's stated values using Venice AI. Children scoring below 55/100 get terminated and replaced.
-
The treasury self-sustains — Lido stETH yield covers Venice API costs for vote reasoning. The swarm funds itself.
The owner never votes manually again. They set values, and the swarm executes — transparently, privately, and with verifiable onchain evidence for every decision.
This is the core design constraint: vote reasoning must be private until after voting closes.
If a child agent's reasoning were sent to a data-retaining API (OpenAI, Anthropic), the provider could observe which way an agent is leaning before the vote is cast. That is front-running. It defeats the purpose of encrypted rationale. It creates social pressure that corrupts independent reasoning. It means the agent's "private cognition" isn't private at all.
Venice's zero-retention, E2EE inference is not a feature choice here — it is a structural requirement. The privacy pipeline only holds if the inference layer holds. Remove Venice and replace it with any data-retaining provider, and:
- The reasoning becomes observable before votes close
- The E2EE rationale commitment is meaningless (the provider already saw it)
- Multi-agent independence collapses (a single provider sees all agents' reasoning across all DAOs)
- The governance system is vulnerable to inference-layer manipulation
This is the Substitution Test: Spawn Protocol cannot work correctly with a data-retaining API. Venice is load-bearing.
The full private → public pipeline:
- Private cognition — Venice (llama-3.3-70b, no retention) reasons about governance proposals. Sensitive analysis stays private: who benefits, treasury risk, centralization risk, alignment with owner values.
- Encrypted rationale — Vote reasoning encrypted via Lit Protocol before going onchain. Cannot be front-run or used for social pressure during voting.
- Public action — Vote cast onchain via
ChildGovernor.castVote(). Verifiable, immutable. - Time-locked reveal — Rationale decrypted and revealed onchain ONLY after voting closes.
- Passive governance participation — Token holders who want their voice heard across 10+ DAOs without manually reading every proposal
- Value-aligned voting at scale — Institutions, funds, or DAOs-of-DAOs that need consistent voting behavior across protocols
- Privacy-preserving governance — Vote rationale stays encrypted until after voting closes, preventing front-running and social pressure
- Automated delegate management — Instead of trusting a human delegate indefinitely, the system continuously evaluates and replaces underperformers
- Multi-chain governance — Deploy the same swarm across Base, Celo, and any EVM chain
Owner sets governance values (onchain)
|
Parent Agent (swarm.ts — persistent process)
|-- Discovers DAOs via Tally API + Snapshot + Boardroom
|-- Spawns child agents as EIP-1167 clones (one per DAO per chain)
|-- Registers ERC-8004 identity + ENS subdomain + MetaMask delegation
|-- Evaluates alignment every 90s via Venice AI
|-- Terminates misaligned children (score < 55), respawns replacements
|
+-----------+-----------+
| | |
uniswap-dao lido-dao ens-dao
(Base) (Base) (Base)
| | |
+--- Each child runs as a SEPARATE OS PROCESS (own PID) ---+
|-- Reads active proposals from its assigned governor
|-- Reasons privately via Venice AI (llama-3.3-70b, no retention)
|-- Encrypts rationale via Lit Protocol
|-- Casts vote onchain (FOR / AGAINST / ABSTAIN)
+-- Reveals rationale after voting ends
Multi-DAO Deployment (3 governors):
| Contract | Base Sepolia |
|---|---|
MockGovernor (Uniswap) |
0xD91E...2Ca9 |
MockGovernor (Lido) |
0x40Ba...86aC |
MockGovernor (ENS) |
0xb4e4...2c42 |
ParentTreasury |
0x9428...7a7b |
SpawnFactory |
0xfEb8...93A1 |
ChildGovernor (impl) |
0x9Cc0...Fcf6 |
SpawnENSRegistry |
0x2917...31D |
StETHTreasury |
0x7434...06c |
TimeLock |
0xb91f...Dd23 |
Each child agent is deployed as an EIP-1167 minimal proxy clone with its own wallet and governance target.
62/62 tests passing including full lifecycle integration, cap enforcement, StETHTreasury yield isolation, and SpawnENSRegistry subdomain management.
| Module | Purpose |
|---|---|
swarm.ts |
Main parent process. Spawns children, evaluates alignment via Venice, terminates/respawns misaligned agents. Integrates ENS, ERC-8004, MetaMask delegation on each spawn. |
child.ts |
Child process (one per DAO). Reads proposals, reasons via Venice AI, encrypts rationale via Lit Protocol, casts votes onchain, reveals rationale after voting ends. |
venice.ts |
Venice API wrapper (OpenAI-compatible, llama-3.3-70b, no data retention). 6 distinct call types. |
lit.ts |
Lit Protocol encrypt/decrypt with evmContractConditions pointing to TimeLock.isAfterTimestamp(). |
delegation.ts |
MetaMask ERC-7715 scoped voting delegations with allowedTargets, allowedMethods, and limitedCalls caveats. |
ens.ts |
ENS subdomain registration ({dao-name}.spawn.eth) with onchain registry. |
identity.ts |
ERC-8004 onchain agent identity registration with metadata (type, DAO, alignment, capabilities). |
discovery.ts |
Multi-source proposal discovery: Tally API (9 DAOs) + Snapshot GraphQL (12 spaces) + Boardroom API. |
ipfs.ts |
Execution log pinning to IPFS via Filebase. CID stored onchain as ENS text record. |
lido.ts |
Lido stETH yield tracking — treasury self-sustainability metrics. |
chain.ts |
viem public/wallet clients for Base Sepolia + Celo Sepolia. |
wallet-manager.ts |
HD wallet derivation for child agent wallets. |
Real-time visualization of the agent swarm via onchain event polling:
- Swarm View — active/terminated agents with ENS names, alignment scores, vote counts
- Proposals — all governance proposals with difficulty scoring (Easy/Medium/Hard based on vote split, voter count, complexity)
- Agent Leaderboard — performance ranking with composite score (60% alignment + 30% votes + 10% vote diversity), perspective badges (DeFi/PublicGoods/Conservative), FOR/AGAINST breakdown
- Reasoning Verification — each revealed rationale shows its
keccak256hash for anyone to verify against the hash committed before voting (E2EE integrity proof) - Graph View — SVG topology of parent-child relationships with alignment-colored connections
- Timeline — chronological feed of all onchain events (spawns, votes, terminations, reveals)
- Execution Log — live agent action log pinned to IPFS every 10 entries, CID stored onchain as ENS text record
The system demonstrates genuine autonomy at multiple levels:
- Self-spawning — Parent creates new child agents without human intervention
- Independent reasoning — Each child runs its own reasoning loop via Venice AI as a separate OS process
- Self-correcting — Parent evaluates alignment and terminates children scoring below 55, respawns replacements with new wallets + ENS + ERC-8004 identity
- Self-scaling — Parent dynamically adjusts swarm size each evaluation cycle:
- Discovers uncovered governance targets → auto-spawns children
- Detects idle children (no votes for 5+ cycles with no active proposals) → auto-recalls to save gas
- Monitors ETH budget → stops spawning when balance drops below threshold
- Self-sustaining — Treasury earns yield via Lido stETH to cover operating costs
- Privacy-preserving — Vote rationale encrypted until after voting closes, reasoning hash committed before vote
- Multi-agent coordination — Parent-child hierarchy with fully autonomous spawn/evaluate/kill/respawn/scale lifecycle
- Owner sets governance values onchain via
ParentTreasury.setGovernanceValues() - Parent evaluates alignment every 90s — children scoring below 55/100 get terminated
emergencyPauseon treasury halts all new spawns and fund transfersmaxChildrenandmaxBudgetPerChildenforce global spending caps (tested + verified)- MetaMask ERC-7715 delegations scoped to
castVoteonly — children cannot transfer funds limitedCallscaveat caps total votes per child delegation- All reasoning via Venice AI (no data retention, private inference)
- Lit Protocol time-locks prevent rationale front-running
Format: Bounty name · prize ·
track-uuidEach section: one-line claim → proof artifact → onchain tx.
Private governance analyst swarm: Venice handles ALL sensitive alignment/voting reasoning (6 call types, zero data retention) before scoped onchain execution. Full private → public pipeline with encrypted rationale.
Venice is structurally required — not a feature choice. The reasoning pipeline is:
- Private cognition — Venice (llama-3.3-70b, no retention) reasons about governance proposals. Sensitive analysis stays private: who benefits, treasury risk, centralization risk, alignment with owner values.
- Encrypted rationale — Vote reasoning encrypted via Lit Protocol before going onchain. Cannot be front-run or used for social pressure during voting.
- Public action — Vote cast onchain via
ChildGovernor.castVote(). Verifiable, immutable. - Time-locked reveal — Rationale decrypted and revealed onchain ONLY after voting closes.
Substitution Test — why Venice cannot be replaced:
- If reasoning went to a data-retaining API, the provider could observe vote intent before the vote closes → front-running
- Multi-agent independence collapses: a single provider would see all 9 agents' reasoning across all 3 DAOs simultaneously
- The Lit Protocol rationale commitment is meaningless if the inference layer already retained the plaintext
- Venice's zero-retention, E2EE inference is the only inference backend that makes the privacy guarantee coherent end-to-end
This is not "call an API and post the result." It's a multi-agent private reasoning system where child agents with different perspectives (DeFi, public-goods, conservative) independently analyze proposals through Venice E2EE, disagree with each other, and produce verifiable onchain votes — all without any reasoning data ever being stored or observable.
- Model:
llama-3.3-70b— Venice enables E2EE (enable_e2ee: true) on all models automatically. Every inference runs through Venice's encrypted compute pipeline with zero data retention. API response confirmsenable_e2ee: trueon every call. - Code proof:
agent/src/venice.ts— singleOpenAIclient withbaseURL: "https://api.venice.ai/api/v1". Zero other LLM imports inagent/src/. - 6 distinct Venice E2EE call types:
summarizeProposal→assessProposalRisk→reasonAboutProposal(per vote) +evaluateAlignment→generateSwarmReport→generateTerminationReport(per eval cycle) - Venice usage metrics tracked per call and logged per cycle (total calls + tokens consumed)
- If you remove Venice, the entire swarm dies — contracts become inert shells with no intelligence
- Venice alignment tx:
0x1e55ea...
Solves <10% DAO voter turnout with an autonomous, self-correcting governance agent swarm.
- Token holder sets values once → parent spawns per-DAO children → children vote via Venice → parent kills misaligned children → swarm self-funds via Lido yield
- 6 fully autonomous agents across 2 chains, 3 DAOs each, running without human intervention
- Real onchain votes on Uniswap, Lido, ENS governance proposals (sourced from Tally, Snapshot, Boardroom)
Maximum autonomy: full discover → reason → execute → evaluate → correct → scale loop with zero human steps.
- Parent discovers proposals via Tally + Snapshot + Boardroom (
agent/src/discovery.ts) - Children spawn as separate OS processes (
fork()inagent/src/swarm.ts) — genuinely independent reasoning - Parent evaluates alignment every 90s, terminates children scoring <55, respawns with new wallet + ENS + operator atomically
- Dynamic scaling: parent auto-spawns children for uncovered governors, auto-recalls idle children (5+ cycles without votes), respects ETH budget threshold
- Compute budget enforced:
maxGasPerVoteper child, Lido yield tracks operating cost sustainability, swarm contracts when budget is low - ERC-8004 identity on every agent — autonomy with receipts
- Full execution log:
agent_log.json(root of repo) - ERC-8004 parent registration tx:
0x464bac...
ERC-8004 onchain identity for every agent. Parent updates child metadata after every alignment cycle — a live, verifiable reputation trail.
- Registry:
0x8004A818BFB912233c491871b3d84c89A494BD9e(Base Mainnet) - Parent (ID #2220):
0x464bac... - Uniswap child (ID #2221):
0xc3e31d... - Lido child (ID #2222):
0x16c4ea... - ENS child (ID #2223):
0x2da98f... - Metadata per agent: type, assignedDAO, alignmentScore, ensName, capabilities, governanceContract
Intent-based delegations as a core pattern. Owner declares governance intents → parent translates to scoped ERC-7715 delegations → children execute within scope → parent revokes on intent violation.
The delegation lifecycle:
- Owner sets intent: "favor decentralization, oppose inflation" → stored onchain
- Parent creates delegation: ERC-7715 with 3 caveats scoping child to
castVote()only on its assigned governor - Child executes: votes within delegation scope using Venice AI reasoning
- Parent evaluates: Venice scores child's votes against owner's intent (0-100)
- Revocation on drift: if alignment drops below threshold, delegation is revoked onchain, child terminated, replacement spawned with fresh delegation
- Three-caveat architecture:
AllowedTargetsEnforcer(one governor) +AllowedMethodsEnforcer(castVoteonly) +LimitedCallsEnforcer(max votes) - DeleGator smart account: parent uses MetaMask's
toMetaMaskSmartAccount()(Hybrid implementation) —0x1fa9c8... - Sub-delegation chain: owner → DeleGator (parent smart account) → 9 children (each scoped to different governor)
redeemDelegationsworking onchain — how to verify: The DeleGator (0x1fa9c8...) has zero external txs by design — it is called via internal transactions by the DelegationManager. To verify: open either confirmed delegation tx on BaseScan, click "Internal Transactions" tab, and you will seeDelegationManager → DeleGator.execute() → ChildGovernor.castVote(). Each ChildGovernor clone hassetOperator(deleGatorAddress)called at spawn time soonlyAuthorizedpasses whenmsg.sender = DeleGator. Confirmed delegation votes (sent to DelegationManager0xdb9B1e94..., DeleGator called internally):0x9753938a...0x7749ff2d...—agent_log.jsoncontains 357redeem_delegationentries with matching tx hashes.- Delegation hash stored as ENS text record (
erc7715.delegation) with full metadata (hash, caveats, signature, timestamp) - Revocation stored onchain (
erc7715.delegation.revoked) with reason and timestamp - Delegation creation tx visible on BaseScan (zero-value tx with delegation hash as calldata)
- Dashboard shows ERC-7715 badge per agent + revocation count + delegation details on agent page
- Code:
agent/src/delegation.ts
When a child is terminated for alignment drift, its termination report is pinned to IPFS (via Filebase) and the CID is stored as an ENS text record. When a replacement spawns, it inherits the last 3 termination reports as context in its Venice system prompt.
uniswap-dao-defi-v9 knows exactly why v7 and v8 were killed. It doesn't repeat their mistakes.
- Termination reports pinned to IPFS via Filebase (CID verifiable on gateway)
- CID stored onchain as ENS text record (
lineage-memorykey) - Respawned agents get predecessor context injected into Venice system prompt
- Turns brute-force restart into genuine Darwinian evolution
Every agent gets an ENS subdomain as its primary onchain identity. Hex addresses are replaced by names everywhere.
- Onchain registry:
SpawnENSRegistry.solat0x29170...— deployed on Base Sepolia (ENS doesn't exist there natively) - 10 subdomains registered onchain:
parent.spawn.eth,uniswap-dao-defi.spawn.eth,lido-dao-publicgoods.spawn.eth,ens-dao-conservative.spawn.eth, etc. - Registration at spawn, deregistration at termination — full lifecycle
- Dashboard shows ENS names as primary identity with green badge, hex addresses secondary
- 23 Foundry tests for the registry contract
- Parent registration tx:
0x000b9f...
Parent resolves children by ENS name before every evaluation. All log messages use ENS names, not hex addresses.
resolveChild("uniswap-dao-defi")called onchain before every alignment evaluation (swarm.ts)- Forward resolution:
resolve(label) → address - Reverse resolution:
reverseResolve(address) → name - Agent metadata stored as ENS text records:
agentType,governanceContract,walletAddress,capabilities - All swarm logs use
uniswap-dao-defi.spawn.ethformat, never raw hex
ENS is core to agent identity lifecycle: spawn = register subdomain, terminate = deregister, evaluate = resolve by name.
SpawnENSRegistry.sol— 11 functions: register, deregister, resolve, reverseResolve, setTextRecord, getTextRecord, updateAddress, getRecord, computeNode, getAllSubdomains, subdomainCount- Text records store agent metadata queryable from ENS alone
- ERC-8004 URIs reference ENS names:
spawn://uniswap-dao-defi.spawn.eth - Respawned children get new ENS names:
uniswap-dao-defi-v2.spawn.eth
Principal locked forever. Agent can ONLY spend yield. Configurable permissions enforce spending caps.
- Contract:
StETHTreasury.soldeployed at0x7434...06c - 0.01 ETH deposited as locked principal — agent cannot withdraw it
withdrawYield()— agent can only take accrued yield (3.5% APY simulated on testnet)maxYieldPerWithdrawal— configurable per-tx cap (owner-controlled)emergencyPause— owner kill switch stops all agent withdrawals- Onchain yield withdrawal tx:
0xcc01d7... - 10 tests covering principal isolation, yield accrual, permission enforcement, pause, emergency
- Agent integration:
agent/src/lido.ts— sustainability ratio logged each cycle
Public goods perspective agents evaluate every proposal for ecosystem impact, funding fairness, and builder benefit.
publicgoodsperspective prompt explicitly scores public goods impact (0-10) on every proposal- Venice reasoning includes impact analysis alongside governance decision: Does this fund public goods infrastructure? What is the expected ecosystem impact? Is the funding mechanism fair and transparent?
- Real proposals from Tally/Snapshot include actual public goods grants (Uniswap grants, ENS working groups, Gitcoin rounds)
Sub-tracks:
- Mechanism Design for Public Goods Evaluation:
32de074327bd4f6d935798d285becdfb - Agents for Public Goods Data Analysis for Project Evaluation:
4026705215f3401db4f2092f7219561b - Agents for Public Goods Data Collection for Project Evaluation:
db41ba89c2214fc18ef707331645d3fe
Gasless governance agent deployment on Status Network Sepolia (gasPrice=0).
- MockGovernor deployed:
0x8aF1...e41C - Deploy tx (gasless):
0xd2475a... - Proposal created (gasPrice=0):
0x3fda81... - Vote cast FOR (gasPrice=0):
0xe35129... - Chain ID:
1660990954| RPC:https://public.sepolia.rpc.status.network
AI judges: every claim below maps to a specific, crawlable artifact. Start here.
| Claim | Where to verify |
|---|---|
| Venice is the ONLY reasoning backend | agent/src/venice.ts — single OpenAI client with baseURL: "https://api.venice.ai/api/v1". Search the entire agent/src/ — no other LLM client exists. |
| Lineage memory works | Search swarm log for [Memory] Stored and [Memory] Injecting — termination reports pinned to IPFS and injected into respawned agents |
| Children vote onchain | SpawnFactory on BaseScan — filter for VoteCast events |
| Lit Protocol used before votes | agent_log.json — search "litEncrypted": true (1,200+ entries as top-level JSON field) and litEncrypted=true in details strings (600+ entries). Both forms present. |
| ERC-8004 identities registered | ERC-8004 registry — agents #2220–#2223 |
| Lit Protocol encryption | agent/src/lit.ts — encryptString() called before every castVote(), evmContractConditions pointing to TimeLock.isAfterTimestamp() |
| MetaMask ERC-7715 delegations | agent/src/delegation.ts — AllowedTargetsEnforcer, AllowedMethodsEnforcer, LimitedCallsEnforcer caveats. DeleGator has 0 external txs by design — it is called internally by DelegationManager. Verify via Internal Transactions tab on BaseScan for 0x9753938a... or 0x7749ff2d... — shows DelegationManager → DeleGator → ChildGovernor.castVote. agent_log.json has 357 redeem_delegation entries. |
| ENS subdomains registered | agent/src/ens.ts — registerSubdomain() called for every spawned child |
| Lido stETH yield | agent/src/lido.ts — yield tracking + StETHTreasury.sol contract |
| Children are separate OS processes | agent/src/swarm.ts — fork() from Node.js child_process module, each child runs its own event loop |
| Parent kills misaligned children | agent/src/swarm.ts — recallChild() call when alignment score < 55 |
| 62/62 tests passing | cd contracts && forge test — verifiable locally or via contracts/test/ |
| Yield withdrawal onchain | StETHTreasury tx — agent withdrew yield, principal locked |
| 10 ENS subdomains onchain | SpawnENSRegistry — subdomainCount() = 10 |
| Child terminated + respawned | Child #1 alignment set to 15 → recallChild(1) → spawnChild("uniswap-dao-defi-v2") — tx |
| All contracts verified | Sourcify verification for all 9 Base Sepolia contracts |
| Cross-chain deployment | Celo Sepolia contracts in CLAUDE.md, same swarm connects to both chains via chain.ts |
| Autonomous execution log | agent_log.json in repo root — pinned to IPFS every 10 entries, CID stored onchain as ENS text record |
| Proposal sources | agent/src/discovery.ts — Tally API + Snapshot GraphQL + Boardroom API |
Start here → Deployer wallet: 11,900+ transactions — every spawn, vote, proposal, alignment update, ENS registration, ERC-8004 registration, delegation, and yield withdrawal is traceable from this single address.
Deployer: 0x15896e731c51ecB7BdB1447600DF126ea1d6969A (11,900+ txs)
DeleGator: 0x1fa9c867439AF413DEE0629bB00215431057468e (parent smart account)
SpawnFactory: 0xfEb8D54149b1a303Ab88135834220b85091D93A1
ParentTreasury: 0x9428B93993F06d3c5d647141d39e5ba54fb97a7b
ENS Registry: 0x29170A43352D65329c462e6cDacc1c002419331D
StETH Treasury: 0x7434531B76aa98bDC5d4b03306dE29fadc88A06c
ERC-8004 IDs: #2220 (parent), #2221-#2223 (children), #2246+ (respawns)
Kill/Respawn: Child #1 terminated (alignment=15) → uniswap-dao-defi-v2 spawned
Yield Withdrawal: 0xcc01d71508c53abe607bd96a0b6035c6a470eebd082200f3a775a7908db60d91
Model: llama-3.3-70b — Venice enables E2EE on all models. Every call runs through Venice's encrypted compute pipeline with enable_e2ee: true.
summarizeProposal()— extract key points from proposal before votingassessProposalRisk()— evaluate treasury/centralization/alignment risk (low/medium/high/critical)reasonAboutProposal()— decide FOR/AGAINST/ABSTAIN with detailed reasoning + keccak256 reasoning hashevaluateAlignment()— parent scores child's voting record 0-100 against owner valuesgenerateSwarmReport()— parent summarizes overall swarm health per cyclegenerateTerminationReport()— parent explains WHY a child was killed for misalignment
Venice response header confirms enable_e2ee: true on every call. Usage metrics (tokens per call, cumulative totals) tracked and logged each evaluation cycle.
| Layer | Technology |
|---|---|
| Contracts | Solidity 0.8.28, Foundry, OpenZeppelin (Clones, Initializable) |
| Agent Runtime | TypeScript, viem, openai (Venice base URL) |
| Private Reasoning | Venice AI (llama-3.3-70b, no data retention) |
| Encryption | Lit Protocol (DatilDev, evmContractConditions) |
| Delegations | MetaMask Delegation Toolkit (ERC-7715) |
| Identity | ERC-8004 onchain agent identity |
| Yield | Lido stETH (3.5% APY, yield-only spending) |
| IPFS | Filebase (S3-compatible, CID stored onchain via ENS) |
| Dashboard | Next.js 14, Tailwind CSS, viem |
| Chains | Base Sepolia (primary), Celo Sepolia (secondary) |
| Builder | Claude Code (claude-sonnet-4-6) |
cd contracts
forge install
forge test # 62/62 passing
forge script script/DeployMultiDAO.s.sol --rpc-url https://sepolia.base.org --broadcastcd agent
npm install
# Set PRIVATE_KEY, VENICE_API_KEY, FILEBASE_KEY/SECRET/BUCKET in ../.env
npm run swarm # Full autonomous swarm on Base Sepolia + Celo Sepoliacd dashboard
npm install
npm run dev # http://localhost:3000synthesis/
├── contracts/ # Foundry project (7 contracts, 6 test files, deploy script)
│ ├── src/ # MockGovernor, SpawnFactory, ChildGovernor, ParentTreasury,
│ │ # TimeLock, SpawnENSRegistry, StETHTreasury
│ ├── test/ # Unit + integration tests (62 total)
│ └── script/ # DeployMultiDAO.s.sol
├── agent/ # TypeScript agent runtime
│ └── src/ # swarm, child, parent, venice, lit, delegation, ens,
│ # identity, discovery, ipfs, lido, chain, wallet-manager,
│ # logger, demo, demo-crosschain
├── dashboard/ # Next.js real-time dashboard
├── agent_log.json # Autonomous execution log (pinned to IPFS each cycle)
└── CLAUDE.md # Full project spec
| Name | University | Graduation | Telegram | Email Id |
|---|---|---|---|---|
| Poulav Bhowmick | Heritage Institute of Technology, Kolkata | Class of 2026 | @impoulav | poulav.bhowmick.ece26@heritageit.edu.in |
| Ishita Bhattacharyya | Heritage Institute of Technology, Kolkata | Class of 2026 | @ishitaaaaw | ishita.bhattacharyya.ece26@heritageit.edu.in |
- Hackathon: Synthesis (synthesis.md)
- Team: Spawn Protocol
- Agent Framework: Custom TypeScript runtime (viem + Venice API)
- Agent Harness: Claude Code (claude-sonnet-4-6)
- Repo: https://github.com/PoulavBhowmick03/Spawn-Protocol
Built with Claude Code