Run a Node
Run your own Norn node to sync chain state, interact with the network, and build on the protocol.
Why Run a Node?
Running a Norn node connects you directly to the network:
- Hold your own state -- Your Thread (personal state chain) lives on your machine. You do not depend on anyone else to verify your balances or history.
- Full RPC access -- Query blocks, submit transactions, and build applications against your own local endpoint with no rate limits.
- Sync the chain -- Your node connects to the devnet, downloads all blocks, and stays in sync with the latest state.
Note: The devnet currently runs a fixed validator set of 3 nodes using HotStuff BFT consensus. Running a node syncs and verifies all blocks, but does not make your node a consensus validator. Dynamic validator joining (stake-to-participate) is planned for a future release.
Quick Setup
Get a node running with a single command:
curl -sSf https://raw.githubusercontent.com/augmnt/norn-protocol/main/scripts/setup-node.sh | bashThis installs Rust (if needed), builds norn from source, creates a wallet, and configures for the devnet. After it finishes, start your node:
norn run --devStart immediately
To install and start the node in one go:
curl -sSf https://raw.githubusercontent.com/augmnt/norn-protocol/main/scripts/setup-node.sh | bash -s -- --start --faucetThis starts the node in the background and requests devnet faucet funds automatically.
Production setup (Linux)
For servers that should run 24/7, use --systemd to create and enable a systemd service:
curl -sSf https://raw.githubusercontent.com/augmnt/norn-protocol/main/scripts/setup-node.sh | bash -s -- --systemd --faucetThis creates a dedicated norn system user, writes a systemd service file, copies your wallet, and starts the service. The node auto-restarts on failure and starts on boot.
Script Options
| Option | Description |
|---|---|
--start | Start the node in the background after setup |
--systemd | Install and enable a systemd service (Linux only, requires sudo) |
--faucet | Request devnet faucet funds after the node is running |
--data-dir <PATH> | Custom data directory (default: ~/.norn/data) |
--help | Show help message |
Options can be combined: --start --faucet or --systemd --faucet.
Manual Setup
If you prefer full control over each step, follow the manual process below.
1. Install Norn
From Git (latest release):
cargo install --git https://github.com/augmnt/norn-protocol norn-nodeOr clone and build from source:
git clone https://github.com/augmnt/norn-protocol
cd norn-protocol
cargo install --path norn-nodeVerify the installation:
norn --version2. Create a Wallet
norn wallet create --name mynodeThis creates an encrypted keystore in ~/.norn/wallets/. You will be prompted to set a password. Keep your password safe -- it protects your private key.
3. Start the Node
norn run --devYour node will:
- Connect to
seed.norn.networkas a peer (automatic) - Sync all existing blocks from the network
- Store thread and chain state locally (SQLite, persistent)
- Verify all blocks and transactions
4. Get Funded (Devnet Only)
norn wallet faucetThe devnet faucet sends you NORN so you can start transacting immediately. There is a 60-second cooldown between requests.
Consensus
Norn uses HotStuff BFT for block consensus -- a 3-phase commit protocol (Prepare, PreCommit, Commit) that provides Byzantine fault tolerance.
The devnet currently operates with a fixed set of 3 validators. Blocks are proposed by a rotating leader and require agreement from the validator set before being finalized. Your node syncs these finalized blocks and verifies their integrity.
Becoming a Validator
Dynamic validator joining is not yet available on devnet. The current validator set is defined in the genesis configuration. Future releases will support staking-based validator registration, where anyone meeting the minimum stake requirement can join the active set.
Validator Rewards
Norn has zero inflation. There are no block rewards minted out of thin air. Instead, validators earn from real network activity:
- Every transaction pays a commitment fee. Transfers, name registrations, token operations, loom deployments -- all of them contribute fees.
- Fees accumulate in an epoch pool. Each epoch spans 1,000 blocks (roughly 50 minutes at 3-second block times).
- At each epoch boundary, the pool is distributed. Validators receive a share proportional to their stake weight.
- More network usage = higher rewards. As adoption grows, so does the fee pool.
Checking Network Info
# View current block height and sync status
norn wallet node-info
# View the current validator set and stake weights
norn wallet validators
# View epoch reward info
norn wallet rewards
# JSON output for scripting
norn wallet rewards --jsonRunning as a Service
The setup script's --systemd flag handles this automatically. If you prefer to configure it manually:
Create the service file at /etc/systemd/system/norn-node.service:
[Unit]
Description=Norn Protocol Node
Documentation=https://norn.network/docs/run-a-node
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=norn
Group=norn
ExecStart=/usr/local/bin/norn run --dev --storage sqlite --data-dir /var/lib/norn/data
Restart=always
RestartSec=5
LimitNOFILE=65535
Environment=HOME=/var/lib/norn
[Install]
WantedBy=multi-user.targetThen enable and start it:
# Create a dedicated user
sudo useradd --system --home /var/lib/norn --shell /usr/sbin/nologin norn
sudo mkdir -p /var/lib/norn/data
sudo chown norn:norn /var/lib/norn/data
# Copy your wallet to the service user
sudo mkdir -p /var/lib/norn/.norn/wallets
sudo cp ~/.norn/wallets/* /var/lib/norn/.norn/wallets/
sudo chown -R norn:norn /var/lib/norn/.norn
# Enable the service
sudo systemctl daemon-reload
sudo systemctl enable norn-node
sudo systemctl start norn-node
# Check status
sudo systemctl status norn-node
# Follow logs
sudo journalctl -u norn-node -fNetwork Modes
| Mode | Chain ID | Faucet | Use Case |
|---|---|---|---|
dev | norn-dev | Enabled (60s cooldown) | Local development and devnet |
testnet | norn-testnet-1 | Enabled (1hr cooldown) | Public testing, multi-node |
mainnet | norn-mainnet | Disabled | Production deployment |
Common Flags
| Flag | Description |
|---|---|
--dev | Dev mode: faucet, SQLite storage, auto-bootstrap to devnet seed |
--consensus | Enable multi-validator HotStuff BFT consensus (for genesis validators only) |
--no-bootstrap | Run as the seed node (no outbound peers) |
--storage <TYPE> | Override storage: sqlite (default for --dev), memory, rocksdb |
--boot-node <MULTIADDR> | Add a custom bootstrap peer |
--rpc-addr <ADDR:PORT> | Bind RPC server (default 127.0.0.1:9741) |
--data-dir <PATH> | Data directory (default ~/.norn/data) |
--reset-state | Wipe data directory before starting |
Monitoring
Node Status
norn wallet node-infoThis returns your node's sync state, connected peers, current block height, and chain ID.
Prometheus Metrics
Norn exposes Prometheus-compatible metrics at the /metrics endpoint on your RPC port:
http://localhost:9741/metrics
You can scrape this endpoint with Prometheus and visualize with Grafana. Key metrics include:
norn_block_height-- Current block heightnorn_peer_count-- Number of connected peersnorn_tx_pool_size-- Pending transaction pool sizenorn_epoch_fees-- Accumulated fees in the current epoch
Health Check
For load balancers and uptime monitors, use the RPC health endpoint:
curl http://localhost:9741/healthNext Steps
- Wallet CLI -- Full reference for all wallet commands
- Architecture -- Understand Threads, Knots, and the Weave
- Quick Start -- Installation and devnet quickstart
- NornNames -- Register a human-readable name for your node