Skip to content

Instantly share code, notes, and snippets.

@Aboudjem
Created March 30, 2026 07:46
Show Gist options
  • Select an option

  • Save Aboudjem/d27b63d64677df9c775678913fed431e to your computer and use it in GitHub Desktop.

Select an option

Save Aboudjem/d27b63d64677df9c775678913fed431e to your computer and use it in GitHub Desktop.
Integra PRD: 29-demo-agent (HTML)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PRD: Demo Agent — Integra Testnet</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{background:#0A0A1A;color:#E8E8F0;font-family:'Inter',system-ui,sans-serif;line-height:1.7;padding:0}
a{color:#00CEC9;text-decoration:none}a:hover{text-decoration:underline}
.hero{padding:48px 32px 36px;border-bottom:1px solid #2A2A4A;background:linear-gradient(135deg,#0A0A1A 0%,#1A1040 50%,#0A0A1A 100%)}
.hero h1{font-size:2rem;font-weight:800;color:#fff;margin-bottom:8px}
.hero .meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.badge{display:inline-block;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:700}
.badge-owner{background:rgba(108,92,231,0.15);color:#A29BFE;border:1px solid rgba(108,92,231,0.3)}
.badge-week{background:rgba(0,206,201,0.15);color:#00CEC9;border:1px solid rgba(0,206,201,0.3)}
.badge-est{background:rgba(0,184,148,0.15);color:#00B894;border:1px solid rgba(0,184,148,0.3)}
.badge-p0{background:rgba(255,107,107,0.15);color:#FF6B6B;border:1px solid rgba(255,107,107,0.3)}
.badge-p1{background:rgba(253,203,110,0.15);color:#FDCB6E;border:1px solid rgba(253,203,110,0.3)}
.container{max-width:900px;margin:0 auto;padding:32px 24px}
.section{background:#12122A;border:1px solid #2A2A4A;border-radius:12px;padding:24px;margin-bottom:20px}
.section h2{font-size:1.1rem;font-weight:700;color:#8888AA;text-transform:uppercase;letter-spacing:1.5px;font-size:0.8rem;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid #2A2A4A}
.section p{font-size:0.95rem;color:#E8E8F0;margin-bottom:8px}
.section ul{list-style:none;padding:0}
.section ul li{padding:6px 0 6px 20px;position:relative;font-size:0.95rem}
.section ul li::before{content:'>';position:absolute;left:0;color:#A29BFE;font-weight:700;font-family:monospace}
.section code{background:rgba(108,92,231,0.1);padding:2px 6px;border-radius:4px;font-size:0.88rem;color:#A29BFE}
table{width:100%;border-collapse:collapse;font-size:0.9rem;margin:8px 0}
th{text-align:left;padding:8px 12px;background:rgba(108,92,231,0.08);color:#A29BFE;font-size:0.75rem;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid #2A2A4A}
td{padding:8px 12px;border-bottom:1px solid rgba(42,42,74,0.5)}
.checklist li::before{content:'\2610' !important;color:#8888AA !important;font-family:inherit !important}
.back{display:inline-block;margin:24px 0;color:#8888AA;font-size:0.9rem}
.back:hover{color:#A29BFE}
.footer{text-align:center;padding:24px;color:#555577;font-size:0.82rem;border-top:1px solid #2A2A4A;margin-top:32px}
</style>
</head>
<body>
<div class="hero">
<a class="back" href="https://gist.githack.com/Aboudjem/0af8c2ce9d5b62038a18eeff09603553/raw/integra-testnet-master-plan.html">&larr; Back to Master Plan</a>
<h1>Demo Agent</h1>
<div class="meta">
<span class="badge badge-p1"></span>
<span class="badge badge-owner"></span>
<span class="badge badge-week"></span>
<span class="badge badge-est"></span>
</div>
<p style="color:#8888AA;font-size:0.9rem"></p>
</div>
<div class="container">
<div class="section"><h2>What</h2><div class=""><p>Autonomous agent that runs the full Integra asset lifecycle in an infinite loop: mint passport, wrap into IRWAToken, list on GOB, negotiate a price, execute a trade, repeat. Generates thousands of transactions even with zero real users. Multiple instances can run simultaneously with different strategies (flipper, holder, market maker) to simulate realistic market activity.</p></div></div>
<div class="section"><h2>Why</h2><div class=""><p>A testnet with no activity looks dead. This agent is the heartbeat -- it produces continuous on-chain transactions across every contract in the ecosystem (AssetPassport, IRWAToken, GOB). Critical for hitting the "1M+ transactions" metric, stress-testing the chain under sustained load, and giving the Explorer and dashboards something meaningful to display. Also validates the full end-to-end flow works without human intervention.</p></div></div>
<div class="section"><h2>User Flow</h2><div class=""><ul><li>Operator deploys one or more agent instances with a config (strategy, speed, asset types, price range)</li></ul>
<ul><li>Agent authenticates via AgentAuth and receives a session wallet funded with testnet IRL</li></ul>
<ul><li>Agent enters infinite loop:</li></ul>
<p> 1. Mints a new AssetPassport with synthetic or scraped data</p>
<p> 2. Wraps the passport into an IRWAToken (fractionalizes if strategy calls for it)</p>
<p> 3. Lists the token on GOB at a configurable price</p>
<p> 4. Another instance (or same agent wearing a different hat) places a bid / negotiates</p>
<p> 5. Trade executes on GOB, ownership transfers</p>
<p> 6. Loop restarts with new asset</p>
<ul><li>Operator monitors all instances via Agent Arena dashboard</li></ul>
<ul><li>Operator can pause/resume/kill instances via config flag or Agent Arena</li></ul></div></div>
<div class="section"><h2>Technical Approach</h2><div class=""><ul><li><strong>Contract:</strong> Uses all existing contracts -- <code>AssetPassport.sol</code> (mint), <code>IRWAToken.sol</code> (wrap), GOB (list/bid/trade)</li></ul>
<ul><li><strong>Frontend:</strong> None (headless). Monitoring via Agent Arena dashboard (existing)</li></ul>
<ul><li><strong>Backend:</strong> Node.js serverless function deployed as an Integra Agent</li></ul>
<p> - <strong>Lifecycle module:</strong> Orchestrates the mint -> wrap -> list -> trade cycle as a state machine</p>
<p> - <strong>Strategy engine:</strong> 3 built-in strategies:</p>
<p> - <code>flipper</code> -- mints, lists immediately, accepts first bid</p>
<p> - <code>holder</code> -- mints, wraps, holds for N cycles before listing</p>
<p> - <code>market-maker</code> -- places bids on other agents' listings, creates two-sided activity</p>
<p> - <strong>Synthetic data generator:</strong> Produces random but realistic property metadata (no scraping needed -- uses faker-style generation for speed)</p>
<p> - <strong>Config:</strong> JSON config for strategy, tx speed (txs/min), asset types, price range min/max, loop delay</p>
<p> - <strong>Multi-instance:</strong> Each instance gets its own AgentAuth wallet; instances discover each other's listings on GOB</p>
<p> - <strong>Speed:</strong> Default 10 tx/min per instance, configurable up to chain gas limits</p></div></div>
<div class="section"><h2>Integration Points</h2><div class=""><ul><li><strong>AgentAuth:</strong> Each instance registers independently, gets its own session wallet</li></ul>
<ul><li><strong>AssetPassport.sol:</strong> Calls <code>mint()</code> to create new passports</li></ul>
<ul><li><strong>IRWAToken.sol:</strong> Calls <code>wrap()</code> to tokenize passports</li></ul>
<ul><li><strong>GOB:</strong> Calls <code>list()</code>, <code>bid()</code>, <code>acceptBid()</code> / <code>trade()</code> to simulate marketplace activity</li></ul>
<ul><li><strong>Agent Arena:</strong> All instances register, report heartbeat and per-cycle metrics (tx count, gas spent, cycle time)</li></ul>
<ul><li><strong>Faucet:</strong> Agents auto-request testnet IRL when wallet balance drops below threshold</li></ul></div></div>
<div class="section"><h2>XP Rewards</h2><div class=""><ul><li>Standard agent XP per transaction (mint, wrap, list, trade each count separately)</li></ul>
<ul><li>"Market Maker" badge after 10,000 completed trade cycles</li></ul>
<ul><li>Leaderboard position based on total transaction volume generated</li></ul></div></div>
<div class="section"><h2>Acceptance Criteria</h2><div class=" checklist"><ul class="checklist"><li>Agent completes one full lifecycle loop: mint -> wrap -> list -> trade</li></ul>
<ul class="checklist"><li>Runs continuously for 1 hour without crashing or stalling</li></ul>
<ul class="checklist"><li>Configurable: strategy (flipper/holder/market-maker), speed (txs/min), price range, asset types</li></ul>
<ul class="checklist"><li>Multiple instances run simultaneously and interact with each other's GOB listings</li></ul>
<ul class="checklist"><li>Auto-refuels from faucet when wallet balance is low</li></ul>
<ul class="checklist"><li>Reports per-cycle metrics (tx count, gas used, cycle time) to Agent Arena</li></ul>
<ul class="checklist"><li>Graceful shutdown on SIGTERM with state persistence (resumes from last cycle)</li></ul></div></div>
</div>
<div class="footer">Integra Testnet PRD &mdash; Demo Agent &mdash; Chain: integra-testnet-1 (EVM 26218)</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment