Paste the wallet address your Earn signs with. We use it to pull this dashboard's stats from earn.sera.cx/personal/<address> — same endpoint that powers the public view at /dashboard. Nothing is sent off-page; the address only lives in your browser's localStorage.
Your money's hard at work today.
Once your AI agent heartbeats in, this page reflects what it's doing in real time — every fill, every quote, every cycle. Your AI agent runs on your own machine, signs orders with your wallet, and sends them to Sera's API. Sera (the company) never touches your funds.
Get pinged when your AI agent goes offline, recovers, hits a milestone, or signs a withdrawal. Powered by @sera_earn_bot — tap the link below, hit Start, and you're connected.
Use your own bot instead →
If you'd rather we didn't see your Telegram chat ID, run your own Telegram bot.
Create one in 60s via @BotFather, paste the token + your chat
ID below. We'll only use this bot to send your notifications — we never
see your chat history or any other users in your Telegram.
- Open Telegram, message
@BotFather, send/newbot. - Pick a name + a username ending in
bot. Copy the token (looks like1234567890:ABC-DEF…). - Open your new bot's chat and send
/start. Then open https://api.telegram.org/bot<TOKEN>/getUpdates (replace<TOKEN>) and grab thechat.idnumber.
Four dashboard cards depend on data the current heartbeat schema doesn't expose. Rather than show invented numbers, they're hidden until the AI agent starts publishing them:
- Per-currency exposure — needs
balances[]on the heartbeat (currently we only have aggregate NAV). - Recent fills feed — needs per-fill records, either embedded in the heartbeat or via a new
/personal/:wallet/fillsendpoint. - Daily & monthly statements — derivable from the timeseries endpoint, but PDF generation isn't built yet.
- Live action log — needs an action stream (post / fill / skip / cancel) which the v1 heartbeat collapses into a single
fills24hCount.
Schema spec: HEARTBEAT_SCHEMA.md · v2 in design
Activate Earn.
Tell the AI agent what you're holding, what to trade, how aggressive to be, and how to run. All settings are editable later from your dashboard.
What are you starting with?
The AI agent uses this as its starting position. You can use any stablecoin in any currency of your choice. We recommend using your home currency or a currency you value.
What should the AI agent trade?
Pick at least 2 currencies you want your starting liquidity position to be exposed to. The AI Agent can set exchange rates for up to 20 stablecoin currencies.
How aggressive should it be?
Closer to Sera's published prices means more trades but less earnings per trade. Further from Sera's published prices means fewer trades but earns more per trade.
Quotes sit 0.10% better than Sera's published price. Bigger profit per trade, fewer trades, the least day-to-day variation.
- Margin: 10 bps inside Sera's price
- Tolerance: 4-hour quote window
- Per-pair cap: 5% of NAV
Balanced trade frequency and profit per trade. Works well in most market conditions; this is what the median AI agent on the network runs.
- Margin: 5 bps inside Sera's price
- Tolerance: 1-hour quote window
- Per-pair cap: 10% of NAV
Best price on Sera every time. Most trades, smallest profit per trade, the most day-to-day variation. Profitable on volume.
- Margin: 2 bps inside Sera's price
- Tolerance: 15-minute quote window
- Per-pair cap: 20% of NAV
For operators who know what they want. These are passed through to the AI agent as CLI flags / env vars on startup.
How will you run it?
Earn is open-source code that runs on your machine (or a VM you control) — not on Sera's servers. Your private key never leaves your environment.
The +500 covers setup; the +300 daily refresh covers ongoing bot usage. Effectively free for most operators.
In Manus, click New Agent and paste the prompt. Your settings are already in.
Please run my Earn on Sera as a persistent Agent. - Currencies: EUR,GBP,JPY,SGD,CHF,AUD,CAD - Style: standard Ask me for my wallet private key, then run in the background: WALLET_PRIVATE_KEY=<my-key> \ CURRENCIES=EUR,GBP,JPY,SGD,CHF,AUD,CAD \ TRADING_STYLE=standard \ npx -y @sera-cx/earn start Keep the Agent alive so the AI agent keeps running.
AI Agent is live in ~2 minutes. The green status badge here turns on.
- Where it runs
- In Manus's cloud. Your laptop doesn't need to be on; you don't need a terminal.
- If you close the browser
- ✓ Bot keeps trading 24/7. The Agent stays alive in Manus's sandbox.
- If your laptop is off
- ✓ Doesn't matter — Manus is running it on their servers.
- Where your wallet key lives
- In Manus's encrypted sandbox env. Manus sees it; Sera (the company) never does. If you want the key on your own machine instead, use Claude Code.
- When the bot stops
- Only if you delete the Manus Agent. Credits regenerate daily (+300/day on top of the +500 sign-up grant), so the bot stays funded indefinitely at typical usage without you needing to top up.
- How to restart it
- Open the Manus Agent in any browser and ask is the bot still running? — it'll resume from where it left off.
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.
- 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
- Routes signed orders to matching
- Publishes market data & order book
- Powers the dashboard you're looking at
- Never holds your funds or your key
- 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
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.
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.
A trade cycle on USD / SGD
Here is what happens to $1,000 of your capital, step by step, when the market behaves normally.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 →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 →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.
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.
Take some, or take it all.
Tell your agent (Claude Code, Manus, or your terminal) what you want — it signs the WithdrawIntent locally with the wallet key it already has, and Sera settles. Sera (the company) cannot move your funds and never sees the key.
Please withdraw 5,000 USDC from my sera-ai AI agent to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1. Use the locally-running AI agent's CLI — `sera-ai withdraw` — and paste me back the executor signature when done.
sera-ai withdraw 5000 USDC --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1
WithdrawIntent locally with the wallet key from your AI agent's .env. earn.sera.cx never sees it; Sera (the company) never sees it.