Hi Dad.
This page walks you through running two things on your computer: Nyx, a coordinator that runs a small team of AI workers for me, and Elpis, a website that explains medical conditions in plain English.
You can skim section by section. Every command has a copy button. If something breaks, jump to When something goes wrong.
What you need first
- A Mac (preferred) or Windows machine with at least 20 GB free.
- A steady internet connection.
- A Claude account. Two options:
- Claude Code Pro or Max subscription (recommended for Nyx): one monthly fee, no per-token surprise.
- Anthropic API key: pay per use, can be cheaper if you only run a few hours a day.
- A GitHub account using the email I added you with (
ashihundu@rocketmail.com).
Step 1: Install Claude Code
Claude Code is the tool that runs the AI workers Nyx coordinates. Download it from the official site:
- Pick the installer for your OS (Mac DMG, Windows EXE).
- Run the installer. On Mac, drag it into Applications.
- Open it. Sign in with the account that has Pro/Max (or paste your API key when asked).
- When it shows "Ready", you're done with this step. Close it for now.
Step 2: Get the code
Open Terminal (Mac: Spotlight, then type "Terminal"). For Windows, open PowerShell.
Install the GitHub command-line tool
This lets you download my private repos.
brew install gh # Mac winget install GitHub.cli # Windows
Sign in to GitHub
gh auth login
Pick GitHub.com, HTTPS, and "Login with a web browser". Paste the code it shows you into the browser window that opens.
Download both projects
mkdir -p ~/projects cd ~/projects gh repo clone ethanashi/nyx gh repo clone ethanashi/elpis
Two new folders show up: ~/projects/nyx and ~/projects/elpis.
Step 3: Run Nyx safely (months-long mode)
This section gets Nyx running and locked into safe mode: the AI workers can do tasks, but they can't modify Nyx's own source code. That's the setting we want on your machine.
Install dependencies
Nyx uses pnpm to install its libraries. One-time setup:
npm install -g pnpm
Then:
cd ~/projects/nyx pnpm install
This takes 3-5 minutes the first time.
Start Nyx in safe mode
NYX_SELF_UPDATE=off at the front of this command is a hard lock. Even if Nyx tries to unlock itself at runtime, this setting wins. Leave it in.
cd ~/projects/nyx NYX_SELF_UPDATE=off pnpm dev
You'll see logs scroll. When it stops scrolling and says "moderator listening on 3000", it's ready.
Open the control panel (TUI)
In a new Terminal window:
cd ~/projects/nyx/apps/tui-go ./nyx-tui
That's the chat-style interface. Type /help to see what you can do.
Keep it running across reboots (Mac, recommended)
Make Nyx restart automatically if your machine reboots. Save this file to ~/Library/LaunchAgents/com.nyx.moderator.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.nyx.moderator</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/pnpm</string>
<string>dev</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/YOURUSERNAME/projects/nyx</string>
<key>EnvironmentVariables</key>
<dict>
<key>NYX_SELF_UPDATE</key>
<string>off</string>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ThrottleInterval</key>
<integer>30</integer>
<key>StandardOutPath</key>
<string>/Users/YOURUSERNAME/Library/Logs/nyx.log</string>
<key>StandardErrorPath</key>
<string>/Users/YOURUSERNAME/Library/Logs/nyx-error.log</string>
</dict>
</plist>Replace YOURUSERNAME with your Mac username (run whoami in Terminal to see it). Then load it:
launchctl load ~/Library/LaunchAgents/com.nyx.moderator.plist
It'll start automatically every time you log in, and restart on its own if it crashes.
What's keeping it healthy for months
Nyx has these protections built in (you don't have to configure anything):
- Backups of its database run automatically.
- Log rotation prevents the log file from filling up your disk.
- Watchdog timer kills any worker stuck on a single step for too long.
- Crash recovery resumes interrupted plans when the moderator restarts.
- Self-update gate (the
NYX_SELF_UPDATE=offwe set above) keeps the code base frozen.
If you want to pause Nyx without restarting it (e.g. you're going on a trip and don't want it dispatching), type /pause in the TUI. /resume brings it back.
Step 4: Use Elpis
Elpis is already deployed publicly. You don't have to run it locally to use it, just open the live site in any browser.
Live site: the medpal-site deployment (URL in your email).
If you want to run the code locally too, here's how:
cd ~/projects/elpis pnpm install pnpm dev
Open http://localhost:3000 in your browser.
Nyx slash command reference
Every command you can type into the TUI. Grouped the same way as /help.
Plan & dispatch
Submit a goal to the planner. It decomposes the goal and fans out workers in parallel.
When you want a multi-step job done. Bare /plan arms the next message as the brief so you can write a long description.
Same as /plan but every worker runs on Claude opus at max capability with longer timeouts and automatic retries.
When capability matters more than cost. Roughly 5-10x the token usage.
Dispatches one debugging worker on opus. It reproduces, traces, fixes, and commits.
When something is broken and you want a focused fix, not a full plan.
Run a specific queued item immediately.
When you want to jump a queue or the autopilot is paused.
Visibility
One-line snapshot of live workers, spend, and autopilot state.
Quick "is anything happening?" check.
What each live worker is doing right now, plus the next few queued items.
When you want detail, not just a snapshot.
Queue summary: pending and running items.
Planning what to do next.
Per-worker detail (label, session, status).
Debugging a specific worker.
Expand one worker's tile in the sidebar to show its live log.
When you want to watch one job closely.
List or append to ~/.nyx/backlog.md. Autopilot pulls from here when the queue is empty.
Capturing ideas you want Nyx to work on later.
Governance
Auto-merge daemon snapshot. Shows recent merge outcomes.
Checking what got merged while you weren't watching.
Pending push-gate queue. reject-all drains it.
Reviewing what workers want to push.
Decide one pending push-gate. Aliases: a / ok / r / deny.
After reading a worker's diff.
Accounts
List configured Claude accounts and which slot is active.
Multi-account setup.
Switch active account, rotate to the next, or save current credentials into a slot.
When you hit a rate limit on the active account.
Reports current account's email + remaining day quota.
Before starting a big plan.
Session
Snapshot the current chat to ~/.nyx/chats/<name>.json.
Before a risky operation or to keep a useful conversation.
Restore a chat snapshot.
Resuming where you left off.
List saved snapshots, most recent first.
Picking one to /load.
Wipes the visible chat. Server memory stays intact.
When the chat is too long and you want a clean view.
Control
Cascading pause: sleep on + autopilot off. Optional commit checkpoints in-flight work first.
Stepping away for a while. Use /resume to come back.
Inverse of /pause. Re-arms autopilot if it was on at pause time.
Returning to active use.
Hard restart the moderator. In-flight workers are signaled then killed after 5s.
When the moderator is wedged.
Toggle sleep mode without disarming autopilot.
Short pause where you want to keep autopilot armed.
Master switch over all of Nyx's autonomous-modification daemons. OFF means none of them touch the code regardless of per-component toggles.
On your machine, this is locked OFF by the env var. /updates on will return a 409 error, that's expected.
Input / output
Mic input + spoken replies.
Hands-free use.
Open the concierge URL in your browser.
When the chat needs the browser pane.
System
Grouped command list, or deep help for one command.
Anytime you forget what's available.
Exit the TUI. Does not stop the moderator, it keeps running in the background.
Closing the window.
When something goes wrong
"command not found: pnpm"
Run npm install -g pnpm. If npm is also missing, install Node from nodejs.org.
"command not found: gh"
Install the GitHub CLI: brew install gh on Mac, winget install GitHub.cli on Windows.
Terminal says "permission denied" on ./nyx-tui
Run chmod +x ./nyx-tui from the same folder, then try again.
Nyx logs say "moderator listening" but the TUI says "connection refused"
The moderator is on port 3000. Another app might be using it. Quit other dev servers and retry. Or check the log: tail -50 ~/Library/Logs/nyx.log.
"/updates on" returns a 409 error
That is correct. NYX_SELF_UPDATE=off hard-pins the gate to OFF. The runtime is allowed to refuse the toggle. Leave it off.
It's been an hour and nothing happened
Type /status in the TUI. If autopilot is OFF, that's normal. Nyx waits for you to give it work. Type /plan something I want done to dispatch.
Still stuck?
Text Ethan. Include what you typed and what came back.