Connect to a lab
This page shows the ways to reach your lab: VS Code in your browser, SSH, your own editor, and a graphical desktop. Open the lab's page in the dashboard. The connection information panel holds everything below, with a copy button on each row.
VS Code in your browser
Select Code. Enter the code-server password from the connection panel.
You get a full editor with a terminal — press Ctrl + ` to open it.
This needs no VPN and no setup. It is the fastest way in, and the one to try when something else is not working.
SSH
SSH needs a connected device, because labs are private.
ssh <your-username>@<your-lab-ip>
Both values are on the lab's page — the SSH Command row is ready to paste.
Authentication uses your SSH keys. Every enabled key on your account is installed at deploy time.
Port 22 is reachable over the tunnel and is never published to the internet, on any plan.
Your own editor over SSH
Once SSH works, any editor with remote support works.
VS Code Desktop
Install the Remote - SSH extension, then press F1 and choose Remote-SSH: Connect to Host. Add a host entry:
Host mylab
HostName <your-lab-ip>
User <your-username>
JetBrains IDEs
File → Remote Development → SSH, then enter the same host, user and key.
A graphical desktop
Labs that include a desktop show it in the connection panel, with its own URL and a VNC password. Kali is a common example.
Reaching services running in your lab
A web app on a port inside the lab is reachable over the tunnel at
http://<your-lab-ip>:<port> — no configuration is needed, and only you can reach it.
To put it on the internet with a domain and HTTPS, see Publishing ports.
If you cannot get in
| Symptom | Likely cause |
|---|---|
| code-server URL says "Not running" | The lab is not deployed, or its editor did not start. Redeploy. |
| SSH times out | The tunnel is down, or the lab is stopped. Check with the browser editor first. |
| SSH asks for a password | Your key is not installed. Add it, then redeploy. |
| Password is rejected | If you set a custom password, use that one — not the generated value. |
sudo asks for a password you never set | Unless you set one on Preferences, it is the default built from your username — see Passwords. |
| The editor password changed | Without a password of your own, the browser-editor password is regenerated on every deploy. Copy the new one from the connection panel. |
More in Troubleshooting → Cannot connect.
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.
| Ask | What the assistant does |
|---|---|
| “What is the IP and password for my ubuntu lab?” | Finds the lab with list_labs, then reads the address, username and password with lab_info |
| “I can't SSH in — is my lab even running?” | lab_status, then lab_info for the address to use |
| “Is the app on port 3000 in my lab actually answering?” | Makes a request from inside the lab with lab_probe |
| “Run df -h in my lab” | run_command |
For a copy, the assistant must use the instance id that list_labs returns. If you give only the lab name, it reaches your standard lab — a different container with a different address.