#!/bin/bash
# Wirecore Relay - Start Script
# Starts the relay server on port 9000 using Node v22
#
# Usage:
# ./start-relay.sh # Start with bridge enabled (default)
# ./start-relay.sh local # Start in local-only mode (no bridge)
set -e
cd "$(dirname "$0")/.."
NODE_BIN="$HOME/.nvm/versions/node/v22.20.0/bin/node"
RELAY_SCRIPT="relay/wirecore-relay.js"
LOG_FILE="/tmp/wirecore-relay.log"
PID_FILE="/tmp/wirecore-relay.pid"
# Check for local mode
if [ "$1" = "local" ] || [ "$ENABLE_BRIDGE" = "false" ]; then
export ENABLE_BRIDGE=false
MODE_TEXT="LOCAL MODE (no bridge to wiredove.net)"
else
export ENABLE_BRIDGE=true
MODE_TEXT="BRIDGE MODE (forwarding to wiredove.net)"
fi
# Check if Node v22 exists
if [ ! -f "$NODE_BIN" ]; then
echo "❌ Error: Node v22.20.0 not found at $NODE_BIN"
echo "Install with: nvm install 22.20.0"
exit 1
fi
# Check if already running
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "⚠️ Wirecore relay already running (PID: $PID)"
echo "Run ./wirecore-relay/stop-relay.sh first"
exit 1
else
# Stale PID file
rm -f "$PID_FILE"
fi
fi
# Check dependencies
if [ ! -d "node_modules/hyperbee" ]; then
echo "⚠️ hyperbee not installed, installing..."
npm install hyperbee
fi
echo "🚀 Starting Wirecore Relay..."
echo " Mode: $MODE_TEXT"
echo " Node: $NODE_BIN"
echo " Script: $RELAY_SCRIPT"
echo " Log: $LOG_FILE"
# Start relay in background
PORT=9000 ENABLE_BRIDGE="$ENABLE_BRIDGE" "$NODE_BIN" "$RELAY_SCRIPT" > "$LOG_FILE" 2>&1 &
PID=$!
# Save PID
echo $PID > "$PID_FILE"
# Wait a moment for startup
sleep 2
# Check if still running
if ps -p "$PID" > /dev/null 2>&1; then
echo "✅ Wirecore relay started (PID: $PID)"
echo ""
echo "Check status:"
echo " ./wirecore-relay/status-relay.sh"
echo ""
echo "View logs:"
echo " tail -f $LOG_FILE"
echo ""
echo "Test locally:"
echo " curl http://localhost:9000/stats"
else
echo "❌ Relay failed to start. Check logs:"
echo " cat $LOG_FILE"
rm -f "$PID_FILE"
exit 1
fi