TuployTuploy

Deploy with Claude Code

Claude Code (and any other skill-aware agent) ships with a Tuploy skill that knows how to deploy your project. You paste one prompt and Claude handles install, database, env vars and deploy on its own.

For vibe coders & non-developers~5 minutes

Step 0

What you need

  • A Tuploy account. Sign up at tuploy.com with Discord or Google. New accounts get €1 of welcome credit — your first deploy is free.
  • Claude Code installed and signed in. The same approach works with Cursor, Codex, Gemini, Kiro, Factory, Junie and Letta — the Tuploy skill auto-syncs to all of them.
  • A project to deploy. We use a sample Next.js + Prisma app in this guide, but any framework Tuploy supports works the same way.

Walkthrough

From zero to a live URL

We'll deploy a Next.js 15 + Prisma + tRPC starter that needs a PostgreSQL database. The full flow runs inside Claude Code — you only type one or two prompts.

1

Get the sample on your machine

Open Claude Code in a fresh directory. Either clone the sample with git or ask Claude to scaffold a Next.js + Prisma project for you.

bash
git clone https://github.com/tuploy/nextjs-app-sample.git
cd nextjs-app-sample
2

Install Tuploy from inside Claude Code

In the same Claude Code session, paste this prompt verbatim. Claude will run the installer in your shell and pick up the Tuploy skill automatically.

text
I'd like you to set up Tuploy.

curl -fsSL https://tuploy.com/install.sh | bash

On Windows (PowerShell):
iwr -useb https://tuploy.com/install.ps1 | iex

After install, the skill lives at ~/.claude/skills/tuploy/ and is also synced to other agents (Cursor, Codex, etc.) if you have them installed.

Verify the binary you just installed

The installer downloads the binary from downloads.tuploy.com and verifies its SHA-256 against tuploy.com/api/cli-releases before placing it on disk. Two separate hosts have to be compromised for a tampered binary to slip through. Never pipe installers you don't trust — this is exactly the kind of thing supply-chain attackers target.
3

Ask Claude to deploy

Now type a single instruction:

text
Deploy this project to Tuploy. It uses Next.js with Prisma and PostgreSQL.

Claude reads the skill, scans your project, sees the Prisma schema and reacts:

text
I'll deploy this for you.

First, let me check the project — I can see it's a Next.js 15 + Prisma app
that needs PostgreSQL. Let me list your databases:

  $ tuploy databases
  (no databases yet)

I'll create one for you:

  $ tuploy databases create nextjs-app-db --type postgresql
  ✓ Database "nextjs-app-db" created
    DATABASE_URL=postgres://...

Now deploying:

  $ tuploy deploy . --name nextjs-app --env DATABASE_URL=postgres://...
  ✓ Uploading (2.4 MB)
  ✓ Building... 47s
  ✓ Live at https://nextjs-app.tuploy.app/

No follow-up questions, no env files to edit. Claude returned the live URL — open it in the browser and the app is up.

4

Iterate without leaving the agent

Change code, ask Claude to redeploy. The skill picks up the existing project from .tuploy.json (auto-written in your project root) and reuses the same database, env vars and subdomain.

Add .tuploy.json to .gitignore

The file contains the project slug, app name and database id for redeploys. It's local to your machine.

Core ops

Everyday operations

Once the skill is installed you don't need to remember commands — the agent does. But here are the most common asks so you can reach for them quickly.

Add a new environment variable

Prompt:

text
Set STRIPE_SECRET_KEY=sk_test_... on this project and redeploy.

Claude calls tuploy deploy . --env STRIPE_SECRET_KEY=... — the env var is stored on Tuploy and injected at runtime, overriding any local .env.

Switch databases or create a fresh one

bash
$ tuploy databases
ID             NAME             TYPE        STATUS
db_abc123      nextjs-app-db    postgresql  running

Ask Claude something like "create a MySQL database called prod-mysql" or "switch this project to db_abc123". The skill knows the type flags (postgresql, mysql, mariadb, redis, mongodb) and rewires .tuploy.json in place.

Use your own domain

text
Add app.example.com as the custom domain for this project.

Point a CNAME from app.example.com to tuploy.com and ask Claude to attach the domain. Custom domains require account level 2 (any past top-up qualifies). SSL is handled automatically.

Troubleshooting

When things go sideways

The Tuploy skill is explicit with Claude about what it should and should not do when something fails. Here's what to expect.

Deploy failed because of a missing env var

Claude reads the build logs and proposes the fix — usually a missing --env flag. It will ask you for the value (e.g. an API key) instead of putting a placeholder.

"Plan limit reached"

Your account has hit the concurrent-resource cap for your level. The skill is explicit: it never deletes apps or reuses an existing --name to free a slot. Claude will run tuploy billing to print the upgrade link and wait for your confirmation.

Build error in the framework itself

Tuploy returns structured error output. Claude reads it, identifies the cause (missing dependency, wrong Node version, build script returning non-zero) and proposes a fix in your code — not in the deploy. The skill explicitly forbids working around deploy errors by mutating your project (adding a fake Dockerfile, swapping the runtime, etc.).

Rules the skill enforces

  • Never edits your local .env file.
  • Never deletes apps automatically or reuses --name to overwrite an existing one.
  • Never modifies your project to work around a deploy error.
If Claude ever proposes one of these, push back — that's a sign the skill needs an update.

Where to next

Other ways to deploy