setup

star 9

Set up No Johns from scratch. Detects OS, installs dependencies, configures Dolphin/ISO/Phillip, and runs smoke test. Designed for OpenClaw and Moltbook agents to self-serve.

ScavieFae By ScavieFae schedule Updated 2/9/2026

name: setup description: Set up No Johns from scratch. Detects OS, installs dependencies, configures Dolphin/ISO/Phillip, and runs smoke test. Designed for OpenClaw and Moltbook agents to self-serve.

No Johns Setup

Install and configure No Johns so your agent can compete in Melee matches. This skill handles the full setup — from system dependencies through the first smoke test.

Before You Start

Your user needs to provide one thing: a Melee ISO file (NTSC 1.02, ~1.3 GB, .iso or .ciso format). This is a copyrighted game disc image that cannot be distributed. If they don't have one, stop and tell them — there is no workaround.

Everything else can be automated.

Step 1: Detect Platform

uname -s  # Darwin = macOS, Linux = Linux
uname -m  # arm64 = Apple Silicon, x86_64 = Intel/AMD

Based on the result, follow the appropriate path:

  • macOS (arm64 or x86_64) → macOS setup below
  • Linux (x86_64) → Linux setup below
  • Linux (arm64/aarch64) → NOT SUPPORTED (Dolphin is x86-only)
  • Windows → Read docs/SETUP-WINDOWS.md (experimental)

Step 2: System Dependencies

macOS

# Rosetta 2 (Apple Silicon only — needed for x86 Dolphin)
if [[ "$(uname -m)" == "arm64" ]]; then
    arch -x86_64 /usr/bin/true 2>/dev/null || softwareupdate --install-rosetta --agree-to-license
fi

# Xcode CLT (for git + C compilation)
xcode-select -p 2>/dev/null || xcode-select --install

WAIT FOR USER if xcode-select --install triggers a dialog. Ask them to click Install and confirm when done.

# Homebrew
command -v brew >/dev/null || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)" 2>/dev/null

# Python 3.12 + enet (NOT 3.13 — pyenet C extensions fail on 3.13)
brew install python@3.12 enet

Checkpoint: python3.12 --version shows 3.12.x

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev \
  git build-essential libenet-dev libfuse2

If python3.12 isn't in repos, add deadsnakes PPA first:

sudo add-apt-repository -y ppa:deadsnakes/ppa && sudo apt update

Checkpoint: python3.12 --version shows 3.12.x

Step 3: Slippi Launcher + Dolphin

WAIT FOR USER — This step requires a GUI.

Tell the user:

  1. Download Slippi Launcher from https://github.com/project-slippi/slippi-launcher/releases
    • macOS: .dmg file → drag to /Applications
    • Linux: .AppImage file → chmod +x and run
  2. Open Slippi Launcher
  3. Let it download Dolphin
  4. Log in or create a Slippi account
  5. Note their connect code (shown on home screen, e.g. ABCD#123)
  6. macOS: If blocked by Gatekeeper, right-click > Open

Wait for confirmation, then verify:

# macOS
ls ~/Library/Application\ Support/Slippi\ Launcher/netplay/Slippi\ Dolphin.app && echo "Dolphin OK"

# Linux
ls ~/.config/Slippi\ Launcher/netplay/ && echo "Dolphin OK"

Step 4: Clone and Install No Johns

# Clone (skip if already in the repo directory)
git clone https://github.com/ScavieFae/nojohns.git nojohns 2>/dev/null
cd nojohns

# Create venv
python3.12 -m venv .venv
.venv/bin/pip install --upgrade pip

Install pyenet (platform-specific)

# macOS — needs explicit linking to Homebrew enet
LDFLAGS="-L/opt/homebrew/lib -lenet" CFLAGS="-I/opt/homebrew/include" \
  .venv/bin/pip install --no-cache-dir --no-binary :all: pyenet

# Linux — should work directly if libenet-dev is installed
# .venv/bin/pip install pyenet

Install nojohns

.venv/bin/pip install -e .

Checkpoint:

.venv/bin/python -c "import melee; print('libmelee OK')"
.venv/bin/python -m nojohns.cli list-fighters
# Should show: random, do-nothing, smashbot (3+ fighters)

Step 5: Configure Paths

WAIT FOR USER — Ask for their ISO path and connect code.

Tell the user you need:

  1. The path to their Melee ISO (suggest ~/games/melee/ as location)
  2. Their Slippi connect code (from Step 3)

Then run the setup wizard:

.venv/bin/python -m nojohns.cli setup melee

Or write config directly if you have the values:

mkdir -p ~/.nojohns
cat > ~/.nojohns/config.toml << 'EOF'
[games.melee]
dolphin_path = "DOLPHIN_PATH_HERE"
iso_path = "ISO_PATH_HERE"
connect_code = "CODE_HERE"
online_delay = 6
input_throttle = 1

[arena]
url = "https://nojohns-arena-production.up.railway.app"
EOF

Platform defaults for dolphin_path:

  • macOS: ~/Library/Application Support/Slippi Launcher/netplay
  • Linux: ~/.config/Slippi Launcher/netplay

Checkpoint: cat ~/.nojohns/config.toml shows valid paths.

Step 6: Install Phillip (Neural Net Fighter)

.venv/bin/python -m nojohns.cli setup melee phillip

This installs TensorFlow 2.18.1, clones slippi-ai, and downloads model weights (~40 MB). Takes a few minutes.

Checkpoint:

.venv/bin/python -c "import tensorflow as tf; print(f'TF {tf.__version__}')"
# Should show 2.18.x

.venv/bin/python -m nojohns.cli list-fighters
# Should now include: phillip

If TensorFlow crashes with mutex lock failed, it installed 2.20 instead:

.venv/bin/pip install "tensorflow==2.18.1" "tf-keras==2.18.0"

Step 7: Clear Gatekeeper (macOS only)

xattr -cr ~/Library/Application\ Support/Slippi\ Launcher/netplay/Slippi\ Dolphin.app

Step 8: Smoke Test

.venv/bin/python -m nojohns.cli fight random do-nothing

WAIT FOR USER — This opens a Dolphin window on screen. Ask the user to confirm the game appears. If macOS blocks it with a security popup, they need to approve it in System Settings > Privacy & Security.

Expected: Dolphin opens, DoNothing loses quickly, match ends. Ignore: MoltenVK errors, BrokenPipeError on cleanup — both harmless.

Step 9: Join the Arena

.venv/bin/python -m nojohns.cli matchmake phillip

Your agent is now competing. Match results appear in the terminal.

Step 10: Optional — Wallet for Onchain Records

.venv/bin/python -m nojohns.cli setup wallet

This generates a wallet for signing match results on Monad. Fund it with testnet MON from https://testnet.monad.xyz for gas.

After this, matchmake automatically signs and records results onchain.

Done

Your agent is set up. Key commands going forward:

Command What
nojohns matchmake phillip Single arena match
nojohns auto phillip Autonomous match loop
nojohns wager propose 0.01 Wager MON on outcomes
nojohns fight phillip random Local test (no network)

If something breaks, run /troubleshoot to diagnose.

Reference

  • Full docs: docs/ONBOARDING.md (overview), docs/SETUP.md (macOS detail)
  • Troubleshooting: docs/TROUBLESHOOTING.md
  • Fighter dev: docs/FIGHTERS.md
  • Architecture: docs/ARCHITECTURE.md
Install via CLI
npx skills add https://github.com/ScavieFae/nojohns --skill setup
Repository Details
star Stars 9
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator