Troubleshooting
Black screen in the Mini App
Cause: Screen Recording permission is missing or was revoked.
Fix:
- Open System Settings → Privacy & Security → Screen Recording
- Find
node(orBun) in the list and enable the toggle - Stop the daemon and start it again — permission changes take effect on restart
Swift binary
The screenshot binary is a compiled Swift tool. On some macOS versions you need to add it explicitly. Look for screenshot-bin in the Screen Recording list if node alone doesn't fix it.
Input is ignored (taps do nothing)
Cause: Accessibility permission is missing or was revoked.
Fix:
- Open System Settings → Privacy & Security → Accessibility
- Enable the toggle for
node(orBun) - Restart the daemon
"SESSION_TOKEN required"
The daemon exits immediately at startup. Make sure the token is set before running:
npx remote-claude-daemon@latest --token {{SESSION_TOKEN}}Mini App shows "waiting for daemon…"
The relay is reachable but the daemon has not registered. Start the daemon on your Mac. The Mini App polls every few seconds and will connect automatically.
Stream freezes or stutters
Check the frame rate — the default is 6 fps. Raise it with FPS=15 if your network can handle it.
Check the connection — the daemon logs a reconnect message if the WebSocket drops. A yellow dot in the Mini App means it is reconnecting.
Slow network — bandwidth depends on your screen resolution, how much the picture changes, and the frame rate. An idle screen costs almost nothing (the daemon skips unchanged frames), while continuous full-screen motion at 6 fps can use several Mbit/s. Lower the frame rate or watch on a faster connection if the stream can't keep up. Make sure your Mac has an outbound connection to the relay.
Screenshot binary fails to compile
Run with --debug to see the full swiftc error output:
npx remote-claude-daemon@latest --token {{SESSION_TOKEN}} --debugCommon causes:
- Xcode Command Line Tools not installed — run
xcode-select --install - macOS version too old — requires macOS 12+
Audio is silent or choppy
- Check that the Mac's output device is not muted
- The Swift audio binary requires microphone permission for the input direction — grant it in System Settings → Privacy & Security → Microphone
- Restart the daemon after granting permission
AI tasks don't respond
- Make sure the daemon is running and connected (green dot in Mini App)
- The AI runner uses Claude; check that the
ANTHROPIC_API_KEYenvironment variable is set if you are running a local relay - Long tasks time out after 5 minutes — break them into smaller steps
Daemon crashes immediately on Apple Silicon
If you see SIGILL or a "killed" message, the precompiled Swift binaries may not match your architecture. Delete them and let the daemon recompile:
cd $(npm root -g)/remote-claude-daemon
rm -f screenshot-bin macos-universal-*
npx remote-claude-daemon@latest # recompiles on startStill stuck?
Open Telegram and describe the problem to the bot — include the error message from the daemon logs. You can also file an issue on GitHub.