Quick reference for running and managing a FlameWire (Subnet 97) node with tmux. All commands are copy-paste ready.
# Activate (adjust path if your folder is different)
source ~/miners/FlameWire/venv/bin/activate
# Deactivate
deactivate
## Node Health & Status
### Check if node process is running
pgrep -f node-subtensor > /dev/null && echo "✅ NODE RUNNING" || echo "❌ NODE NOT RUNNING"
# Check sync status once
curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_syncState","params":[]}' \
http://<YOUR_NODE_IP>:9944 \
| jq -r '
.result as $r
| ($r.currentBlock|tonumber) as $c
| ($r.highestBlock|tonumber) as $h
| "current=\($c) tip=\($h) behind=\($h-$c) pct=\(((($c/$h)*100)|floor))%"'
bash
# Check disk usage (node data is in /data)
df -hT /data /
# See which ports are listening
ss -lntp | egrep ':(9933|9944)' || echo "no RPC ports listening"
# Test both ports with curl
for p in 9944 9933; do
r=$(curl -s -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"system_syncState","params":[]}' \
http://<YOUR_NODE_IP>:$p)
[[ -n "$r" && "$r" != "null" ]] && \
echo "HTTP RPC on $p ✓" && echo "$r" | jq '.result' && break
done
# Start a new session
tmux new -s <YOUR_SESSION_NAME>
# Start a log session
tmux new -s <YOUR_SESSION_NAME>-logs 'journalctl -u subtensor -f'
# Detach (leave running)
Ctrl+b then d
# List sessions
tmux ls
# Attach to a session
tmux attach -t <YOUR_SESSION_NAME>
tmux a -t <YOUR_SESSION_NAME>-logs # short form
tmux a # attach to most recent
# Switch sessions (inside tmux)
tmux switch -t <YOUR_SESSION_NAME>-logs
# Rename session
tmux rename-session -t oldname newname
# Kill session
tmux kill-session -t <YOUR_SESSION_NAME>-logs
tmux kill-server # kill all sessions (⚠️ careful)
tmux new -s <YOUR_SESSION_NAME>-logs 'journalctl -u subtensor -f -o cat | egrep "best:|finalized|Syncing|Imported|Error|WARN"'
##### BTCLI IMPORTANT COMMANDS
# Set config (mainnet)
btcli config set network mainnet
btcli config set chain_endpoint wss://entrypoint-finney.opentensor.ai:443
# Set config (testnet)
btcli config set network test
btcli config set chain_endpoint wss://test.finney.opentensor.ai:443
# Show version
btcli --version
# Wallet management
btcli wallet list
btcli wallet overview
btcli wallet balance
btcli wallet balance --all
# Create hotkey
btcli wallet new_hotkey
# Regenerate keys (use mnemonic if needed)
btcli wallet regen_coldkey
btcli wallet regen_hotkey
# Stake / subnet actions
btcli stake add
btcli stake show --all
btcli subnet list
btcli subnet show
btcli subnet register
### START THE FULL ARCHIVE BITTENSOR NODE
# I personnaly switched the base path from var/lib/subtensor to /data because that's where my 3.5TB of storage were
./target/production/node-subtensor --chain ./chainspecs/raw_spec_finney.json --base-path /var/lib/subtensor --sync=full --pruning archive --port 30333 --max-runtime-instances 32 --rpc-max-response-size 2048 --rpc-cors all --rpc-port 9944 --bootnodes /dns/bootnode.finney.chain.opentensor.ai/tcp/30333/ws/p2p/12D3KooWRwbMb85RWnT8DSXSYMWQtuDwh4LJzndoRrTDotTR5gDC --no-mdns --prometheus-external --rpc-external
#.env file configurations ( to store your miner info securely )
1. Create the file
nano ~/.env
# Wallet configuration
WALLET_NAME=centralbank # Coldkey wallet name
WALLET_HOTKEY=flamewire_miner_1 # Hotkey for this node
# Network & Chain
SUBTENSOR_NETWORK=finney # finney (mainnet)
CHAIN_ENDPOINT_MAINNET=wss://entrypoint-finney.opentensor.ai:443
# Node settings
NODE_NAME=doesnt matter
BASE_PATH=/data/subtensor #or your base path
RPC_URL=http://<YOUR_NODE_ID>:9944
P2P_PORT=30333
RPC_PORT=9944
MAX_RUNTIME_INSTANCES=32
RPC_MAX_RESPONSE_SIZE=2048
# API keys (optional)
API_KEY=your_validator_api_key_here
WANDB_API_KEY=your_wandb_key_here
#CTRL + 0 to save
#CTRL + X to exit
load .env file
export $(grep -v '^#' ~/.env | xargs)