Invite-only beta · no card, no billing

Deploy your side project by asking for it.

HobbyDeploy plugs into Cursor, Claude Code or Claude Desktop over MCP. Point it at a GitHub repo and it reads the code, writes the Dockerfile if you do not have one, asks for the env vars only you know, builds and tests it, then puts it live on an HTTPS subdomain of hobbydeploy.com.

No dashboard to learn · automatic SSL · rollback in one sentence

cursor · hobbydeploy mcp
Deploy github.com/me/notes-app with HobbyDeploy.
deploy_project

It is a Next.js 15 app, listens on port 3000, no Dockerfile — I will generate one. It needs DATABASE_URL (I will provision it) and RESEND_API_KEY (I will need that from you).

This is your first project, so it needs a server. That costs money, so here is a one-click approval link: /approve/apr_8f3c…

Approved. The key is re_live_…
set_env_vars

Saved 1 secret (values are encrypted and masked from here on). Build started — attempt 1 of 3.

✅ Live at https://notes-app.hobbydeploy.com

~5 minfrom invite code to a live URL
6 toolsdeploy, status, logs, env, rollback, metrics
3 attemptsthe build tries to repair itself before bothering you
0 filesno YAML, no Dockerfile, no CI config to write

How it works

Four steps, and you only do the first two.

Everything after the setup happens in the chat window you already have open.

  1. 1

    Activate your account

    Sign in with Google and redeem your invite code — an account stays inactive until a code is redeemed, so nothing is provisioned by accident. Then create an API token on your account page. It is shown once and only a hash is stored.

  2. 2

    Connect your assistant

    Paste the token into your MCP config — one command for Claude Code, one JSON block for Cursor and Claude Desktop. Restart, confirm the hobbydeploy server is connected, and you are done setting up forever.

  3. 3

    Ask for the deploy

    “Deploy github.com/me/notes-app.” The repo is analysed and summarised in plain English. If a server has to be created, you get an approval link rather than a surprise. If secrets are missing, you are asked for exactly those.

  4. 4

    Watch it go live

    Build → health check → traffic switch behind Caddy with automatic SSL, and you get https://notes-app.hobbydeploy.com. After that, every push to your default branch redeploys it with no downtime.

What it actually does

The boring, risky parts — handled properly.

Not a wrapper around git push. Analysis, build repair, secret handling, health checks and rollback are the product.

It reads your repo first

An LLM inspects the code and works out the stack, the entrypoint, the port it listens on, and which environment variables it needs. Every answer is validated against a schema before anything runs — no free-text guesswork.

It writes the Dockerfile

No Dockerfile in the repo? One is generated for your stack and used for the build. Your repository is never modified — the Dockerfile lives in the build context, not in your git history.

Failed builds fix themselves

When a build or health check fails, the error is fed back in, the build is patched and retried — up to three attempts. Only if it still fails do you get a message, and it is one paragraph of plain English, not a stack trace.

You are only asked what it cannot know

DATABASE_URL, PORT, NODE_ENV and friends are generated for you. The deployment pauses at AWAITING_ENV only for the values nobody else has — your API keys, SMTP credentials — and your assistant asks for them in chat.

Secrets stay secret

Every value is encrypted with AES-256-GCM at rest, masked in every log line, every API response and every message the assistant sees. A saved secret is never echoed back — not even to you.

Blue-green deploys, one-word rollback

A new release boots and passes its health check before any traffic moves to it, so the running version stays up during the switch. Say "roll it back" and you are on the previous working release.

HTTPS out of the box

Every project gets its own <slug>.hobbydeploy.com subdomain, served by Caddy with automatic Let’s Encrypt certificates. No cert files, no renewal cron, nothing to configure.

Push to deploy

Connect the GitHub App once and a push to your default branch triggers a fresh build and a zero-downtime switch. Private repositories are supported through the same installation.

Nothing costs money without a click

Anything that spends — creating a new server, upgrading a plan — comes back as a one-click approval link instead of happening silently. Your assistant cannot buy infrastructure on your behalf.

MCP surface

Six tools. That is the whole interface.

You never call these yourself — your assistant does, in response to normal sentences. They are listed here so you know exactly what it can and cannot do on your behalf.

deploy_project

Deploy a GitHub repo for the first time, or redeploy a project you already have.

get_deployment_status

Where a deployment is right now: state, queue position, attempt number.

get_logs

The last N lines of build or runtime logs, already secret-masked.

set_env_vars

Hand over the environment variables a paused deployment is waiting for.

rollback

Return a project to its previous working release.

get_app_metrics

The latest CPU, memory and disk sample for a running app.

Notice what is missing: there is no tool that deletes your data, no tool that reveals a stored secret, and no tool that spends money. Those paths go through a human click on the web.

Setup

One config block, once.

Create an API token on your account page, then wire it into your assistant.

Claude Code

claude mcp add hobbydeploy \
  --env HOBBYDEPLOY_API_URL=https://api.hobbydeploy.com \
  --env HOBBYDEPLOY_TOKEN=hd_your_token_here \
  -- npx -y hobbydeploy-mcp

Cursor · Claude Desktop

{
  "mcpServers": {
    "hobbydeploy": {
      "command": "npx",
      "args": ["-y", "hobbydeploy-mcp"],
      "env": {
        "HOBBYDEPLOY_API_URL": "https://api.hobbydeploy.com",
        "HOBBYDEPLOY_TOKEN": "hd_your_token_here"
      }
    }
  }
}

Then just talk: “What is the deployment status of notes-app?”, “Show me the last 100 build log lines.”, “Roll notes-app back.”

Beta, honestly described

Invite-only, because someone pays for the servers.

There is no payment code in HobbyDeploy — no card, no subscription, no invoice. Every app runs on a VPS the platform owner rents, so access is gated by invite codes and quotas instead of a price tag.

  • 1 server per account
  • 2 projects per account
  • 2 concurrent builds
  • 3 deploys in your first 24 hours
  • 14 days idle → paused, never deleted

FAQ

Questions people actually ask.

Do I need to know Docker, YAML or Nginx?

No. If your repo has a Dockerfile it is used; if it does not, one is written for you. Reverse proxy, TLS certificates and process supervision are all handled on the server — there is nothing for you to configure.

What kind of projects can I deploy?

Any web app that listens on a port: Node/Express, Next.js, NestJS, Django, FastAPI, Flask, Spring Boot, Go, Rust and so on. Static sites work too. Desktop apps, mobile builds and anything needing a GPU do not.

What does it cost?

Nothing during the beta. There is no card, no subscription and no billing code in the product at all. Every app runs on a server the platform owner pays for, which is exactly why access is invite-only and quotas are small.

What are the beta quotas?

One server and two projects per account, two concurrent builds, and at most three deploy attempts in your first 24 hours. If you hit a limit, your assistant tells you in plain language instead of failing cryptically.

Where does my app actually run?

On a Hetzner VPS dedicated to your account — Ubuntu with Docker and Caddy, created from a prepared snapshot. Your projects do not share a machine with anyone else’s.

Can I use my own domain?

Not during the beta. Every project is served at <slug>.hobbydeploy.com with automatic SSL. Custom domains are out of scope for the MVP.

What happens if I stop deploying for a while?

A project with no deploys and near-zero traffic for 14 days is paused to keep server costs down. It is paused, not deleted — your next deploy wakes it up.

How do I get an invite code?

Codes go out in small batches during the beta. Ask whoever pointed you here; once you have one, redeeming it on the sign-in page activates your account.

Got an invite code?

Sign in, redeem it, create a token, and ask your assistant to deploy something. First live URL in about five minutes.

Sign in and redeem