// challenge instances for CTF organizers
Don't be the Bad CTF.
Every instance a team starts gets its own microVM, and your docker-compose.yml runs inside it unchanged. We operate the servers in Seoul, Tokyo, Frankfurt and Atlanta.
- isolation
- 1 VM per instance
- billing
- 10-minute ticks
- integration
- CTFd, REST API
01 right after the start
Most outages happenin the first minutes.
A made-up timeline, pieced together from public postmortems and our own experience. It's roughly what happens when every team's instance runs on a single server.
- Organizers post "good luck, have fun" in #announcements
- Challenges unlock. 812 teams press "start instance" in the same second
- The one docker host hits load average 97. SSH stops answering
- The OOM killer picks the postgres behind web/blog-v2. Of course it does
- #general: "is chall down?" (×140)
- Someone reboots the box. Every running instance, and every half-written exploit, is gone
- Top CTFtime comment: "bad ctf, infra died". You can guess how the weight vote went
$ diff bad-ctf.yml chall.run.yml
+1 microVM per instance
A fork bomb in one instance doesn't touch any other, not even the same team's next challenge. Each VM has its own kernel and cgroup limits, and no VM shares the docker socket.
+Capacity reserved for your event
With a Reserved plan, memory and vCPU on specific hosts are set aside for your start time. No other customer's instances are placed on those hosts.
+Queue instead of failures
Requests above capacity go into a queue rather than failing. CTFd shows players their position and estimated wait.
+TTL and automatic cleanup
You set the lifetime per challenge: 10 minutes for a quick one, a few hours for a long one, with or without player extensions. Expired instances are cleaned up, so forgotten ones don't sit on memory until 3 AM.
+Egress limits per VM
One team running a brute-force script won't slow down the network for the other 811.
02 platform
Everything your CTF infra needs,already running.
A microVM per instance
Every instance a player starts gets its own microVM. Separate kernels, so one instance never affects another.
read more →02Your compose files and CTFd
Push your docker-compose.yml as is, and connect through the CTFd plugin or the REST API.
read more →03Close to every player
Instances start in whichever of Seoul, Tokyo, Singapore, Frankfurt or Atlanta is closest to the player. Made for open CTFs with teams from everywhere.
read more →04Holds up at 09:00
Images are prebuilt on every server, failed servers are replaced right away, and an engineer is on call 24/7.
read more →05Flag sharing and AI audits
Per-team logs surface flag sharing and automated AI play, handed to organizers with the evidence.
read more →06Small events are free
Approved events get 30,000 credits free. Large ones still cost less than running your own servers on AWS.
read more →03 pricing
Credits, countedin 10-minute ticks.
Usage is charged in credits per 10-minute tick, with no base fee. Approved events get free credits, so small CTFs cost nothing, and large ones still come in under running your own servers on AWS or Google Cloud.
04 community support
Free instancesfor small CTFs.
Every approved event gets 30,000 credits free, and student and non-profit events get up to $250 more each. We fill the credit pool together with our sponsors.
- 30,000
- free credits for every approved event
- $250
- extra for student and non-profit events
- $0
- expected cost of a campus-sized CTF
Early access is paused.Reach us by email.
$ contact
We're not taking early-access requests while we get the beta ready. For event plans or any questions, send us an email.
support@quickmetal.kr send an email →