The short answer
Antideploy runs almost any web app, API or site. It does not run apps that need to be spread across the world, scale out automatically, stay awake all the time, or use Redis, MySQL or MongoDB that Antideploy provides. It also refuses a short list of things, such as crypto mining.
If your app needs one of these, it is better to use something else. If it does not, you will probably never notice the limits.
How apps run
-
One region. Apps run in Singapore, with Mumbai, Tokyo and Sydney used only when Singapore has no room. The database is in Singapore too. Users far from Asia see slower responses.
-
One instance per app. Each app has 1 shared vCPU and 1 GB of memory (a Java app has 1 dedicated vCPU and 2 GB), and there is no autoscaling and no load balancer.
-
Apps sleep when idle. On every plan. The first request after sleeping took 2.9 to 13.9 seconds in our measurements. There is no always-on option today.
-
Releases are not zero-downtime. The new version replaces the old one on the app's single machine. If the new version does not start, the app is down until a working version is deployed.
-
No preview deployments. One deployed version per project, with no per-branch addresses.
-
No instant rollback. Going back builds the older version again from its source, so it takes as long as a deploy.
What it does not provide
-
Redis, MySQL and MongoDB. Antideploy creates Postgres. For anything else, bring your own and set its credentials as variables.
-
A persistent disk. An app's own disk is erased by every deploy. Use a database for data and a bucket for files.
-
Background workers. Only the web process runs, so a queue consumer or a loop will not stay alive. Use a cron job to call a path on a schedule, or a webhook.
-
Team accounts. There are no team accounts today.
-
Public buckets. Every file is private. Serve it through your app or hand out a signed link.
-
Email from your own domain. Mail leaves from Antideploy's sending domain.
-
Your own domain on Free. Free accounts get an address ending in
.antideploy.app. Your own domain starts on Go.
Limits on size and time
- A pushed folder or archive can hold up to 4,000 files and 28 MB. A larger project deploys from GitHub
- A scheduled job runs at most every 5 minutes, three jobs per app, and each run is given up after 60 seconds
- Every request passes through Cloudflare's network, which applies its own limits, such as a 100 MB request body
- Email is for your app's own users: 20 addresses a day on Free, up to 2,000 on Scale
- PHP runs only through your own Dockerfile
What it will not host
Antideploy refuses cryptocurrency mining, remote desktops, remote shells and tunnels, open proxies and VPNs, and malware, phishing and spam. The project is stopped before anything builds, and the message names the file that matched. The full list is on the acceptable use page.
What to do if you need one of these
- You need Redis, MySQL or MongoDB. Use a hosted one from another provider and set its connection string as a variable.
- You need a background worker. Move the work into a route and call it with a scheduled job, or trigger it from a webhook.
- You need a global audience. Use a platform that runs your app in many regions.
- You need apps that stay awake. Use a platform that offers always-on instances.