Skip to content

Repository files navigation

Auris

Autonomous arbitrage engine for Ethereum. Monitors Uniswap V2 liquidity pools in real time, detects mispriced assets, and closes spreads with Aave V3 flash loans — landing transactions privately through Flashbots. Single Rust binary, self-hosted, no external dependencies.

Architecture

Crate Role
auris-types Shared domain types
auris-config Config loading and AURIS_* env overrides
auris-db SQLite migrations and query helpers
auris-core WebSocket pool subscriptions, reserve state, AMM math
auris-gas Gas oracle — 100-block ring buffer, p90 priority fee
auris-sim Profit evaluation and backtesting
auris-exec Transaction signing, Flashbots bundle submission
auris-api REST + WebSocket API, JWT auth, web UI
auris-bin Entry point

Quickstart

1. Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

2. Configure

[node]
ws_url = "ws://127.0.0.1:8546"

[flashbots]
relay_url = "https://relay.flashbots.net"

[bot]
min_profit_usd = 5.0
max_gas_gwei = 50
paper_trade = true

[server]
bind_addr = "127.0.0.1:8080"
web_ui_path = "./web-ui"

[database]
path = "./auris.sqlite"

[auth]
jwt_secret = "CHANGE_ME"
jwt_expiry_seconds = 86400

[keys]
signer_key_path = "./keys/signer.key"
flashbots_key_path = "./keys/flashbots.key"
contract_address = "0x0000000000000000000000000000000000000000"
aave_pool_provider = "0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e"

3. Run

cargo run -p auris-bin -- --config ./config.toml

API

Auth

POST /api/auth/register   — first run only; disabled once a user exists
POST /api/auth/login      — returns JWT

All subsequent requests require Authorization: Bearer <token>.

WebSocket

GET /ws

First message must be {"type":"auth","token":"<jwt>"} within 5 seconds.

Bot Control

POST /api/bot/start
POST /api/bot/stop
GET  /api/bot/status

Data

GET /api/stats/pnl
GET /api/stats/gas
GET /api/stats/opportunities
GET /api/trades?limit=50&offset=0
GET /api/wallet/balance

Environment Overrides

Any config key can be overridden at runtime:

AURIS_NODE_WS_URL
AURIS_SERVER_BIND_ADDR
AURIS_DATABASE_PATH
AURIS_AUTH_JWT_SECRET
AURIS_KEYS_SIGNER_KEY_PATH
AURIS_KEYS_CONTRACT_ADDRESS

Pattern: AURIS_<SECTION>_<KEY>

About

Ethereum arbitrage engine. Uniswap V2 spread detection, Aave V3 flash loans, Flashbots private submission.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages