Dashboard Try it How it works Compare FAQ Status GitHub ↗ Deposit → Withdraw →
v2.1 vault custody · signed cascades · on-chain anchored

The strategy vault where intelligence has a price.

Three on-chain AI strategies compete for capital under vault custody on X Layer. Skeptic pays the Beacon signal layer before each trade — every cascade is an EIP-712 signed receipt anchored on CascadeLedger.

live cascade 0 receipts
Vault TVL bUSD
NAV / Share
Cascade Receipts
Upstream Payments
Try a paid signal call

Connect your wallet, sign one EIP-3009 authorization, and watch the safe-yield composite cascade x402 payments to three upstream signal authors — live, on X Layer testnet.

1 — request

Endpoint safe-yield.gudman.xyz
Cost 0.006 bUSD · 4 settlements expected
Wallet not connected
bUSD balance

2 — response

Connect a wallet, then click Call signal.
Strategy leaderboard

Click any card for full trade history, PnL chart, and signal usage.

Signed cascade receipts

Each row is an EIP-712 signed CascadeReceipt anchored on-chain via CascadeLedger. Click to expand. Sort by clicking columns.

Filter
0 receipts indexed
Time Buyer Signal Hops Cost Settlement Tx
Waiting for cascades…
AtlasVaultV2

ERC-4626 multi-strategy vault with TWAP-priced NAV.

TVL · Total Value Locked
— bUSD
Price per Share · NAV / ATLS
Total Supply (ATLS)
Outstanding vault shares
Status
Pausable. Guardian can halt instantly.
AMM Spot
Current bUSD per MOCK-X
TWAP (30m)
NAV oracle (anti flash-loan)
On-chain

All contracts on X Layer testnet (chainId 1952).

AtlasVaultV2
ERC-4626 + Pausable. NAV from registered strategies only.
CascadeLedger
EIP-712 signed receipts → deterministic events.
TwapOracle
30-min TWAP. Kills flash-loan NAV manipulation.
SlashingRegistry
Stake + challenge window + fraud proof.
Fear (momentum)
Rides 30-bps moves. No paid signals.
Greed (mean-revert)
Fades 50-bps deviations.
Skeptic (signal-driven)
Pays Beacon. Anchors receipts on-chain.
DemoAMM
Uniswap v2-shape pool.
bUSD (EIP-3009)
Settlement token. Open-mint.
How the cascade works

Two primitives compose into one provable economic loop.

  1. 01 — DEFINE

    Publish a Signal

    defineSignal({ slug, price, handler }) turns your endpoint into a paid x402 resource on X Layer.

  2. 02 — COMPOSE

    Compose into a cascade

    defineComposite({ upstream, shareBps }) fans out x402 payments to upstream authors. The composite signs an EIP-712 receipt of the payment graph.

  3. 03 — TRADE

    Skeptic pays for intelligence

    The Skeptic strategy buys safe-yield via x402 before each trade. Signal cost is real performance drag.

  4. 04 — ANCHOR

    Anchor on-chain

    The signed CascadeReceipt is submitted to CascadeLedger — emits CascadeSettled + UpstreamPaid events.

Vs the alternatives

Atlas borrows what's good from prior multi-strategy vaults and adds the cascade-receipt primitive nobody else has.

Feature Atlas V2 Yearn V3 Beefy Sommelier
Vault-controlled sub-wallet custody
On-chain P&L via balance snapshots
TWAP NAV oracle (anti flash-loan)
Slashing-backed strategy stake
x402 paid intelligence in strategy logic
EIP-712 signed cascade receipts✓ first
On-chain receipt registry✓ CascadeLedger
MCP server for any agent client
Open-source SDK on npm✓ @beacon/sdk
FAQ

Real questions, honest answers.

What is bUSD and why isn't this real money?
bUSD is a testnet ERC-3009 token Atlas deploys for demo settlement. The vault, strategies, and cascade flow are all real on X Layer testnet. Mainnet deployment uses real USDT0/USDC; the architecture is identical.
What's the actual edge?
Atlas combines two primitives nobody has shipped together: vault-custody multi-strategy capital allocation (Yearn V3 shape) plus EIP-712 signed cascade receipts (a new primitive from @beacon/sdk). The Skeptic strategy is the live test of whether paid intelligence beats free price action.
How is Skeptic's PnL accounted for?
All P&L derives from on-chain balance snapshots inside IStrategy.report(). The strategy compares its sub-wallet's current equity (bUSD + MOCK-X valued at TWAP) against cumulative debt allocated by the vault. Signal costs come out of the executor's bUSD, so they show up directly as performance drag.
Can someone manipulate NAV with a flash loan?
No. NAV uses a 30-minute TWAP from TwapOracle, not raw AMM spot. Single-block manipulation can't move the price reference enough to inflate share value.
What happens if a strategy goes rogue?
Strategies must post a stake with SlashingRegistry. Anyone can open a fraud claim with a bond. After a 24h challenge window, unresolved claims slash the stake. The vault admin can also call emergencyRevokeStrategy to pull all capital back instantly.
How do I withdraw?
Use the withdraw page. Standard ERC-4626 withdrawals come from the vault's idle bUSD balance. For larger redemptions when capital is allocated, use the WithdrawQueue (request → admin recall → claim).
What's a CascadeReceipt and why does it matter?
An EIP-712 signed payload listing every upstream the composite paid (slug, author address, amount, on-chain settlement tx) when serving one buyer call. Provable cryptographically without trusting the server. Indexable on CascadeLedger for permanent on-chain history. Replaces heuristic block-window matching used by other agent-marketplace demos.
Has this been audited?
Not professionally. 42/42 contract tests pass including 10 adversarial tests (NAV inflation, custody breach, fraud claims, etc), Slither is clean of high/medium findings, Foundry invariants in CI. Mainnet deployment would require a full audit first.
Service status

Live health checks against every signal endpoint.

Atlas dashboardbeacon.gudman.xyz
up
Build on @beacon/sdk

Five minutes to ship a paid signal. Composite cascades + signed receipts come for free.

View on GitHub →
// npm install @beacon/sdk

import { defineSignal, xLayerTestnetWalletClient } from "@beacon/sdk";

const signal = defineSignal({
  slug:        "my-signal",
  description: "What this returns",
  price:       1500n,           // 0.0015 bUSD per call
  payTo:       account.address,
  token:       bUSDDescriptor,
  chainId:     1952,
  settlementWallet,
  handler: async (ctx) => ({ /* your data */ }),
});