Total Portfolio Value
—
across all chains
Total USDC
—
stable inventory
Wallets
—
monitored on-chain
Last Refresh
—
live RPC snapshot
Wallet Balances
| chain | address | native | balance | native usd | usdc | weth | weth usd | gov | gov bal | gov usd | total usd |
|---|
By Chain
Wallet Balances
—
24h window — grey = still warming up
Loading…
CEX Balances
—
24h window — grey = still warming up
Loading…
Recent Trade Activity — last 1000 records
—
Loading…
Registered Signers
| chain | role | address | label | username | ext id |
|---|
Personal Wallets
No personal wallets yet. Pick a chain and click Generate Wallet to create one.
My Transfers
| when | chain | asset | amount | from | to | role | status | tx | note |
|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||
CEX Console
Manual operator controls for exchange-side balancing and intervention. Each exchange has its own section
with live balances, WS/feed health, open orders, recent trades, and forms for manual order/withdraw actions.
loading…
Total Top-Up Recommended
—
across all wallets
Wallets Needing Gas
—
below target reserve
Critical / Unfunded
—
cannot trade safely
Last Refresh
—
live RPC + CoinGecko
Gas Tank Status
Edit a row's txs or reserve % then click Save
| chain | wallet | native bal | native $ | usdc $ | gas (gwei) | ~tx cost | txs left | target txs | reserve % | target $ | top-up $ | status |
|---|
How recommendations work
For each wallet/chain we compute:
typical_tx_cost = gas_price × typical_gas_units
target_native_$ = max(
target_txs × typical_tx_cost,
reserve_pct × wallet_usdc_balance
)
recommended_topup_$ = max(0, target_native_$ - current_native_$)
- target txs — how many trades the wallet should always be able to pay for (default 50).
- reserve % — floor: % of the wallet's USDC kept as native gas (default 2%).
- typical_gas_units — Uniswap-V3-swap-sized; tuned per chain (Arbitrum ≈ 1.5M because of L1 calldata).
Click Top Up to swap USDC → native on that chain via Uniswap V3 and immediately replenish the gas tank.
Top-Up Activity
(no top-ups yet this session)
Global + per-strategy — Master Kill Switch halts all execution. Each rule has
off / live / on below (same API as Strategies). Park all sets every rule to off without toggling the kill switch.
Mode
—
execution mode
Kill Switch
—
global halt
Chains
—
connected
CEXes
—
configured
Chain Health
CEX Feeds
| venue | pair | bid | bid size | ask | ask size | mid | age |
|---|
DEX opportunities (scored)
| chain | pair | buy venue | sell venue | size | gross | buy imp | sell imp | friction | net USD | net bps | state | liq reject |
|---|
Recent opportunities
—
Recent executions
—
Chain↔CEX samples
/api/chain_to_cex/samplesloading…
CMDT pre-check samples
/api/cmdt/samplesloading…
All strategies
off = parked · live = observe · on = may execute
| kind | pair | venues / note | mode | tri-state |
|---|---|---|---|---|
| loading… | ||||
CEX & DEX wallet liquidity
Kraken + Binance (and any other/api/cex venues) plus every on-chain signer from /api/wallet-balances
loading…
Maker strategy ON/OFF
controls allcex_maker_dex_taker rules
| Venue focus:
—
—
Live Resting Orders
—
CMDT legs across configured CEX venues
Resting Notional
—
sum of price × vol across live orders
Fills (ring window)
—
hedge outcomes vs fills
Realised P&L
—
booked on maker fills in the journal
Median Age
—
time orders have been resting
Live maker orders
loading…
Post-only maker limits currently tracked by the engine. Rows marked
adopted
were picked up from CEX open-orders on boot; placed
were submitted by this engine process.
loading…
CEX account: open orders & recent fills
same/api/cex/*/open_orders + recent_trades as Taker Orders
Kraken and Binance (and any other configured spot adapters) — raw REST snapshot from the exchange API key.
This is account-level data and may include orders not shown in the live maker table above.
loading…
Per-Rule Rollup
—| rule | live | ask / bid | notional ($) | fills | hedge ok | hedge FAIL | placed | adopted | cancelled | P&L ($) |
|---|---|---|---|---|---|---|---|---|---|---|
| loading… | ||||||||||
Recent Maker Activity
—
Lifecycle events from every CMDT rule. Newest first. Fills → green; hedge-failed → red alert.
Constant
placed/cancelled with no filled rows means the reprice threshold
is too tight — widen repost_threshold_bps in config/default.toml
so orders get time to actually match.
loading…
Dynamic Spread-Anchored Quoting
detect spread first → short TTL maker quote → verify → hedge / unwind
—
Current Trades (Active Quotes)
loading…loading…
Profitability Counter
—
profitable samples in recent window
Cancelled
—
recent cancelled quote events
Taken / Filled
—
recent fill + hedge-dispatched events
Expired
—
recent TTL-expired quote cancels
Candidates
loading…
Rejected Candidates
loading…
Past Trades
loading…
Recent events
loading…
Taker strategy ON/OFF
controls allchain_to_cex rules
—
Venues
—
from /api/cex
Taker fills
—
filled c2c trades
Taker P&L
—
realised on c2c fills
CEX & DEX wallet liquidity
Kraken + Binance balances and all monitored signing wallets (every chain)loading…
Every exchange is rendered in its own section. Each section shows: (1) that exchange's open orders, (2) its recent trades (private API or WS fallback), and (3) opportunities that route through that same exchange only.
loading…
Decisions
—
considered since boot
Allowed
—
passed every gate
Aborted
—
blocked pre-trade
Decision latency
—
in-process gate cost
Live Risk Config
edits apply on the next decision (no restart)Reject-Reason Histogram
| reason | count |
|---|
Recent Decisions
| when | verdict | kind | chain | size | net bps | decided in | reasons |
|---|
Ticks
—
scoring loops since boot
Emits
—
opportunities published
Liquidity rejects
—
candidates dropped by gate
Auto-sizer wins
—
size-vs-profit optima picked
Tick p50 / p99
—
in-process searcher cost
Pipeline p50
—
handoff opportunity → fill
Chain Health
CEX Feeds
| venue | pair | bid | bid size | ask | ask size | mid | age |
|---|
DEX Opportunities (scored)
double-click a row for the P&L breakdown + fix suggestions| chain | pair | buy venue | sell venue | size | gross | buy imp | sell imp | friction | net USD | net bps | state | liq reject |
|---|
Recent Opportunities
—
Recent Executions
—
Live Opportunity Rules
edit a row and click Save · venues are comma-separated DEX ids| chain | pair | buy venues | sell venues | size steps (USD) | min profit bps | max inv skew % | state |
|---|
Liquidity Gate (per rule)
opportunities whose pools fail any threshold are silently dropped — they never reach risk, the orchestrator, or the trade history.| chain | pair | enabled | max per-leg impact (bps) | max round-trip impact (bps) | max pool friction (bps) | min reference spread (bps) |
|---|
Auto-Sizer (per rule)
when enabled the engine sweeps a dense geometric grid in [min, max] and emits ONE opportunity per (buy_venue × sell_venue) cycle — at the size with the highest expected net USD profit (after fees, gas, slippage, and observed price impact).| chain | pair | enabled | min USD | max USD | steps | effective grid (USD) |
|---|
Per-Searcher Latency, Throughput & Liquidity
nanoseconds — sub-µs ticks are the fast path · "liq" cols show the gate's last reading · ★ winner = auto-sizer's choice on most recent tick| chain | pair | size | ticks | emits | last gross | last net USD | last impact (b/s) | pool friction | liq rej | auto-win | last reject | last tick | p50 ns | p99 ns | last error |
|---|
Active Chains
—
searcher running
Disabled
—
trading paused
Healthy Nodes
—
WS+HTTP up
Avg Tick Age
—
last searcher pulse
Chain Status & Toggles
flip a chain off to pause its searcher pool instantlyNodes In-Sync
—
WS up + fresh quotes
Syncing / Stalled
—
connected, no live prices yet
Down / Stopped
—
connector unhealthy
Cached Quotes
—
last update —
Nodes
click a row to load its prices & logs in the panels below
price source (all chains):
| chain | id | status | sync | price source | endpoint | last block | head age | connects | disconnects | heads | live quotes | controls |
|---|
Prices — (no node selected)
latest quote per (venue, pair, side, size) for the selected node| venue | pair | side | size in | size out | eff. price | mid | block | age |
|---|
Logs — (no node selected)
| time | level | target | message |
|---|
Executions
—
on-chain trade attempts
Filled
—
tx confirmed on-chain
Reverted / Failed
—
tx mined but reverted
Realized P&L
—
sum of filled executions
Executions — loading…
| when | chain | purpose | venue | side | amount in | amount out | tx | status | label | error |
|---|---|---|---|---|---|---|---|---|---|---|
| Loading executions… | ||||||||||
Considered Opportunities — loading…
| when | kind | chain | route | size | net bps | net usd | verdict | reason / outcome |
|---|---|---|---|---|---|---|---|---|
| Loading opportunities… | ||||||||
Considered
—
Allowed
—
Aborted
—
Allowed P&L (est)
—
Create Ticket
report issues by dashboard page
—
Ticket Queue —
| when | page | title | priority | status | author | details |
|---|---|---|---|---|---|---|
| No tickets yet. | ||||||
Mode
—
execution mode
Uptime
—
since boot
HTTP
—
admin endpoint
Iris API
—
CCTP attestation
Fee Engine
applied on next opportunity tickRuntime
—
Pipeline Latency (in-process)
execute pipeline only — wire-time latency is bound by RPC + relay| stage | count | last ns | mean ns | p50 ns | p99 ns | max ns |
|---|
Errors
0
since boot or last reset
Warnings
0
since boot or last reset
Last 5 min
—
err / warn
Ring
—
in-memory capacity
Top sources
grouped by tracing target — usually a Rust module path| target | count |
|---|
Top messages
numbers + tx hashes collapsed to # so similar errors group| signature | count |
|---|
Live feed
0 events shown| time | level | target | message | fields | file |
|---|
Tasks Running
—
live background workers
Total Registered
—
since boot
Finished / Aborted
—
terminated tasks
Failed / Panicked
—
non-zero exit
Registered tasks
every long-lived background task tracked by the central supervisor| name | kind | status | uptime | spawned at | finished at | description |
|---|
Move USDC via CCTP
—
⇅
—
From—
To—
Amount—
Modecctp_v2
Est. fees~$2.50 src gas + ~$0.50 attestation
Bridge Routes
Available CCTP corridors (USDC native burn-and-mint).
CCTP Tracker
background service polling Iris every 5s —Last tick
—
since boot
In flight
0
non-terminal transfers
Burns
0
submitted · failed
Attestations
0
last seen —
Mints
0
settled · failed
Currently in flight
| id | status | src→dst | amount | burn tx | attestation | mint tx | age |
|---|
Rebalance History
| id | status | src | dst | amount | mode | burn tx | attestation | mint tx | operator | created |
|---|
Total Native USD
—
across every wallet × chain
Total Wrapped USD
—
canonical wrapped-native
Recent Wraps
—
submitted (in journal)
Recent Unwraps
—
submitted (in journal)
Per-Chain Wrap Status
live RPC: native (snapshot) · wrapped (multicall) · click Wrap to deposit native into the WETH9-clone, Unwrap to withdraw native backLoading wrap balances…
Wrap / Unwrap Activity
| when | chain | direction | wallet | wrapped | amount | status | tx | error |
|---|---|---|---|---|---|---|---|---|
| Loading activity… | ||||||||
Total Inventory USD
—
across every chain wallet
Chains in Drift
—
at least one token off target
Stalled Pairs
—
rule cannot fire — base or quote ≈ 0
Swap Suggestions
—
queued for operator click
Auto-Rebalance —
when ON, the engine fires one swap per cycle per chain, gated by every guard below — daily caps, gas %, drift %, oscillation, cooldownMode
—
Max swap (USD)
Min swap (USD)
Cooldown (sec)
Min drift %
Max gas % of swap
Daily swap cap
Daily USD cap
Spent today (rolling 24 h)
— swaps · $—
Last action
never
Cycles · Swaps · Errors
— · — · —
Per-Chain Inventory
target = equal split across base/quote of every[[dex_to_dex]] rule on the chain · native reserved as gas
Loading rebalance snapshot…
Cross-Chain Inventory Arb Engine
controls allcross_chain_inventory_arb rules
—
Routes tracked
—
configured + observed xarb rule paths
Chains in routes
—
distinct chain ids across xarb traffic
Live XARB candidates
—
accepted inventory-arb opportunities
Rejected XARB
—
near-miss evaluations from sample stream
Live Cross-Chain Inventory Arb Opportunities
actual executablecross_chain_dex_to_dex rows emitted by the strategy bus
| time | rule | route | size usd | gross bps | net bps | net usd |
|---|---|---|---|---|---|---|
| loading… | ||||||
Executable Cross-Chain Opportunities
net > 5 bps after CCTP fee + 2 swap legs (5 bps each) + 8 bps slippage buffer · execute manually via the Rebalance and CCTP Bridge tabs| asset | buy on | buy $ | sell on | sell $ | gross bps | bridge | swap | slip | net bps | staler | route |
|---|---|---|---|---|---|---|---|---|---|---|---|
| loading… | |||||||||||
System Wallet Balances (Cross-Chain Inventory)
every wallet listed here is treated as a system wallet for inventory arbitrage| chain | wallet | native usd | USDC | WETH | total usd |
|---|---|---|---|---|---|
| loading… | |||||
Rejected XARB Samples
latest rejected inventory-arb evaluations with gross/net BPS so you can see what blocked each candidate.| pair | buy on | size $ | sell on | sell $ | gross bps | net bps | note |
|---|---|---|---|---|---|---|---|
| loading… | |||||||
Per-Chain Asset Prices (USD mid)
freshest BuyBase + SellBase quote on a USD-pegged pair. Stale (> 30 s) rows are excluded from the spread search above.| asset | chain | local sym | USD mid | buy | sell | venue | age | fresh |
|---|---|---|---|---|---|---|---|---|
| loading… | ||||||||
DEX-to-DEX Arbitrage Engine
d2d only (same-chain wallet inventory)
—
D2D Rules ON
—
dex-to-dex rules in ON mode
D2D Rules LIVE
—
observe-only d2d rules
Open D2D opportunities
—
latest dex-to-dex candidates
Filled trades (recent)
—
purpose=arbitrage fills
Realized P&L (recent)
—
USD total over shown fills
Strategy Kind Status
| kind | rules | on | live | off |
|---|---|---|---|---|
| loading… | ||||
Top Opportunities
latest D2D candidates by estimated net USD| time | rule | kind | size usd | net bps | net usd |
|---|---|---|---|---|---|
| loading… | |||||
Top Candidates (BPS)
highest-bps D2D candidates right now| time | rule | kind | gross bps | net bps | size usd |
|---|---|---|---|---|---|
| loading… | |||||
Recent Filled Arbitrage Trades
| when | label | status | realized pnl | id |
|---|---|---|---|---|
| loading… | ||||
User accounts
…
Create user
Alchemy
Manages the API key used when a chain's endpoint source is set to Alchemy
on the Nodes tab. One key covers every network that has an
alchemy_network slug configured — you don't pay per-chain.
loading…
Eligible chains
—
How Alchemy billing works
Alchemy bills by Compute Units shared across every network
in their catalogue. The $49/mo Growth tier gives you one monthly
CU pool; you create one app per network on Alchemy's dashboard
but they all draw from the same balance. For arbx that means
the same key lights up Avalanche, Ethereum, Base, Arbitrum,
Optimism, and Polygon pricing feeds as soon as you flip their
respective toggles to Alchemy on the
Nodes tab.
This instance …
…
Pending enrollments
Approved guests
Guest dashboard
Loading…
Readiness checklist
Loading…
Identity
Authentication
Actions
What's left to do
Relay audit log (last 256)
Trading Rules
Rules are grouped by strategy kind below. Double-click any row for the
full profitability analysis (cost stack + buy/sell legs + coaching). Press
▸ ops to inline the live opportunity feed. Modes:
OFF — paused ·
LIVE — observe only, not fed to the trade engine ·
ON — fully executing.
CMDT rules flagged dry_run in config stay in observe mode regardless of ON.
Operator Doctrine
Reference card for every page in the dashboard. Each section is the same content the per-page help carousel shows, expanded for printing. Use the per-section Print button to send only that card to the printer; the global Print all below sends the entire doctrine.