The docs. All of them.
The product is small on purpose, so the manual fits on one page. Paste a Git URL, it builds, it's live — you would have figured that out without us. This page covers the part people actually get wrong.
The part you already guessed
GitHub, GitLab, Bitbucket, Codeberg or any Git URL. The framework is detected, the build streams live, and a failed build comes back with a diagnosis instead of a shrug. There is no step two. Included here for completeness.
Every commit keeps its URL. Exactly one is canonical.
Deploy a commit and it gets a URL of its own — your-app-a1b2c3.kad.dev — which keeps working for as long as the deploy exists. Deploy ten commits, keep ten URLs.
One commit at a time is canonical: it also answers on the bare host, your-app.kad.dev. Promote makes a commit canonical; demote takes that back. There is no separate rollback feature, because promoting an older commit is the rollback.
Static assets are cached at the CDN edge for a few hours. Promoting or changing a commit's visibility clears that cache automatically — and if your framework fingerprints asset filenames (Vite, Next.js and friends do by default), you were never going to notice anyway.
New deploys are private. Yes, even the link you just sent.
302 → /unauthorized to everyone who is not you. You are signed in, so to you it looks fine. Your client is not, so to them it looks broken. This is our most reported non-bug.Every fresh deploy starts private. Before you share a link, expose that commit — select it in the graph, then Actions → Make public — or turn on the project's default-public setting and never think about it again.
Postgres and a bucket
One click each, from the project page. Postgres injects DATABASE_URL; storage injects S3_ENDPOINT, S3_BUCKET and credentials. Read them from the environment at runtime — nothing to copy anywhere. Both run in the EU, next to your app.
Custom domains
Settings → Domains. Add www.your-client.com, create the CNAME the UI shows you, and TLS issues itself. The .kad.dev host keeps working alongside. That is the entire feature.
Or let an agent read this instead
kad.dev speaks MCP. Point Claude — or any MCP client — at kad.dev/mcp and it can create projects, deploy, expose, promote and read build logs, on your account, within your limits. It gets the same rules you just read, as tool descriptions.
Connect an assistant
- In your MCP client, add a remote server (Claude: Settings → Connectors → Add custom connector) with the URL
https://kad.dev/mcp. - Sign in with your kad.dev account when the client asks. The consent screen lists the two scopes:
mcp:read(status, logs, files) andmcp:deploy(create, deploy, promote, settings). - Ask for something concrete: "deploy this folder to kad.dev", "what is the status of my app", "show me the last build log". Read tools run without a prompt; tools that change production ask you first.
To disconnect, remove the connector in your client, or revoke its grant from the key icon in the dashboard header, under Chat connectors. Nothing in a conversation is stored on kad.dev: a tool call carries only its arguments, and the answer carries only the project data it names.