rmi-backend/ARCHITECTURE.md

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) and x402_enforcement.py (108 KB) violate the 500-line limit and should become separate services or split by domain.
  • sqlite3 is 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