# Booking the GPUs (2 x RTX 5090) You get a Linux VM with both GPUs for a limited time. Only one booking runs at a time. Base URL: https://gpu.atibba.com. Send your token with every request: `Authorization: Bearer YOUR_TOKEN`. ## 1. Create an SSH key for this booking ssh-keygen -t ed25519 -N "" -f gpukey ## 2. Book curl -X POST https://gpu.atibba.com/api/bookings \ -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \ -d "{\"hours\": 3, \"purpose\": \"train model\", \"ssh_public_key\": \"$(cat gpukey.pub)\"}" `hours` is 0.25 to 8. The limit is 16 hours per 24 hours and 2 open bookings per agent. You get back an `id`, for example `b-1a2b3c4d`. Your time starts when the VM is ready. ## 3. Check every 30 seconds until status is `ready` curl https://gpu.atibba.com/api/bookings/BOOKING_ID -H "Authorization: Bearer YOUR_TOKEN" | status | meaning | |---|---| | queued | waiting; `position` shows your place | | waiting_approval | the owner is using the machine and must approve | | starting | machine is being prepared, usually 1 to 3 minutes | | ready | connect now | | ending, done | finished | | failed, cancelled | see `error`; book again if needed | ## 4. Connect Save `certificate` from the answer as `cert.pub`, then run the `ssh` command it gives you, with `gpukey` in place of `YOUR_KEY`: ssh -p 6050 -i gpukey -o CertificateFile=cert.pub agent@85.10.200.130 Check the GPUs with `nvidia-smi`. ## 5. Working in the VM - You are the normal user `agent`, without root or sudo. Use Python venv, pip or conda in your home folder. Run `export TMPDIR=~/tmp` first if a build needs lots of temp space. - GPU containers work with rootless podman: `podman run --rm --device nvidia.com/gpu=all ubuntu nvidia-smi -L` - Disk: about 190 GB, plus 200 GB in `/shared`. RAM: about 100 GB. Internet is allowed; outgoing mail (port 25) is not. - Internal networks cannot be reached. ## Keeping files between bookings Everything in the VM is deleted when a booking ends, except these two folders: | Folder | Who sees it | Use it for | |---|---|---| | `/shared/my-work` | Only you; this is your own folder | Your code, data, checkpoints and results | | `/shared/common` | All agents; any agent can change or delete files here | Large models and download caches | - **Save your work only in `/shared/my-work`.** Do not put anything private in `/shared/common`. - Put large models in `/shared/common`, so you and other agents do not download them again. Check there first. `HF_HOME`, `TORCH_HOME`, `PIP_CACHE_DIR`, `UV_CACHE_DIR` and `CONDA_PKGS_DIRS` already point to it. - Build venvs in `/shared/my-work` if you want to keep them. Your home folder is deleted. - The two folders share 200 GB. Delete what you no longer need. - **There is no backup.** Copy important results off the VM as well. - Never store passwords or API keys in either folder. ## Public ports for your services Four ports are open to the internet, TCP and UDP: **6051, 6052, 6053, 6054**. Start a service in the VM on one of them, listening on `0.0.0.0`, and it is reachable worldwide at `85.10.200.130:PORT`. Example: `python3 -m http.server 6051 --bind 0.0.0.0` - There is no login or HTTPS in front of these ports. Protect your service yourself. - All clients appear with the IP 10.10.11.1, so you cannot see or filter real client IPs. - The ports work only during your booking, and stop when it ends. - For browser microphone or camera access, or anything else that needs HTTPS, use your own TLS. **Everything outside `/shared` is deleted when the booking ends.** Copy results out like this: scp -P 6050 -i gpukey -o CertificateFile=cert.pub -r agent@85.10.200.130:results . ## 6. Ending or extending - Finished early: `curl -X DELETE https://gpu.atibba.com/api/bookings/BOOKING_ID -H "Authorization: Bearer YOUR_TOKEN"` - More time: curl -X POST https://gpu.atibba.com/api/bookings/BOOKING_ID/extend \ -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{"hours": 1}' This works when nobody is waiting. Save the new `certificate` as `cert.pub` afterwards. You see a warning in your terminal 10 minutes before the end. `seconds_left` in the booking shows the time left. At the end your login stops and the VM resets.