create-ship-app is the Ship CLI. One command scaffolds a pnpm + Turborepo monorepo, copies your chosen plugins into the repo, and wires a deployment target — ready to run.
npx create-ship-app@latest init resolves to the same CLI. Both run version 3.0.0.The scaffold flow
init walks you through three questions, then builds the project.
Pick a setup
Two shapes — see Architecture for the full picture:
- PostgreSQL + TanStack Start — full-stack. You get
apps/api(Hono + oRPC + Drizzle + PostgreSQL) andapps/web(TanStack Start), with end-to-end types flowing from the API to the client. - TanStack Start web-only —
apps/webonly, noapps/api. Backend logic runs as type-safe server functions inside the Start server. No database, no API to maintain.
Choose plugins
A multiselect — space to toggle, enter to confirm. Each plugin merges into your codebase, the same way
shadcn/ui adds components. See Plugins.| Plugin | What it adds |
|---|---|
auth-starter | better-auth wiring + the web sign-in/up pages and app shell |
admin | Admin dashboard with a user list (requires auth-starter) |
mailer | Resend + React Email templates → @ship/emails |
cloud-storage | S3-compatible file upload (Garage in dev, Wasabi/AWS in prod) |
notes | Notes CRUD — a worked example resource |
ai-chat | Streaming AI chat via @ship/ai (requires auth-starter) |
auth-starter and admin are pre-selected for the full-stack setup. In the web-only setup, plugins that need a backend are hidden.Choose a deployment target
Pick where this ships. The CLI drops the matching CI workflows and infrastructure-as-code into your repo.
| Choice | Docs |
|---|---|
| Digital Ocean Apps | /deployment/digital-ocean-apps |
| Render | /deployment/render |
| Digital Ocean Managed Kubernetes | /deployment/kubernetes/digital-ocean |
| AWS EKS | /deployment/kubernetes/aws |
pnpm start brings up infrastructure, runs migrations, and starts every service.
Naming the project
Pass a directory to skip the name prompt:Skipping the deployment prompt
Pass--deployment (-d) with a shortcut to answer that question up front:
| Shortcut | Target |
|---|---|
do-apps | Digital Ocean Apps |
render | Render |
do-kubernetes | Digital Ocean Managed Kubernetes |
aws-eks | AWS EKS |
Adding plugins later
The CLI doesn’t stop at scaffold time. From inside an existing Ship project, pull a plugin into your repo:install copies the plugin’s resources, routes and packages into your codebase — apps/api/src/resources/..., apps/web/src/routes/..., packages/... — so from then on every line is yours to edit. See Plugins for the full catalog.
Command reference
| Command | Does |
|---|---|
init | Scaffold a new project interactively |
<project-directory> | Scaffold into a named directory |
install <plugin> | Merge a plugin into the current project |
-d, --deployment <type> | Preselect the deployment target |
-v, --version | Print the CLI version |
