Servers

The server lens answers "where does this physically run?" Kraite's seven-box Hetzner topology is deliberately split: one stateful core for database and Redis, one ingestion brain that also serves the public web vhosts, four interchangeable trading workers split by Binance per-IP weight, and one isolated worker for indicator throttling. Each box has a well-defined role; any one can be lost without dragging down the rest of the system.

Architecture overview

The full six-box topology. Topology diagram, role split, failure semantics for each box, and the cross-references into per-server chapters.

Hyperion (database + Redis)

The stateful core. MySQL 8.4.8 plus Redis 8.0.5 on a dedicated AMD-EPYC box. Tuned for the write-heavy step-dispatcher workload — 10 G buffer pool, 5000 IO capacity, non-blocking backups.

Athena (ingestion + web)

The brain and the web edge in one box. Scheduler, dispatch daemon, both WebSocket daemons, the user-data Horizon supervisor, plus nginx vhosts for admin / kraite.com / syntax.

Eos + Iris + Nyx + Hemera (workers)

Four interchangeable trading workers — Horizon consumers competing on the same positions / orders / priority queues. No per-account-to-box binding by design. Four distinct public IPs spread Binance API call load naturally across workers as dispatched jobs distribute.

Tyche (indicators + cronjobs)

Isolated worker. Runs the 10-process indicator pool plus 3-process cronjobs pool. Kept off the trading boxes so TAAPI rate-limit waits never starve real-time position / order processing.


Cross-lens entry points

  • Subsystemswhat runs on each box (the daemon on athena, the workers on eos / iris / nyx).
  • Business domainswhat each box manipulates (positions, orders, indicators).
  • Lifecycleshow a flow traverses the topology end-to-end.