Getting Started

Go from a GitHub repo to a running app with database and custom domain.

Want the short version? See the Home Quickstart for a 60-second deploy.

Prerequisites

1. Connect PromptShip

Add the PromptShip MCP server to your AI coding tool. See MCP setup for tool-specific instructions. This lets your AI assistant deploy and manage apps on your behalf.

2. Connect GitHub

Install the PromptShip GitHub App on your account or organization. This gives PromptShip read access to clone your repos during builds.

install_github

Follow the link to authorize the GitHub App. You can scope it to specific repositories.

3. Create an App

Create an app by providing a name and the GitHub repo URL.

create_app(
  name: "my-api",
  github_repo: "https://github.com/your-org/your-repo",
  app_tier: "app-1"
)

app_tier sets the compute resources for your app. See Pricing for what each tier includes.

The response includes platform_env_vars per environment — these are the environment variables PromptShip will inject at deploy time.

Monorepo? If your Dockerfile is in a subdirectory, use configure_app to set root_dir. You can create multiple apps from the same repo with different root directories. See the monorepo example.

4. Add a Dockerfile

Your repo needs a Dockerfile in the root (or in the root_dir you configured). See Dockerfile Templates for ready-to-copy templates for Python, Node.js, Go, and static sites.

Your app must listen on the port specified by the PORT environment variable. See Dockerfile Templates for ready-to-use examples.

5. Deploy

Trigger a deploy from any branch. The default environment is dev.

deploy_app(
  app_name: "my-api",
  branch: "main",
  env: "dev"
)

PromptShip clones your repo, builds the Docker image, and deploys it. You can check progress with get_deploy_status.

Once deployed, your app is live at https://my-api-your-team-dev.promptship.dev.

6. Attach a Database

Add a dedicated PostgreSQL database or Valkey (Redis-compatible) cache to any environment.

attach_postgres(
  app_name: "my-api",
  environment: "dev",
  tier: "pg-1"
)

After attachment, DATABASE_URL is automatically injected on the next deploy. See Environment Variables for details. See Pricing for available Postgres tiers.

attach_valkey(
  app_name: "my-api",
  environment: "dev",
  tier: "valkey-1"
)

Injects REDIS_URL and VALKEY_URL on the next deploy. See Pricing for available Valkey tiers.

7. Set Secrets

Add environment-specific secrets that are encrypted at rest and injected at deploy time.

set_secret(
  app_name: "my-api",
  environment: "dev",
  key: "STRIPE_API_KEY",
  value: "sk_test_..."
)

Secrets are available as environment variables in your app. Redeploy after setting secrets for them to take effect.

8. Custom Domains

Point your own domain to your app. HTTPS certificates are issued and renewed automatically via Cloudflare.

set_domain(
  app_name: "my-api",
  environment: "prod",
  domain: "api.example.com"
)

The response includes DNS records you need to add at your domain registrar:

  1. CNAME record — point your domain (e.g. api.example.com) to the cname_target returned by set_domain
  2. Ownership TXT record — add a TXT record with the txt_name and txt_value from the response to prove you own the domain
  3. SSL validation TXT record — add a TXT record with ssl_validation_txt_name and ssl_validation_txt_value to provision the HTTPS certificate

Once the DNS records are in place, call verify_domain to check verification status. When verified, HTTPS is active and your domain is live.

Next Steps