Internals

How Aumo actually works

No marketing gloss down here. This is the real machinery: how the agent thinks, where your money goes, and the math behind every move. Everything maps to code you can read and transactions you can check.

Watch it provide liquidity

One thing the agent can do in the safe pool is provide liquidity itself, not just park money in a lender. Here is the whole flow, one tap at a time. (The opt-in stock, basket, and gold pools are in their own drawers below.)

step 1 of 5

The agent decides it's worth it

Nothing happens until providing liquidity actually pays. The agent scores this venue every cycle and only funds it when its risk-adjusted yield beats the alternatives. So most of the time this sits at $0 on purpose. That's the whole point of a picky agent.

score venue → worth funding? → go

Right now the agent holds this at $0 on purpose: full-range fees on a pegged pair are thin, so it waits until the yield actually beats the alternatives (the X Layer RWA incentives are the trigger). When it funds it, the fees compound into your share price, no claim button.

Open the hood

Where your money livesThe pool, and how shares actually work▾

You put in USDT0 and get aumoUSDT0 shares back. It is a standard ERC-4626 vault, which is a fancy way of saying: your shares are a claim on the whole pot, and yield shows up as your share getting more valuable, not as a separate reward you have to claim.

What the pool is worth at any moment:

totalAssets = idle USDT0 + Σ (each venue's live balance)

Each venue's balance is read live and wrapped in a try/catch, so one flaky venue can never brick the whole number. First-depositor inflation (the classic 4626 attack) is neutralized with a decimals offset of 6. Ownership is two-step and cannot be renounced, so the pool is never left ownerless. And redemptions are never pausable, so you can always get out.

The rules it literally cannot breakGuardrails live in the contract, not the agent▾

The agent is smart but not trusted. Every limit is enforced by the pool itself, so the worst a buggy or hijacked agent can do is get a transaction reverted.

  • A cap on how much moves per transaction, per venue, and in total.
  • An allowlist: funds can only reach approved venues, never some random address.
  • A rolling loss budget: every swap spread it burns is metered, and once the window's budget is spent, further lossy moves revert.
  • A deploy budget that rate-limits how fast it can churn capital.

Caps check real exposure, not just booked principal:

exposure = max(principal, live balance)
How it picks a venueThe risk brain, in actual numbers▾

It never chases the biggest APY. It breaks each venue into risk pieces, blends them with fixed weights, and haircuts the yield by the result. The blend:

risk = 0.30·protocol + 0.25·liquidity + 0.20·peg + 0.15·utilization + 0.10·concentration

Then it adds a trend penalty if the venue is getting worse, plus two RWA-specific alarms: a hit if the venue's live data went stale, and a bigger hit if you could not actually exit it right now (a lending market borrowed to the hilt, or a position bigger than the exit door). Concentration is correlation-aware, so stacking two similar venues does not count as diversifying. What it ranks on is never the raw APY:

risk-adjusted yield = APY × (1 − risk)
Why it just sits there sometimesHolding is a decision, not a nap▾

It rotates capital only when the move pays for itself. Two things usually say "don't bother": the best venue is already at its concentration cap (it cannot legally add more), or the edge is real but cannot beat the round-trip swap cost before the position matures.

For a fixed-maturity venue like a Pendle PT, only the yield capturable before it matures counts. So a juicy headline edge on something maturing in two months often does not justify the ~100bps it costs to get in and out. Holding, in that case, is the agent being disciplined, not idle.

The venues, one by oneAave, USDG, Pendle, and the LP▾

Aave v3. Supplies USDT0, holds the interest-bearing aToken. Simple.

USDG. Swaps USDT0 to USDG behind a slippage floor, then supplies it to Aave for real-world-asset yield.

Pendle PT-USDG. Buys the Principal Token for a fixed rate to maturity. Valued off a TWAP oracle (never a spot price you could yank around) and clamped at par.

USDG/USDT0 LP. The liquidity venue from the walkthrough above. It vendors Uniswap's own math exactly, values the position through a peg-band-clamped price so a manipulated spot cannot fake a gain, and reads its live fee APY from the pool's fee growth:

fee yield over a period = (Δ feeGrowth0 + Δ feeGrowth1) / 2^129

annualized by the elapsed time, in full-precision integer math.

The at-risk pools: stocks, a basket, and goldOpt-in price exposure, walled off from the safe pool▾

Separate from the safe treasury, these pools deliberately hold price risk you chose. Each is its own isolated ERC-4626 pool built on EquityPool, a subclass of AumoPool, so it inherits the same per-move, per-venue, and total caps, the allowlist, two-step ownership, and the no-external-withdrawal rule, and adds two equity-specific behaviours.

Market hours, enforced by the contract. Entry and exit are gated on the equity oracle being fresh. The feed only ticks while the US market is open, so a stale price is the market-closed signal and the pool refuses to admit or redeem then. Nobody gets to trade a weekend gap against the holders who stay.

How the money moves. EquityAdapter converts USDT0 into the wrapped xStock and back through Uniswap v3, routing USDT0 → USDG → xStock when the stock's liquidity sits against USDG. Every swap carries an oracle-derived minimum out, so a manipulated pool reverts instead of filling far from fair value.

The four single-stock pools (NVIDIA, Apple, Microsoft, Meta) buy and hold. There is no timing rule; we tested one and removed it (see the research note). The basket is one EquityPool holding all four equal-weight through four adapters, and the agent's only move is to rebalance back toward equal weight when drift crosses a band.

Gold. A separate pool holds PAXGy, Paxos' yield-bearing tokenized gold. It routes USDT0 → USDG → PAXGy the same way and prices the position from PAXGy's own on-chain gold rate times a gold feed. The gold entitlement grows over time, so you earn a yield denominated in gold on top of the price. Gold moves in dollars, so this is not capital preservation either.

The price oracle Aumo runs (for now)Self-hosted, disclosed, and swappable for a network feed▾

The stocks and gold need a price on-chain. Aumo runs a SelfHostedEquityOracle: an off-chain feeder pulls quotes, scales USD-per-share to 1e18, resolves whether the US market is open, and posts through a single trusted updater key.

Stated plainly: that key is the source of truth. It is a weaker guarantee than a decentralized feed, and it is disclosed to depositors. It is also deliberate and temporary. Every consumer reads through an oracle-agnostic interface (IEquityOracle), so switching to a verified network feed later is one owner call on the adapter, with no depositor action.

The submit path is bounded so a bad feed or a stolen key can only do so much damage: a registered-feed allowlist, a monotonic timestamp (no rollback to an old price), a future-skew bound, an absurd-price cap, and an owner-dialable per-update deviation circuit-breaker. Gold is priced from the token's own rate times a gold feed:

PAXGy price = getRate() × gold/USD
The anti-dilution levyWhy joining or leaving an at-risk pool costs a few bps▾

The at-risk pools charge 0.25% on entry and 0.50% on exit, and the money stays in the pool. It is not a protocol fee; the contract caps it so the owner can never turn it into one.

What it fixes: an internal security pass proved two Medium issues with fork PoCs. Exit-slippage socialization meant a leaver's swap cost landed on the people who stayed. A NAV-latency skim meant someone could trade against a slightly stale mark in the gap after an oracle update. The levy makes a joiner or leaver bear the value their own action moves, and a tighter staleness window closes the skim. Both shipped in a hardened redeploy to mainnet before deposits opened.

The AI provider is swappableGroq or Anthropic, same tighten-only bound▾

The reasoning layer, the specialist panel, and the Ask Aumo endpoint speak an OpenAI-compatible interface, so they run on Groq or on Anthropic depending on a config key.

The safety does not depend on which one answers. Whatever the model returns can only tighten the deterministic plan, and the contract re-checks every guardrail after it, so a swap changes the wording of the reasoning, never what the agent is allowed to do.

Receipts for everythingEvery decision, provable after the fact▾

Every cycle writes a receipt: what it saw, the risk scores, the plan and why, the transaction hashes, and a fingerprint of the exact guardrails in force. So any change in behavior traces back to a change in policy. Performance is measured as honestly as it gets: the growth of your share price.

price per share = totalAssets / totalSupply

Idle money keeps that flat; the agent's job is to grow it, net of every cost. A fresh deposit dips it briefly by the one-time cost of deploying, which is earned back, so the number only gets reported once there is a fair window behind it. The whole trail exports as CSV.

Who holds the keysThe signer is untrusted by design▾

The agent signs with an ordinary key, and the design assumes that key could be compromised at any moment. That is the point: the safety does not come from hiding the key, it comes from the contract. Even holding the signing key, the only moves it permits are allocating to an allowlisted venue and pulling funds back to the pool. No function sends money to an outside address, so a stolen signer still cannot drain a cent. Deposits can start on Ethereum, Arbitrum, Optimism, or Polygon and land on X Layer through USDT0's native bridge, no wrapped-asset detour.

Is my money safe?The honest version▾

The thing Aumo removes is trusting the agent: it cannot exceed the on-chain caps and cannot send funds to an outside address, so a rogue agent cannot steal. What you still trust is the venues themselves, the correctness of the contracts, and the owner key that sets policy. The pool and adapters have a unit suite plus a stateful invariant suite, every adapter is fork-proven against live contracts, and new money-code gets a multi-pass adversarial review. Aumo is experimental and has not had a formal third-party audit yet. That is the truth, plainly.

The deployed contractsEverything live on X Layer, checkable on the explorer▾

Everything runs on X Layer mainnet. Read the code, then check every move on the X Layer explorer.

  • Safe stablecoin pool: 0x8a98A4A868e5FBAc05B9d1dC0742BD008354114F
  • Shared equity and gold oracle: 0x1759B50019C988F3eF4Cc0F4879d80EdaD2Ec4D2
  • NVIDIA pool: 0x9781cD1f02045c072D7D1915a215c9E46b49E1dB
  • Apple pool: 0xDcd9c0C948ebb4D63d88FA5EC8eDE571eF1BE523
  • Microsoft pool: 0xbe0A87F49F424D3170804e29E5969a379Fe65626
  • Meta pool: 0x47343D8a880c84aD1a6aD679FEdd0DC23fdA8BcC
  • Diversified basket pool: 0xFe01b81F5D22Ac3647424904f7DC7ecC9EA0358d
  • Tokenized gold (PAXGy) pool: 0xf1833C4eAEb42df6D9eE33ea090055cf690cee56

These are the hardened pools, redeployed after the internal security pass; they supersede the earlier pre-hardening equity addresses.