Kilter creates isolated Kubernetes dev environments using KIND + Tilt + Helm. Each project gets its own cluster, namespace, and port allocations. This page covers every command; for configuration see the kilter.yaml reference.
Lifecycle
kilter up # Create cluster + start Tilt (auto-inits if needed)
kilter down # Stop Tilt, keep cluster running
kilter stop # Stop Tilt + pause cluster (preserve state)
kilter destroy # Delete cluster entirely
kilter restart [service] # Restart a service pod (or all pods)Which one?
| Goal | Command | What stays running |
|---|---|---|
| Briefly pause Tilt (keep iterating soon) | kilter down | Cluster, all pods — RAM still used |
| End of day — free RAM, resume tomorrow with state intact | kilter stop | Nothing running; state preserved on disk |
| Start over (corrupted state, schema drift) | kilter destroy | Nothing; cluster gone, state lost |
kilter up after kilter stop resumes the existing cluster via docker start plus a health wait (~30s) instead of recreating it. This is gated by the cluster.stopped: true flag that kilter stop writes to kilter.yaml.
If the host reboots, Docker crashes, or the cluster is OOM-killed without a clean kilter stop, the flag stays unset and the next kilter up recreates the cluster from scratch — state lost. Take a kilter db snapshot before anything risky.
Observability
kilter ps # List running kilter projects
kilter status # Show pod status in this project's cluster
kilter logs [service] # Tail logs (all pods, or one service)
kilter env # Print all connection strings (localhost URLs)kilter env is the fastest way to find your project's ports — each project gets deterministic, non-conflicting allocations.
Database
kilter db migrate # Run migrations (auto-detects Drizzle/Prisma/GORM)
kilter db seed # Run seed script
kilter db shell # Open a psql session
kilter db reset # Drop + recreate + migrate + seed
kilter db studio # Launch the ORM studio (drizzle-kit studio, prisma studio)Snapshots
Backup and restore database state. By default only the app database is included; --include adds others by name.
kilter db snapshot [name] # Snapshot the app DB
kilter db snapshot post-auth --include kilter_kratos,kilter_hydra,kilter_keto
kilter db restore [name]
kilter db snapshot listServices
kilter catalog # List all available backing services
kilter add <service> # Add a service to kilter.yaml and re-renderAfter kilter add, run kilter up so the cluster picks up the new service.
Artifacts
kilter render # Re-render generated artifacts from config
kilter eject [thing] # Copy runtime artifacts into the project for customization
kilter eject --list # Show what can be ejected
kilter init [name] # Explicitly initialize (kilter up auto-inits)Generated artifacts (Tiltfile, Dockerfiles, Helm values) live in ~/.cache/kilter/<name>/. Once you eject one into your project, kilter stops overwriting it — it's yours to customize.
Production
kilter login --server <url> --token <tok> # Authenticate against kilter-server
kilter deploy --project <org>/<app> \
--registry registry.netshire.com/<scope> # Build, push, deploy via operator + flux
kilter logout # Clear local credentialsOne command from source to a live URL: the CLI builds locally, pushes to a platform registry, and hands off to the in-cluster operator. No kubectl, helm, or flux needed on your machine. Full walkthrough: Deploying to Production.
Admin
Platform operators only.
kilter admin org create <slug> # Register an org
kilter admin cluster register <name> --kubeconfig … # Register a cluster (extracts SA token)
kilter admin project create <name> --org … --cluster …
kilter admin token create --user <email> # Mint a CLI bearer tokenOther
kilter exec <cmd> # Run a command inside the app container
kilter proxy [--port PORT] # Reverse proxy (*.localhost -> app ports)
kilter skills # List installed agent skills
kilter skills clean # Remove generated skills from the project
kilter version # Show versionCommon workflows
First-time setup — cd my-project && kilter up. Auto-detection handles framework, services, port, and dev command.
Debug a stuck pod:
kilter status # See pod states
kilter logs postgres # Check service logs
kilter restart postgres # Restart if stuckDirect cluster access — kilter never touches ~/.kube/config; each project's kubeconfig is isolated:
KUBECONFIG=~/.cache/kilter/<name>/kubeconfig kubectl get pods -n <name>-dev