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
- A GitHub account with a repository
- An AI coding tool: Claude Code, Cursor, or Codex (or the CLI)
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:
- CNAME record — point your domain (e.g.
api.example.com) to thecname_targetreturned byset_domain - Ownership TXT record — add a TXT record with the
txt_nameandtxt_valuefrom the response to prove you own the domain - SSL validation TXT record — add a TXT record with
ssl_validation_txt_nameandssl_validation_txt_valueto 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.