Skip to main content

Cannot connect to a lab

Start with the one check that splits the problem in half.

First: does VS Code in the browser work?

Open the lab and click Code. The browser editor needs no tunnel and no keys.

The tunnel

SymptomLikely causeFix
WireGuard shows no handshakeThe tunnel is not activated, or the device was deleted in the dashboardActivate it. Check the device still exists on My Devices; if not, add it again and import the new config.
Handshake, but nothing answersThe lab is stopped, so it has no addressCheck the lab is deployed. Deploy it.
Handshake, but ping to an address failsYou pinged a network or gateway addressPing the lab's own Device IP, shown on its page
It worked yesterday, not todayThe device had no reserved address and was given a new oneDownload the config again, and reserve the address
The lab's address changedStopping a lab releases its addressUse the Device IP on the lab's page now, or request a reserved address in the lab's Preferences
Imported config says the key is invalidYou registered your own public key, and the {private_key} placeholder was not replacedPut your private key into the config on your machine
Works on one network, not anotherThat network blocks outgoing UDPTry another network, such as a phone hotspot, to confirm
Device status stays OfflineThe tunnel is not up on that machineActivate it in the WireGuard app on that machine

SSH

SymptomLikely causeFix
Connection timed outTunnel down or lab stoppedFix the tunnel first — see above
Asks for a passwordYour SSH key is not in the labAdd it under Account Settings → SSH, make sure it is enabled, then redeploy — keys are installed at deploy time
Permission denied (publickey)Wrong user name, or the lab uses a narrower key selectionUse the user from the SSH Command row. Check the lab's Preferences → SSH keys.
REMOTE HOST IDENTIFICATION HAS CHANGEDThe lab was rebuilt, and with it its host keyRemove the old entry: ssh-keygen -R <your-lab-ip>, then connect again
Connection refusedThe lab is running but SSH is notRedeploy. If it persists, check the lab's Activity tab.
SSH is private only

Port 22 is never published to the internet. SSH always goes through the tunnel.

The lab or the browser editor

SymptomLikely causeFix
code-server URL says Not runningThe lab is not deployed, or its editor did not startRedeploy the lab
The editor's password is rejectedYou set a custom code-server passwordUse your own password, not the generated one. Leaving the field empty generates a new one on each deploy.
Browser warns the editor's site is not secureCertificate problem on its domainSee HTTPS not secure
Lab page shows it is pausedPaused labs are frozenClick Resume
Lab is stopped and you did not stop itIdle shutdown, expiry, CPU or memorySee Lab stopped unexpectedly
Lab never reaches deployedThe deploy failedSee Deploy failed

A published app will not load

SymptomFix
502 or 504 error pageThe app is not listening on the port you published, or it is still starting. Check it inside the lab with curl -I http://localhost:<port>.
Your domain shows nothing newDomain and port changes apply only after a redeploy. Use Apply & Redeploy now.
Works over the tunnel, not publiclyThe port is not published. See Publishing ports.

Still stuck

Collect the lab's name, the time it happened, and what you tried, and ask in community chat or contact your administrator.

Do it with an AI assistant

You can also do this by asking an AI assistant connected to your account — see Connect an AI assistant to set one up.

AskWhat the assistant does
“I can't reach my lab over the VPN”list_devices to see when your device last connected, then lab_status and lab_info
“SSH says permission denied”Checks your keys with list_ssh_keys, then redeploys with deploy_lab so they are installed
“My published app will not load”lab_status, lab_probe, then list_domains
Keys and passwords arrive at deploy

A key or password you just added reaches a lab only when it is redeployed. If you set a custom sudo password, use it even though the assistant's lab details still show the default one.

Next