Help
Troubleshooting
Fixes for what most often stops the app or the sign-in, from SmartScreen to a busy port.
Windows SmartScreen stops the installer
The installer is not code-signed yet, so Windows SmartScreen may stop it the first time. Choose More info, then Run anyway. It installs for you alone, without admin rights.
The AppImage does not start
The AppImage needs FUSE 2: libfuse2 on Debian and Ubuntu, fuse2 on Arch, fuse-libs on Fedora.
It also needs what Electron needs from the system (GTK 3, NSS, GBM, ALSA), which a desktop has.
Without FUSE, unpack it and start it from the unpacked folder:
./agent-board-<version>-x86_64.AppImage --appimage-extract
./squashfs-root/AppRun
Start squashfs-root/AppRun, not squashfs-root/agent-board: AppRun adds --no-sandbox where the
system blocks user namespaces (as Ubuntu 24.04 does), and without it Electron stops at start.
Or install the .deb, .rpm or pacman package instead, which pulls in what the app needs.
A tool is “missing” when started from a launcher
An app started from the applications menu, a launcher or autostart gets no shell’s PATH. On Linux the
app asks your login shell for it at each start (so what ~/.profile, ~/.bash_profile, ~/.bashrc or
~/.zshrc add counts, mise, nvm and pnpm’s setup included), and adds ~/.local/bin, ~/bin,
~/.local/share/pnpm, ~/.local/share/mise/shims and ~/.volta/bin where they exist.
If a tool is still not found:
- put it on
PATHin one of those login files, not only in a non-interactive one; or - set
PATH(orCLAUDE_BINforclaude) inconfig.env. Its folders go first. Use~/for your home folder;$PATHis not expanded there, and is not needed.
Then restart the app, or press Check again on the warning. A tool installed into a folder that was
not on the board’s PATH needs a restart.
GitHub is “signed out”
The PR queue, CI status and PR tickets need gh signed in to github.com. When it is not, every page
shows a warning. Run:
gh auth login
gh auth status --active --hostname github.com
Signed in means the active github.com account works: another account or host does not count. Then press Check again on the warning. When github.com cannot be reached at all, the board leaves the sign-in state unknown instead of calling it a problem.
Port 47100 is busy
The board uses port 47100 by default. When another program has it (often another board, such as
pnpm start from a checkout), the app says so in a dialog instead of closing. The dialog offers to open
config.env. Either:
-
stop the other board; or
-
set another port in
config.env, then start the app again:PORT=47200
From a checkout, set PORT in .env instead. Agents then connect to the new port: generate their
commands again on Connect agents.
A passkey does not work on another device
A passkey belongs to the address it was made on. Those made on localhost sign in on this machine only;
a phone or another computer needs a passkey of its own, made for the address it uses.
- On this machine, open Settings, Devices, and press Add a device.
- Open the one-time link on the other device (it lasts 15 minutes, and works once).
- Create that device’s passkey there. It is signed in at once.
/setup only works from a browser on this machine: elsewhere it says to finish setup on the host.
Signing in over a tailnet
Other devices reach the board through Tailscale, at https://<machine>.<tailnet>.ts.net/.
- Each device signs in with a passkey made for that tailnet name: one made on
localhostis never taken there, and the other way round. Use Add a device from this machine: its link is on the tailnet name. PUBLIC_ORIGIN(inconfig.env, or.envfrom a checkout) must be that address,httpswith no port or path. The board refuses to start with a value it cannot trust.tailscale servemust point at the board:tailscale serve --bg --https=443 http://127.0.0.1:47100. Funnel must be off: the board refuses every request that comes through Funnel.
Data and security has the whole setup.
Still stuck
Look at the board’s logs, board.out.log and board.err.log, in the data folder’s logs (see
where your data lives). When the board fails to start,
the app’s dialog shows the end of its log and opens the logs folder.