Skip to content
LogoLogo

Run a node

There are two independent implementations of the same protocol. Both read the same ARREKTA_* environment variables and serve the same REST API.

ImplementationBinaryRole
Rust (node-rs/)arrekta-node-rsproduction node; default on the devnet
Python (core/)arrekta-nodenormative reference; differential check on every block

Build and start

cd node-rs
cargo build --release -p arrekta-node
ARREKTA_NETWORK=regtest ARREKTA_DATA_DIR=./data ./target/release/arrekta-node-rs

The Python node needs the package's node extra (arrekta[node]: FastAPI, Uvicorn and friends); the dev extra above includes it. The consensus library alone, which the Python SDK uses, needs only cryptography.

Release binaries are built reproducibly and co-signed with ML-DSA; verify them as described in Operating nodes → Releases.

Configuration

VariableDefaultMeaning
ARREKTA_NETWORKregtestmainnet, testnet or regtest
ARREKTA_NODE_NAMEarrekta-nodename in logs and metrics
ARREKTA_DATA_DIR./datachain database directory
ARREKTA_API_HOST127.0.0.1REST API bind address
ARREKTA_API_PORTnetwork default (8332 / 18332 / 28332)REST API port
ARREKTA_ADMIN_TOKENunset (admin routes disabled)Bearer token for /v1/admin/*
ARREKTA_CORS_ORIGINSemptycomma-separated allowed origins
ARREKTA_RATE_LIMIT_PER_MINUTE1200per client IP on public routes; 0 disables
ARREKTA_INTERNAL_TOKENunsetrequests with this value in x-arrekta-internal skip the rate limit; give it only to your own backend services (the wallet service), never to a public proxy
ARREKTA_P2P_PORTnetwork default (9333 / 19333 / 29333)P2P port
ARREKTA_PEERSemptycomma-separated host:port peers to keep connected
ARREKTA_MAX_PEERS / ARREKTA_MAX_OUTBOUND64 / 8connection limits
ARREKTA_P2P_PEER_BANDWIDTH_KBPS8192Rust node: bandwidth each peer may use in each direction (KiB/s); over it the connection slows down instead of dropping; 0 = unlimited
ARREKTA_ASSUME_VALIDunsetRust node: a block hash from the release notes; during sync its ancestors skip signature checks (every other rule is checked), only when it is on the most-work chain and buried two weeks deep
ARREKTA_MINEfalserun the built-in solo miner (devnets)
ARREKTA_MINER_ADDRESSemptycoinbase address for the miner and getauxblock
ARREKTA_MINE_INTERVAL_SECONDS0pause between mined blocks
ARREKTA_CHECKPOINT_SEEDunset32-byte hex seed: makes this node a checkpoint signer
ARREKTA_CHECKPOINT_INTERVAL / ARREKTA_CHECKPOINT_DEPTH10 / 6which heights to sign, and how deep
ARREKTA_MEMPOOL_MAX_MB300mempool cap
ARREKTA_LOG_LEVEL / ARREKTA_LOG_JSONINFO / truelogging

Defaults are those of the reference node's settings (core/arrekta_node/config.py); the Rust node reads the same names. The two settings marked Rust node are node policy, not consensus, and only the Rust node has them.

Ports

NetworkP2PREST API
mainnet93338332
testnet1933318332
regtest2933328332

The Compose devnet publishes node-1 on 127.0.0.1:28332 (P2P 29333), node-2 on 28342 and the Python node-3 on 28352. Keep the REST API on localhost or behind the gateway; admin routes must never be public.

Health and monitoring

  • GET /healthz (process up) and GET /readyz (ready to serve) for orchestrators.
  • GET /metrics for Prometheus: height, finality height, reorgs, peers, rejects, replacements. Alert rules and runbooks: Operating nodes → Monitoring.
  • GET /v1/admin/integrity (admin) verifies the chain state.

Admin routes

With ARREKTA_ADMIN_TOKEN set, Authorization: Bearer <token> unlocks /v1/admin/peers (list/connect), /v1/admin/bans, /v1/admin/mine (regtest and testnet) and /v1/admin/integrity (Admin API).

Faster start

A new node can start from a snapshot instead of verifying from genesis; see Snapshots.