Diagnostics First
Before troubleshooting manually, run:
codepiper doctorThis checks your platform, Bun version, tmux version, provider binaries, API key status, and daemon connectivity. Most issues show up here.
Installation Issues
”bun: command not found”
Bun isn’t installed or not in your PATH.
# Install Buncurl -fsSL https://bun.sh/install | bash
# Reload your shellsource ~/.bashrc # or ~/.zshrc”tmux: command not found"
# macOSbrew install tmux
# Ubuntu/Debiansudo apt install tmux
# Fedorasudo dnf install tmux"codepiper: command not found”
If installed via npm:
npm i -g codepiperIf installed from source, make sure you ran bun link in the repository root.
Daemon Issues
”Error: Socket already in use”
Another daemon instance is already running, or a stale socket file exists.
# Check if a daemon is runningcodepiper daemon status
# If nothing is running, remove the stale socketrm /tmp/codepiper.sock
# Start freshcodepiper daemon --web”Web UI shows a blank page”
The web dashboard assets may not be built. Rebuild them:
bun run build:webThen restart the daemon. If using a source install, make sure packages/web/dist/ exists and contains the built files.
Daemon won’t start
Check for port conflicts:
# Check if port 3000 is in uselsof -i :3000
# Check if port 9999 is in uselsof -i :9999Use a custom port if needed:
codepiper daemon --web --port 8080Session Issues
Session stuck in “Starting”
The provider binary might not be found or tmux failed to create the session.
# Verify provider is installedwhich claude # or: which codex
# Check tmux sessions directlytmux list-sessions
# Force kill the stuck sessioncodepiper kill <session-id>Session crashed immediately
Check the session events for error details:
codepiper logs <session-id> --source hookCommon causes:
- Missing API key: API billing mode requires
ANTHROPIC_API_KEYin the environment or an env set - Invalid working directory: The path must exist on the daemon’s machine
- Provider error: The Claude Code or Codex CLI itself failed (check the terminal output)
Can’t attach to session
# Check session statuscodepiper sessions
# If the session exists but attach fails, try via tmux directlytmux attach -t codepiper-<session-id>Terminal output looks garbled
This usually happens with tmux version mismatches. Verify your version:
tmux -VCodePiper recommends tmux 3.0+. If you’re on an older version, upgrade.
Authentication Issues
”MFA locked out”
If you’ve lost access to your authenticator app, use a recovery code to log in. If you don’t have recovery codes:
# Reset MFA from the CLI (requires Unix socket access)codepiper auth reset-mfaThis clears the TOTP secret and revokes all active sessions. You’ll need to set up MFA again on next login.
”Forgot password”
# Reset password interactivelycodepiper auth reset-password
# Or generate a new random passwordcodepiper auth reset-password --generatePassword and MFA resets can only be done from the CLI (Unix socket access), not from the web dashboard. This is a security measure.
”Too many login attempts”
The daemon rate-limits login attempts per IP. Wait a few minutes and try again, or restart the daemon to clear the rate limiter.
Network Issues
WebSocket connection fails
The WebSocket server runs on a separate port (default 9999). Make sure:
- Port 9999 is not blocked by a firewall
- If using SSH tunnel, both ports are forwarded:
-L 3000:localhost:3000 -L 9999:localhost:9999 - If using a reverse proxy, the
/wslocation is configured withUpgradeandConnectionheaders
Dashboard loads but terminal is blank
This means the HTTP connection works but WebSocket doesn’t. Check the browser console for WebSocket errors and verify port 9999 is accessible.
Getting Help
If you’re stuck:
- Run
codepiper doctorand note any failures - Check
codepiper logs <session-id>for error details - Open an issue at github.com/g3ortega/codepiper/issues with the diagnostic output
What’s next
- Installation: System requirements and setup
- Security Model: Authentication and access details
- Remote Access: SSH tunnel and reverse proxy config