The mechanism · in plain words

A money changer that never sleeps.

Earn works like a currency kiosk — its prices sit inside Sera's published rates to capture flows, it runs 24 hours a day, and it covers up to 20 currencies of your choice.

Where Earn lives.

Earn is open-source code that runs on your machine — not on Sera's servers. That's not a marketing choice; it's the only architecture that keeps Sera (the company) from holding your private key. Three things live in three different places.

YOU CONTROL
Your machine
Laptop, server, or Claude Code sandbox
  • The AI agent itself runs here
  • Your private key + wallet stays here
  • Signs every order locally
  • Can be paused or stopped anytime — it's your code
SERA (THE COMPANY)
Sera's API
api.sera.cx — public REST endpoints
  • Routes signed orders to matching
  • Publishes market data & order book
  • Powers the dashboard you're looking at
  • Never holds your funds or your key
ON-CHAIN
Sera contracts on Ethereum
Audited smart contracts on mainnet
  • Vault contract holds your deposited funds
  • Settles every matched trade on-chain
  • You can emergencyWithdraw() directly if Sera's API ever goes down
  • Open-source, audited code
The legal point

Sera (the company) never has the ability to move your money. Every order, cancel, and withdrawal needs a signature from your wallet — and your wallet's private key lives on your machine, not ours. The only thing Sera can do is route your already-signed messages and show you a dashboard.

Example · USD / SGD — same pattern for every currency pair
Where the earnings come from · the same pattern works for any of the 36 currency pairs
Offer to buy and sell at prices just inside Sera's published rates — enough to capture flow. Earn the difference whenever someone takes both sides.

One pool, twenty markets at once.

Sera's shared capital design means your USDC earns against every currency you pick at the same time — not split across them. Pick up to 20 from 36 supported currencies. Your money works up to twenty times harder than it would in a regular trading account.

Shared capital · one pool, many currencies
Earned this session
2.335USDC
at this pace ≈ 25% APY · accruing in real time
Swaps through your liquidity LIVE
Atomic settlement zoomed in
PHPC
100kUSDC
GBPA

A trader's PHPC → GBPA swap routes through your USDC pool. Both legs settle atomically. You keep USDC and earn +0.114.

✓ You only hold currencies you set rates for.

A trade cycle on USD / SGD

Here is what happens to $1,000 of your capital, step by step, when the market behaves normally.

0
Sera publishes prices
Sera will buy USD at 1.27 SGD and sell USD at 1.28 SGD — a gap of 0.78% on USD/SGD.
1.27 / 1.28 Sera's prices
1
Earn offers slightly better prices
Buys USD at 1.2701, sells USD at 1.2799 — 0.01% better than Sera on each side. Now we're the best price.
1.2701 / 1.2799 our prices
2
Step 1 — someone buys USD from you
Someone wants USD. They give you 1,279.90 SGD for your $1,000 USDC. Now you hold SGD until you sell it back.
+1,279.90 SGD in progress
3
Earn offers to buy USD back
Earn offers to buy USD back at 1.2701 SGD per dollar. Now waiting for someone to sell USD.
offer live waiting for buyer
4
Step 2 — someone sells USD back to you
Someone wants to sell USD. You take their $1,000 USDC and pay them 1,270.10 SGD. Trade complete.
+9.80 SGD profit earned
Started with$1,000.00 USDC
After step 1 (sold USD at 1.2799)+1,279.90 SGD, −$1,000 USDC
After step 2 (bought USD at 1.2701)−1,270.10 SGD, +$1,000 USDC
Final result$1,000 USDC + 9.80 SGD ≈ +$7.71 (≈ 0.77%)

The 9.80 SGD is the earned spread — the difference between selling at 1.2799 and buying back at 1.2701, scaled to $1,000. It's Sera's full price gap (0.78%) minus the 0.02% Earn gave away to be the best price.

From 0.76% per trade to ~30% yearly return.

A single trade earns a tiny fraction of a percent. Multiply by the trades per day, the currencies running in parallel, and the days in a year — and the small per-trade profit compounds into a real yearly return.

Profit per trade (after costs) ~0.10% after costs
Active currencies at any time ~14 of the currencies you picked (quiet ones skipped)
Avg trades per currency per day ~0.8
Money used per trade ~50%
Estimated daily return on your money ~0.06 – 0.10%
Yearly return (compounded) ~24 – 44% APY

The range reflects the natural variation in how often trades happen. Strongly trending markets shrink the actual number; markets that move back and forth grow it. The dashboard shows the actual return based on real results.

Yearly return by trading style

The trading style chosen at setup controls how close to Sera's prices you offer. Closer = more trades, smaller profit per trade. Further = fewer trades, larger profit per trade. The expected yearly return moves with both.

Conservative
0.10% better than Sera
12 – 18% APY
Bigger profit per trade, fewer trades, less variation day-to-day. Suits a 'don't lose money' outlook.
Aggressive
0.02% better than Sera
30 – 55% APY
Best price on Sera every time, most trades, smallest profit per trade. More variation day-to-day.
These ranges are based on backtested Sera prices, average market conditions, and the assumptions above. Actual returns vary with how busy Sera is, how much trading happens, market direction, and how much capital is in the strategy. Earn earns less in strongly trending markets and more in markets that move back and forth. Past performance doesn't guarantee future returns.

What Earn is doing at any moment

At any moment, your money is in one of these four states. The dashboard shows the main state, but all four can be happening across different currencies at once.

Waiting for trades
Both buy and sell prices posted on Sera, your money sitting in USDC, waiting for someone to trade.
Mid-trade · holding currency
First half done. Holding the currency. Earn posted the reverse offer. Halfway through earning the profit.
Trade finished
Both halves filled. Profit earned in USDC. Earn posts fresh prices and starts again.
Updating prices
Sera's prices moved. All open offers cancelled and reposted at the new prices. Free to do.

What to expect in the first hour.

From the moment you fund the vault, here's the natural cadence — and why a quiet hour is not a broken AI agent.

0 min
AI Agent starts · vault gets funded

Your USDC moves into Sera's vault. The AI agent reads its profile (currencies, trading style), syncs the server clock, and prepares the first cycle.

~1 min
First quotes posted on Sera's book

A single VL batch of bids goes up — one bid per currency, all sharing your USDC budget. The dashboard's green badge turns on. You haven't earned anything yet — that's normal.

~5–15 min
First fill (usually)

Someone hits one of your bids. Your USDC converts to that currency. The AI agent immediately posts the closing ask at the profitable price, and you're now mid-trade.

~15–30 min
First completed round-trip

The closing ask fills. Currency converts back to USDC at a profit. Realized P&L shows on the dashboard for the first time — usually a few cents on a $1,000 deposit. The AI agent reposts and looks for the next one.

Hasn't filled after an hour? That's fine.

Either the markets are quiet (weekend, Asian session for European pairs) or your chosen pairs have wide spreads that nobody's hitting yet. The AI agent's still working — it's a market maker, it waits.

Either way no worries: the APY is still substantial even at one trade a month — a single 0.77% round-trip × 12 months is already 9.24% APY. Pick more currencies or wider-spread ones and the cadence picks up fast.

What the AI agent actually does, every 6 minutes.

This is the live run loop — exact API calls, exact decisions. Sera enforces a 5-minute cancel cooldown on limit orders; the AI agent uses a 6-minute cycle to leave a 1-minute settlement buffer before re-quoting.

01
Read Sera reference rates · both directions

For each chosen currency, the AI agent calls POST /swap/quote twice — once for USDC → currency, once for currency → USDC. Both quotes use Sera's reference pricing.

POST /swap/quote × 2 per pair (both directions)
02
Spread safety check · skip tight pairs

If the round-trip spread between the two quotes is less than 2 × your chosen margin (e.g., AI agent can't fit a Conservative 0.10% on both sides), the pair is skipped this cycle — no point quoting where you can't make money.

round-trip spread = (sell quote − buy quote) / mid > 2 × margin
03
Cancel stale orders (older than 6 min)

Orders that have been on the book ≥6 minutes are cancelled if their price is now off-quote. Sera's cancel cooldown is 5 minutes — the extra minute is settlement buffer so the cancel can't race with a near-miss fill.

POST /orders/cancel EIP-712 CancelOrder signature
04
Place new VL batch of bids

All bids share a single USDC budget via Virtual Liquidity — the same USDC backs up to 20 simultaneous markets. Each bid sits at buy_quote × (1 + margin) — slightly above Sera's reference, attractive to sellers.

POST /orders/vl/batch N siblings, fromToken=USDC, one shared budget
05
On bid fill · immediately post the closing ask

When a bid fills (AI agent now holds non-USDC inventory), the AI agent reacts inside the same cycle and places a standalone ask: sell_quote × (1 − margin). The ask order is the rebalance mechanism — it converts inventory back to USDC at a profitable price.

POST /orders single ask, fromToken=inventory token
06
If ask doesn't fill in time · swap to rebalance

If inventory in a non-USDC token sits longer than the profile's tolerance window (1 hour by default), the AI agent takes the swap fallback: POST /swap/quote + POST /swap to convert back to USDC at the orderbook price. This eats the ~0.10% swap markup but eliminates inventory drift risk.

POST /swap/quote → sign Intent → POST /swap (gasless, fill-or-kill)
07
Heartbeat to monitoring

Every cycle, the AI agent posts a heartbeat with current balances, open orders, and recent fills to earn.sera.cx. That's how the dashboard's green status badge stays alive — and how earn.sera.cx aggregates everyone's stats.

POST earn.sera.cx/heartbeat public, signed with wallet · stats only, no key material
The AI agent never takes — it only makes. Every order is a limit order sitting on Sera's book. Settlement gas is paid by whoever takes the AI agent's order (the taker), not the AI agent. So the AI agent's only gas cost is the initial deposit-to-vault and final withdrawal — both signed by the user, not the AI agent.

Why this works, and where it doesn't.

Honest framing — the edge is real, but it isn't free money. Here is the structure of both.

Why the edge exists

  • Sera's price gaps vary widely by currency pair — as tight as 0.05% on major pairs like EUR/USD, much wider on less-traded or exotic pairs (often over 1%, sometimes far more). Earn sits inside whatever Sera's published gap is, capturing most of it regardless of pair.
  • Sera's shared capital design lets the same USDC earn against up to 20 currencies you pick at the same time — up to 20× harder-working than a regular trading account.
  • Updating prices is free, so Earn matches Sera's price moves instantly without paying any fees.
  • Running 24/7 means trades happen across every time zone, not just during local hours.
What this has looked like, across all AI agents, last 90 days
Best single day +0.7%
Best single week +2.1% (Sep 18 post-FOMC chop)
Median weekly return +0.42%
Median 90-day return +6.1%
Read this as a typical run, not a forecast — real numbers from the aggregate. Markets change.

Where the risk is

  • Mid-trade risk — between step 1 and step 2, you're holding a currency. If the price moves against you before step 2 happens, that trade earns less or loses.
  • Trending markets — when a currency moves one direction hard, only one side trades, leaving you holding the currency while waiting for prices to swing back.
  • Withdrawing mid-trade — if you withdraw while a trade is in progress, Earn sells back at market prices and you may lose some of what you would have earned.
  • How this is handled — up to 20 currencies running in parallel spread out the risk. A slow trade on one currency is offset by finished trades on the others.
What this has looked like, across all AI agents, last 90 days
Worst single day −1.4%
Worst single week −2.8% (May 12 yen carry unwind)
AI Agents with at least one losing week 37%
AI Agents that ended a 90-day window positive 94%
Read this as a floor, not a forecast — real numbers from the aggregate. Past performance isn't a guarantee.

Open-source software. Use it, fork it, or build your own.

Earn is free, open-source code. We built and released it so more people can earn from FX without having to write trading software themselves.

github.com/sera-cx/earn

The full source code is public. Read it, audit it, run it on your own machine, or fork it and build your own version.

View the repo →
docs.sera.cx

Sera itself is permissionless. Anyone can build their own trading AI agents or yield strategies on top — Earn is just one example of what's possible.

Read the docs →
How the permissions work

When you turn on Earn, it gets one permission only: post and cancel quotes on Sera using your USDC. It cannot move money to another address, cannot change settings, cannot do anything you didn't sign for. Withdrawing your money always needs your own signature. You can revoke the permission anytime, and any other AI agent you build yourself works the same way — that's how Sera is designed.

Building your own agent?

Skip the AI agent. Use Sera's MCP.

If you want to write your own FX logic — different strategy, custom rebalancing rules, a treasury management agent, a payment router — install Sera MCP into Claude Code, ChatGPT, Cursor, Cline, or any MCP-capable host. 32 tools for quoting, swapping, settling, and treasury, all over the same Sera rails Earn uses.

Earn and Sera MCP are complementary — Earn is a pre-built market-making policy; Sera MCP gives any AI agent the raw FX primitives to build their own.