Comparisons

Modal runs functions. denv runs a cluster.

Modal is serverless GPU and Python functions. denv keeps GPUs up in your accounts and fails over across providers. Different shape.

Modal is a serverless platform. You write a function, it runs on GPUs Modal schedules, and you can scale toward zero between calls. That is a good fit for sporadic jobs, batch, and teams that want hardware to disappear when the queue is empty.

denv is a cluster that stays up. Replicas are warm because cold-starting a model is minutes, not milliseconds. One measured cold start on an H100 was 12 minutes 46 seconds, then 99 seconds with a warm cache. See the throughput post. If your traffic is a few calls a day, paying for a warm GPU is the wrong trade, and denv will not pretend otherwise. Read serverless for that case.

The one shared data point

In the public tests, Modal appeared as a serving provider for Qwen3.8-27B, not as a verdict on the whole product.

  • In the smaller race that night, Modal’s median output speed was 125 tok/s, against 213 on one H100 running the tuned recipe. Method and caveats are in the 213 post.
  • In the 23-way test the next days, Modal was 206 tok/s on the published board, and the H100 was 241. Benchmark.

One request at a time, one laptop, one day each. Under load the order can change. Those rows are not “denv beats Modal.” They are one model, one setting, published so you can read them.

The structural difference

Modal’s GPUs are Modal’s. denv’s GPUs are yours: your Lambda, Nebius, AWS, Hetzner or colo account. You pay that provider. denv does not sell the hour and does not sell the token. You can kubectl the cluster. You can fail over to a second provider you also pay.

denv is early. Modal is a shipping product with its own docs. Use those docs for anything this page does not state.