The short answer
To deploy an app built with Claude Code, start Claude Code in your project folder and give it one sentence. It reads a short procedure written for agents and asks you to approve one link. Then it does every other step itself. It creates your app, and a Postgres database if your code needs one. It sends your project, watches the build and tells you where it went live.
Say this to Claude Code
Set this project up to deploy on Antideploy. Fetch https://antideploy.com/agent.md and follow it.
You do three things. Paste the sentence. Click Approve on one link. Open the live link at the end.
Claude Code does the rest. It creates the app, creates a Postgres database if your code needs one, deploys, reads the result and fixes what breaks.
Before you start
You need three things, and none of them is an account.
-
A project on your machine. Anything Claude Code built: Next.js, Vite, Express, FastAPI, Flask, Django, Rails, Streamlit or a plain static site, among others.
-
Claude Code, running in that folder. It needs to be able to reach antideploy.com. If it runs in a sandbox that blocks outbound requests, it stops and tells you which domain to allow.
-
A browser, for one link. That is where you approve the connection. Nothing else happens in the browser.
You do not need an Antideploy account first. If you have none, the approval link signs you in with Google or GitHub, creates the account and takes you straight back to Approve. You also do not need a Dockerfile, a GitHub repository or a card.
Step by step
Six steps, and Claude Code does most of them.
-
Open your project in Claude Code
Start Claude Code in the folder that holds your project, the one with your
package.json,requirements.txtorindex.htmlat the top. -
Paste the sentence
Paste the sentence from the top of this page and press Enter. Claude Code fetches agent.md, a procedure written for agents, and starts following it. It may ask you to allow a web fetch and a few commands. Read each one and allow it if it matches what you asked for.
If you want a particular address, say so in the same message, for example "use the address mytool" for
mytool.antideploy.app. If you do not, Claude Code names the app after your folder, and you can rename it whenever you like. -
Approve one link
Claude Code starts a device login and shows you a link and a short code. Open the link and check that the code matches the one in Claude Code. If you are signed out or have no account yet, you sign in with Google or GitHub first and land straight back on the approval screen. Then click Approve.
Open https://antideploy.com/activate?code=WDJB-MJHT Confirm the code reads WDJB-MJHT, then click Approve.The approval screen lists what you are granting, which is to create projects and their databases and deploy them. It also lists what Claude Code cannot do: read back the secrets you set, or delete anything. A code lasts fifteen minutes, and the token Claude Code receives is saved to
~/.antideploy/config.jsonon your machine, never printed in the chat. -
Let Claude Code set the project up
Before it builds anything, Claude Code creates the app on your account. If your code stores data, it also creates a Postgres database and writes the connection details into your
.envfile without printing them. That one database serves your local testing and the live app, so what you tested is what ships.If the project takes uploads, has sign-in or sends email, it can switch those on the same way, with nothing else to sign up for. See file storage, authentication and email.
-
Let it deploy
Claude Code sends your project folder, leaving out
node_modulesand.git, and follows the deploy until it finishes. Every deploy runs the same steps: package the code, build a container, set up the database if one is needed, run your migration command, start the app, check that it responds, and open it to the world. If a step fails, the deploy stops there and says which one. -
Open your link
When the app answers its health check, Claude Code tells you where it is live and on which account. That is the whole job.
my-app is live at https://my-app.antideploy.app on the Antideploy account you@example.comRight after, a security check of the live app runs. It looks for mistakes that leak data, such as keys shipped to the browser or a downloadable
.envfile, and it never holds the deploy up. If it finds something, Claude Code tells you and offers to fix it.
What Antideploy works out from your code
You never describe your app to Antideploy. It reads your files, reports what it found and which file each conclusion came from, and only then builds.
-
The stack and how to start it. Next.js, Vite, Express, FastAPI, Flask, Django, Rails, Go, Java and plain static sites, among others. A
Procfileweb line wins. Otherwise it uses the start script or the framework's usual command. -
The port, the package manager and the version. Including the Node.js or Python version your project asks for.
-
What your app needs. A Postgres database, file storage, an AI provider, email, sign-in, and the environment variables your code reads. It reads the names your code expects, never the values.
-
Code that deploys and then loses data. A SQLite file, uploads written to the app's own disk, a job queue that needs a worker, or a scheduler inside the process. Antideploy flags these before it builds, with the evidence.
That is why there is no Dockerfile to write: the build comes from what Antideploy found. If you already have a Dockerfile at the root of your project, Antideploy uses it. The account rule for that is in the questions below.
What it costs
The Free plan needs no card and has no trial clock. It includes unlimited static sites, 1 live app with a server, 10 successful deploys a month and 1 Postgres database. Failed deploys are free on every plan.
Paid plans are charged in rupees, by UPI or card. Go is ₹399 a month for 3 live apps, Pro is ₹1,999 for 9 and Scale is ₹6,999 for 20. See the pricing page for every limit.
When a deploy fails
Claude Code reads the reason before it does anything else. A failed deploy records a one-sentence reason, the step it stopped at and the end of the build log, and Claude Code reads your app's logs beside it. Then it fixes the project and deploys again.
The most common cause on Antideploy is an app that builds correctly and never starts listening on its port. The platform passes the port in the PORT environment variable, so read it, and bind to 0.0.0.0 so the platform can reach the app:
// Node (Express)
const port = process.env.PORT || 3000;
app.listen(port, "0.0.0.0");
# Python (Flask)
import os
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
Two more things help. A failed deploy never counts against your plan, so you can fix it and try again as often as you need. And when a deploy fails because of the platform and not your code, Antideploy builds the same version again after a few minutes, without counting it or emailing you.
Where a fix is certain from the log alone, such as a package-lock.json that is out of date, Antideploy repairs its own copy of the source and tells you. It never edits your repository.
Shipping the next change
Ask Claude Code to deploy again. It already has a token and an app, so it skips the login and sends the new version.
If you would rather deploy on every push, connect a GitHub repository. Every push to your default branch then builds and deploys, and you can switch that off for an app and deploy only when you ask. See deployments.
A changed environment variable reaches the running app through a redeploy, which builds the last version again with the current variables. See environment variables. Your own domain is added in the console on a paid plan, because an agent cannot attach a domain for you. See custom domains.