Session lifecycle: start, stop, terminate, reboot
What each session status means, what costs you while in it, and when to use which action.
Sessions move through six possible states. Picking the right action (Stop vs Terminate vs Reboot) is the single biggest factor in how much you spend.
The states
PROVISIONING— AWS is launching the instance and our bootstrap is installing xrdp, creating users, etc. Compute billing is OFF during this window. Usually 3-10 minutes.RUNNING— the instance is up and you can connect. Compute billing is ON. Per-second.STOPPING— you clicked Stop, AWS is gracefully halting the instance. ~30-90 seconds. Compute billing is OFF the moment AWS confirms the stop.STOPPED— the instance is halted but the EBS volume persists. You pay ~$0.08/GB/month for the volume (so about $5/month for a 60 GB Starter disk). No compute charge. Click Start to bring it back up.REBOOTING— you clicked Reboot, AWS is power- cycling. ~60 seconds. Compute billing stays ON throughout.TERMINATED— instance and EBS volume are deleted. Zero ongoing charges. Final and irreversible.
Stop vs Terminate — when to use each
Stop when you're done for now but plan to come back. The instance keeps its disk, public IP changes on next start (unless you have an Elastic IP attached), and you pay only for storage in the meantime. Best for daily-driver use cases.
Terminate when you're truly done — finished a CTF, tested an app, shipped a one-off task. Zero ongoing cost. Can't be undone. Best for ad-hoc work.
STOPPED state until you top up or terminate. No surprise overruns.Reboot — when to use it
Reboot for: kernel updates that need a restart, system update that left the desktop in a weird state, suspected memory leak in a tool you ran. The instance keeps its IP and EBS volume. Compute billing stays on through the ~60-second restart.
Don't use Reboot if you just want to free up RAM — use the session's terminal to sudo systemctl restart xrdp or kill the offending process.
Public IPs change on restart
Every session's public IP is AWS-managed by default and changes when you Stop then Start. If you need a stable IP (someone's firewall allowlists you), allocate an Elastic IP from the Elastic IPs page — $5/month while held. The IP follows the session even across stops/starts and you can detach/reattach it freely.
Session credentials are view-once
The RDP password and SSH private key are shown once on creation. We KMS-encrypt them at rest. If you lose them, click Reboot on the session — the bootstrap rerun generates fresh credentials and shows them once again.