Cratera
Generated on 15 Sep 2026 from the Cratera catalog page
Cratera is an open-source, self-hosted code execution and judge engine for online judges, programming assessments, AI coding tools, and internal code runners.
Submitted code executes inside Firecracker microVMs using KVM virtualization, a separate guest Linux kernel, and no guest network interface. Cratera provides an authenticated HTTP API, configurable execution limits, bounded job scheduling, and snapshot-based startup.
This image includes Cratera 1.2.0 with a minimal Rust-only guest environment. Additional languages require rebuilding the guest image. A unique API key is generated during initial setup, and the API listens on localhost by default.
Developed and supported by the Cratera project.
Software Included
| Package | Version | License |
|---|---|---|
| Cratera | 1.2.0 | Apache-2.0 |
Creating an App using the Control Panel
Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
Creating an App using the API
In addition to creating a Droplet from the Cratera 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB Cratera Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.
curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"cratera"}' \
"https://api.digitalocean.com/v2/droplets"Getting Started After Deploying Cratera
Getting Started
Connect to your Droplet using your SSH key:
ssh root@YOUR_DROPLET_IPWait for initial provisioning to complete:
cloud-init status --waitCratera may need additional time to prepare its initial microVM snapshot. Check the service status:
systemctl status cratera --no-pagerRun the included Rust example:
cd /opt/cratera && bash examples/submit.sh rustA successful response includes "passed": true and "verdict": "AC".
Configuration and the generated API key are stored in /opt/cratera/.env. Keep this file private. By default, the API listens on 127.0.0.1:3100.
View service logs:
journalctl -u cratera -n 50 --no-pagerTo access the API securely from your computer, establish an SSH tunnel:
ssh -N -L 3100:127.0.0.1:3100 root@YOUR_DROPLET_IPYou can then access Cratera locally at 127.0.0.1:3100.
Access from the Internet
Cratera listens on 127.0.0.1:3100 by default.
For remote access, configure a Cloudflare Tunnel that forwards your hostname to http://127.0.0.1:3100 and protect it with Cloudflare Access service tokens.
Requests must include both the Cloudflare service-token headers and:
Authorization: Bearer <CRATERA_INTERNAL_KEY>Alternatively, you can expose Cratera through a local Caddy or Nginx HTTPS reverse proxy.