ds CLI

Command reference for the ds development utility.

ds CLI

The ds command-line tool for DevStride development. Run ds with no arguments for an interactive menu, or ds help to list all commands.

Command Groups

GroupAWS AuthDescription
ds localNoRun servers, generate code, lint checks
ds dbYesMigrations, import/export, repair, queries
ds cloudYesDeploy, secrets, config, stages, Stripe, admin

Caching

The ds wrapper caches Pulumi stack outputs in .ds/bind/ so commands start quickly. The cache auto-refreshes when:

  • The cache file does not exist (first run, or after ds cloud deploy which clears it)
  • The Pulumi config file (infra/Pulumi.<stage>.yaml) has been modified since the cache was written

You can also manually refresh with ds cloud outputs pull.

Example: You deploy a Cognito change with ds cloud deploy. The deploy clears the cache automatically, so your next ds local run backend picks up the new Cognito user pool ID. However, if a teammate deploys infrastructure to a shared stage (like dev) outside of your machine, your local cache is stale. Run ds cloud outputs pull to fetch the updated values, then restart your backend.

Aliases

ShorthandExpands To
ds backendds local run backend
ds frontendds local run frontend
ds upds cloud deploy
ds downds cloud destroy
ds migrateds db migrate
`ds g <cq>`

Meta Commands

setup

Purpose: Full automated environment setup from zero to running services.

When to use: First-time setup on a new machine or cloud instance. Handles AWS auth, secrets, Neon database provisioning, pnpm install, Pulumi stack creation, pulumi up, config sync, and migrations.

OptionEffect
--stage <name>Set stage name without prompting
--skip-deploySkip pulumi up
--skip-migrationsSkip database migrations
--skip-startSkip starting backend and frontend
Idempotent -- skips steps that are already complete. Safe to re-run.

help

Purpose: Print all available commands, flags, and aliases.

Purpose: Launch the interactive command picker with arrow-key navigation.

When to use: When you cannot remember the exact command name. Same as running ds with no arguments.