Reorg-aware observatory of the Monero network: chain reorganizations, orphan blocks, mining-pool centralization. Public dashboard + API + MCP.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/nowi333/monerometrics{
"mcpServers": {
"monerometrics": {
"command": "node",
"args": ["/path/to/monerometrics/dist/index.js"]
}
}
}Resumen de MCP Servers
# monerometrics
> A reorg-aware observatory for the health of the Monero network: public dashboard + API.
[](LICENSE)
[](https://www.terraform.io/)
[](https://www.getmonero.org/)
`monerometrics` measures and historizes the health of the Monero network: network hashrate,
block time, mempool state, mining-pool distribution and, above all, **chain reorganizations
(reorgs) and orphan blocks**, which most block explorers surface poorly.
The project was born from the **August 2025 Qubic episode**, during which a mining pool paying
miners in its own token approached a majority of the network hashrate, then withheld blocks and
released a longer private chain. On 14 September 2025 that produced an 18-block reorganization at
height 3,499,659 that erased about 36 minutes of history and invalidated 118 transactions, well
past the 10 confirmations everyone treated as final. The public debate lacked reliable, accessible
data to settle it. monerometrics fills that gap with a neutral, verifiable, reorg-aware observatory.
It is **open-source and self-funded**, with no ads and no tracking. The dashboard and the API
are **free and open, permanently**: there is no paid tier, and there will not be one.
> **From a diploma project to a community tool.** monerometrics V1 was built and defended as a
> French professional IT-infrastructure project, and it earned the diploma. With that chapter
> closed, the goal of V2 is to hand the project over to the **Monero community**: fully
> open-source, self-funded, and useful well beyond a classroom.
- **Dashboard**: [monerometrics.net](https://monerometrics.net)
- **Public API**: [api.monerometrics.net](https://api.monerometrics.net) (OpenAPI documented)
- **MCP server**: `https://api.monerometrics.net/mcp` (Streamable HTTP; in the [MCP Registry](https://registry.modelcontextprotocol.io/?search=monerometrics))
- **Tor hidden service**: `6wbhchvavey26lbtscl6w6qg76balycixtsklcggrsslyk4xah6sbbad.onion`
(dashboard + API, no Cloudflare, no IP exposure, see [Access over Tor](#access-over-tor))
---
## What it does
- **Dashboard**: a React SPA organised in four sections. *Consensus and reorganizations*: an
interactive chain-fork visualizer that draws competing branches as a tree, plus reorg statistics
and orphan history. Each block names its pool and how the attribution was established
(proven, claimed or inferred), and merge-mined blocks are flagged. *Mining concentration*: pool
distribution with **largest-pool share and the Nakamoto coefficient**, and the evidence behind
each attribution. *Network state*: hashrate, block-time variance, mempool, emission, and a
**transaction fee estimator** reading the node's four priority tiers live. *Peer-to-peer market*:
Haveno premium over spot on **both sides of the book**, live order-book depth, resting liquidity,
and **premium by payment method**. Available in
**English, French and Spanish**, light/dark themes.
- **Public API**: FastAPI, read-only JSON endpoints grouped by theme (service, network,
chain/reorgs, pools, market). Automatically documented via OpenAPI.
- **Reorg detection**: a Python worker reads each block from a synced node, computes the
indicators and **detects reorganizations** by re-checking a rolling window of recent blocks
against the node, recording their real depth and the transactions they displaced.
## Architecture
A visitor reaches the dashboard or API through Cloudflare, which terminates TLS and applies its
edge protections, then forwards to a hardened **edge** server (nginx + ModSecurity WAF). The
edge serves the static dashboard and reverse-proxies the API to the **k3s** node, where the
application core runs: a Monero node, the indexer, PostgreSQL and the API.
A second, independent path exists: a **Tor hidden service** running on the edge, which bypasses
Cloudflare entirely and serves both the dashboard and the API on a single origin.
```mermaid
flowchart LR
User(["Visitor"]) -->|HTTPS| CF["Cloudflare<br/>DNS · WAF · proxy"]
CF -->|"HTTP/2 origin pull"| Edge
Tor(["Tor visitor"]) -.->|"Tor network"| Onion
subgraph HZ["Hetzner Cloud · private network 10.0.0.0/24"]
Onion["tor daemon<br/>hidden service v3"]
Edge["edge 10.0.0.20<br/>nginx + ModSecurity WAF<br/>static dashboard"]
Onion -.->|"127.0.0.1:8080"| Edge
subgraph K3S["k3s 10.0.0.30 · no public ingress"]
API["FastAPI"]
Worker["Python worker<br/>(indexer)"]
DB[("PostgreSQL 17")]
Node["monerod 0.18<br/>pruned"]
end
Edge -->|"api. proxy_pass"| API
API --> DB
Worker --> DB
Worker -->|JSON-RPC| Node
end
Node <-->|"P2P sync"| Monero(["Monero network"])
API -.->|"XMR price (cached)"| Price(["CoinGecko · Kraken<br/>Haveno (RetoSwap)"])
```
## Access over Tor
The dashboard is also published as a **Tor v3 hidden service**, giving a path to the data that
does not depend on Cloudflare and does not expose the visitor's IP address:
```
6wbhchvavey26lbtscl6w6qg76balycixtsklcggrsslyk4xah6sbbad.onion
```
Design notes:
- **One origin, no leaks.** The hidden service serves the dashboard on `/` and reverse-proxies
the API under `/api`. The SPA detects an `.onion` host at runtime and switches to that
relative path, so **no browser request ever leaves the hidden service** for the clearnet.
A single build serves both clearnet and Tor.
- **No TLS, on purpose.** Tor already encrypts and authenticates end to end, and the `.onion`
address *is* the service's public key. A certificate would add nothing.
- **Not reachable from the internet.** The `.onion` vhost listens on `127.0.0.1:8080` only, so
the Tor daemon is the sole thing that can reach it, no firewall rule, no exposed port. Tor
makes outbound connections only; nothing inbound is opened.
- **No logs.** Every request arrives from `127.0.0.1` (Tor carries no client IP), so access
logging is disabled on this vhost: it would record nothing useful.
- **Discoverable.** The clearnet site advertises the service with an `Onion-Location` header,
so Tor Browser offers to switch automatically.
- **Rate limiting.** Since per-IP limiting is meaningless over Tor, hidden-service traffic is
tagged by nginx and isolated in a dedicated bucket with a much higher ceiling, the API stays
protected from abuse without Tor users evicting each other. The tagging header is stripped on
the clearnet vhosts, so it cannot be forged from the internet.
It is deployed by the `tor` Ansible role (`config/ansible/roles/tor/`).
## Infrastructure
The platform runs on **Hetzner Cloud** (region Nuremberg) as three Ubuntu 24.04 servers on a
private network, each protected by its own Hetzner firewall. Administration is done over a
**Tailscale** (WireGuard) zero-trust mesh; Grafana is reachable over Tailscale only, never from
the internet. The encrypted off-site backups live on a separate cloud (**Oracle Cloud**,
S3-compatible object storage) to isolate failure domains.
```mermaid
flowchart TB
Admin(["Administrator"]) -->|"SSH 22"| Bastion
Internet(["Internet"]) -->|"80 / 443"| Edge
subgraph HZ["Hetzner Cloud (nbg1) · 10.0.0.0/24"]
Bastion["bastion 10.0.0.10<br/>firewall: SSH from admin IP only"]
Edge["edge 10.0.0.20<br/>firewall: 80/443 from internet"]
K3s["k3s 10.0.0.30 + data volume<br/>firewall: no inbound"]
Bastion -. ProxyJump .-> Edge
Bastion -. ProxyJump .-> K3s
end
Mesh["Tailscale mesh<br/>(admin · Grafana)"]
Bastion --- Mesh
Edge --- Mesh
K3s --- Mesh
OCI[("Oracle Cloud<br/>Restic backups<br/>S3-compatible, encrypted")]
K3s -->|"3-2-1 encrypted"| OCI
```
| Server | Type | Public exposure | Role |
|---|---|---|---|
| `bastion` | CX23 | SSH from admin IP only | Sole SSH entry point, ProxyJump to the others |
| `edge` | CX23 | 80/443 from the internet | nginx reverse proxy + ModSecurity WAF, serves the static dashboard |
| `k3s` | CX33 + 128 GB volume | none (outbound only) | k3s cluster: monerod, worker, PostgreSQL, API, OpenBao |
### Running cost
Taken from the Hetzner invoice, per hour of use, excluding VAT:
| Item | Unit price | Monthly (730 h) |
| --- | --- | --- |
| 2 × CX23 (`bastion`, `edge`) | 0.0088 €/h | 12.85 € |
| 1 × CX33 (`k3s`) | 0.0136 €/h | 9.93 € |
| 3 × primary IPv4 | 0.0008 €/h | 1.75 € |
| 128 GB volume | 0.0572 €/GB-month | 7.32 € |
| **Total** | | **31.85 € excl. VAT · 38.22 € incl. VAT** |
Cloudflare, Let's Encrypt, Tailscale and GitHub Actions are on free tiers.
The volume is the item that moves. The pruned Monero blockchain occupies 104 GB of it, while the
entire indexed database of 3.7 M blocks takes 2 GB, about 572 bytes per block.
Growth is measured from the indexed data rather than estimated. Summing the recorded size of every
canonical block gives 186.8 GB for the full chain against 104 GB on disk, so this pruned node keeps
**56 %** of Monero. The chain grew **22.18 GB over the last twelve full months**, which is
**12.35 GB a year on disk**, steady across years (17.5 GB in 2022, 18.3 in 2023, 29.1 in 2024,
22.2 in 2025). At 93 % full, the 128 GB volume saturates in roughly eight months, so the plan is to take it
to 160 GB (+1.83 €/month) and no further, since the same measurement says larger would sit unused.
Storage is driven by the chain, not by indexing: the database adds about 150 MB a year.
Key choices:
- **Defense in depth.** Per-server firewalls, a single SSH entry point, a WAF on the only public
web surface, a zero-trust admin mesh, and a k3s node with **no inbound exposure at all**
(admin and edge reach it over the private network; its public IP is outbound-only, for node
sync and image pulls).
- **HTTP/2 origin behind CloudfLo que la gente pregunta sobre monerometrics
¿Qué es nowi333/monerometrics?
+
nowi333/monerometrics es mcp servers para el ecosistema de Claude AI. Reorg-aware observatory of the Monero network: chain reorganizations, orphan blocks, mining-pool centralization. Public dashboard + API + MCP. Tiene 3 estrellas en GitHub y su última actualización registrada es del 2026-09-18.
¿Cómo se instala monerometrics?
+
Puedes instalar monerometrics clonando el repositorio (https://github.com/nowi333/monerometrics) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar nowi333/monerometrics?
+
Nuestro agente de seguridad ha analizado nowi333/monerometrics y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene nowi333/monerometrics?
+
nowi333/monerometrics es mantenido por nowi333. La última actividad registrada en GitHub es del 2026-09-18, con 0 issues abiertos.
¿Hay alternativas a monerometrics?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega monerometrics en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/nowi333-monerometrics)<a href="https://claudewave.com/repo/nowi333-monerometrics"><img src="https://claudewave.com/api/badge/nowi333-monerometrics" alt="Featured on ClaudeWave: nowi333/monerometrics" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ
The fastest path to AI-powered full stack observability, even for lean teams.