🎵 ₿ from hash to harmony: an orchestrated Bitcoin indexing suite ₿ 🎵
Maestro Symphony
Overview
Maestro Symphony is a fast, mempool-aware, and extensible Bitcoin indexer and API server. It provides a framework for indexing UTXOs, metaprotocols, and any other onchain activity.
Core Features
- mainnet
- testnet4
- regtest
- Runes
- Transaction count by address
- UTXOs by address
- Charms
Endpoints: OpenAPI
Mempool Awareness: Query any endpoint with ?mempool=true to include pending transactions.
Rollback Handling: Always maintains an index of the longest chain.
Prerequisites
- Bitcoin Core (22+) with RPC and P2P access
- Rust (stable)
Optional Tools
Deployment Requirements
- Disk: 4 GB
- CPU: 2 cores
- RAM: 4 GB
- Sync time: ~30 minutes
- Disk: 100 GB
- CPU: 4 cores
- RAM: 12 GB
- Sync time: ~4 days
NOTE: Deployment requirements are subject to change with new indexers and API endpoints.
Configuration
Below is a table describing the main configuration options for maestro-symphony. See the example configuration for context.
| Section | Key/Field | Description | Example Value |
|---|---|---|---|
| root | db_path |
Path to the database directory | "tmp/symphony" |
[sync.node] |
p2p_address |
Host/IP and port for P2P connection to Bitcoin node | "localhost:8333" |
rpc_address |
URL of your Bitcoin node's RPC endpoint | "http://localhost:8332" |
|
rpc_user |
RPC username for your Bitcoin node | "bitcoin" |
|
rpc_pass |
RPC password for your Bitcoin node | "password" |
|
[sync] |
network |
Bitcoin network to connect to (mainnet, testnet4) |
"mainnet" |
max_rollback |
Number of rollbacked blocks from tip that can be handled | 32 |
|
mempool |
Enable mempool awareness | true |
|
utxo_cache_size |
Memory in GB to allocate to UTxO cache (default 40% RAM) | 1.0 |
|
[sync.indexers] |
transaction_indexers |
List of enabled indexers and their options | See example below |
[server] |
address |
Address and port for API server to listen on | "0.0.0.0:8080" |
[storage] |
rocksdb_memory_budget |
Bound RocksDB memory usage in GB (default 25% RAM + ~2% DB) | 3.0 |
See examples to quickly get started.
Deployment
Quick Start with Snapshots
See instructions here.
Running Locally
Optionally, use mise to easily set up your environment:
Build
Sync & Serve
Sync Only
Serve Only
Generate OpenAPI
Install Git Hooks
pre-push hook runs make fmt-check and make lint, matching the CI formatting and clippy checks.
Running with Docker
Start
Stop
Endpoint Examples
Rune UTXOs by Address
|
Rune Info (Batch)
|
Mempool-Aware Rune UTXOs by Address
|
Rune Balance Changes in a Transaction
|
Security
Maestro Symphony has undergone professional security audits to ensure the safety and reliability of the codebase.
Audit Reports
- Thesis Defense Security Audit (September 2025) - Independent security assessment of the core indexing and API components.
For reporting security vulnerabilities, please see our Security Policy.
Contributing
Pull requests and issues are welcome! See the Kanban board for project status and tasks.
License
This project is licensed under the Apache 2.0 License.