#!/usr/bin/env bash
set -euo pipefail
REPO="${REPO:-https://github.com/AalbatrossGuy/Skynet.git}"
BRANCH="${BRANCH:-main}"
# DIR="${DIR:-$HOME/.local/share/Skynet}"
DIR="${DIR:-$HOME/Skynet}"
need() {
command -v "$1" >/dev/null 2>&1 || {
echo "[-] '$1' is required but not found in PATH." >&2
exit 1
}
}
info(){ echo "[*] $*"; }
ok(){ echo "✅ $*"; }
need git
need python3
info "Installing to: $DIR"
if [[ -d "$DIR/.git" ]]; then
info "Repo exists. Pulling updates from $BRANCH ..."
git -C "$DIR" fetch --depth=1 origin "$BRANCH"
git -C "$DIR" checkout -q "$BRANCH"
git -C "$DIR" pull --ff-only origin "$BRANCH"
else
info "Cloning $REPO ($BRANCH) ..."
git clone --depth=1 --branch "$BRANCH" "$REPO" "$DIR"
fi
cd "$DIR"
if [[ ! -x ".venv/bin/python" ]]; then
info "Creating virtual environment ..."
python3 -m venv .venv
fi
source .venv/bin/activate
info "Upgrading pip ..."
python -m pip install --upgrade pip
info "Installing requirements ..."
pip install -r requirements.txt
chmod +x scripts/skynet.sh
ok "Install complete."
cat <<'EOS'
Next steps:
- Use './scripts/skynet.sh status' to check processes
- Use './scripts/skynet.sh logs' to tail logs
- Use './scripts/skynet.sh stop' to stop everything
Customize the run by exporting environment variables BEFORE running:
export CLIENTS="A B C"
export ROUNDS=8
export MIN_CLIENTS=3
export CLIENT_SAMPLES=400
export CLIENT_ROUNDS=6
export CLIENT_LR=0.4
Run this command to start Skynet:
./scripts/skynet.sh start
EOS