🗺️ RPC map · workspace view
Where each RPC flows, and which Cargo crate owns each feature. Click any feature or RPC node for how it’s used and why.
rpc-gateway; other APIs go directws_pool · multiplexed WSSrpc_queue · HTTP RPC workerssolana · CEX-monitor WSStoken_tracker · per-wallet trackingdebug_log + failure_log
Workspace structure
One binary, one process — the crates enforce a compile-time dependency DAG, not separate services.Why split?
The split enforces module boundaries at the compiler level: rpc-gateway can't import a feature, and no crate may import one above it. Upward calls go through OnceLock hooks that master installs at startup (CEX resolver, farm_addresses lookups, etc).
What stayed shared?
Helius + Shyft pool state lives in ws_pool and rpc_queue as process-wide OnceLocks inside rpc-gateway. Per-key credit budgets stay coordinated because every feature crate goes through the same gateway code — no key gets double-spent.
Not microservices.
Still one cargo run --bin nattbakka-v2 process, one Axum server on :3000, one systemd/pm2 entry. Shared in-memory state, no network hop between "services". The boundary is structural, not operational.