61 lines
1.8 KiB
Markdown
61 lines
1.8 KiB
Markdown
# 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
|
|
```bash
|
|
ssh netcup
|
|
cd /root/backend/
|
|
docker compose pull
|
|
docker compose up -d rmi-backend
|
|
```
|