1.8 KiB
1.8 KiB
RMI Backend — Architecture
Status: canonical Last updated: 2026-07-03
Overview
FastAPI monolith serving crypto risk intelligence via HTTP, Telegram, and MCP.
High-level flow
Client (Web / Telegram / AI Agent)
↓
nginx → rmi-backend container (:8000)
↓
FastAPI routers
↓
Services / scanners / DataBus providers
↓
Postgres / Redis / Qdrant / Neo4j / ClickHouse
Components
| Path | Purpose |
|---|---|
app/routers/ |
HTTP route handlers (thin) |
app/scanners/ |
Token risk scanners |
app/databus/ |
30+ third-party data providers |
app/telegram_bot/ |
Telegram bot command handlers |
app/mcp/ |
MCP manifest and tool manager |
app/facilitators/ |
x402 payment verification |
app/wallet_memory/ |
Wallet label + clustering subsystem |
Storage
| Store | Use | Container / Host |
|---|---|---|
| Postgres | Primary OLTP, Ponder indexer data | rmi-postgres |
| Redis | Cache, Celery queue | rmi-redis |
| Qdrant | Vector embeddings | rmi-qdrant (down) |
| Neo4j | Wallet graph / labels | rmi-neo4j |
| ClickHouse | Analytics, 39M address labels | rmi-clickhouse |
Interfaces
| Endpoint | Purpose |
|---|---|
GET /health |
Health check (currently unhealthy due to Redis) |
GET /docs |
Swagger/OpenAPI docs |
POST /scanner/scan |
Live token scan |
POST /mcp/... |
MCP tool endpoints |
Current issues
x402_tools.py(212 KB) andx402_enforcement.py(108 KB) violate the 500-line limit and should become separate services or split by domain.sqlite3is used in 5 files for local state; should migrate to Postgres/aiosqlite.- F-string logs and
print()statements prevent structured log aggregation.
Deployment
ssh netcup
cd /root/backend/
docker compose pull
docker compose up -d rmi-backend