KBkilterKB
userdev

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?

GoalCommandWhat stays running
Briefly pause Tilt (keep iterating soon)kilter downCluster, all pods — RAM still used
End of day — free RAM, resume tomorrow with state intactkilter stopNothing running; state preserved on disk
Start over (corrupted state, schema drift)kilter destroyNothing; 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.

Crashes don't set the stopped flag

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 list

Services

kilter catalog                # List all available backing services
kilter add <service>          # Add a service to kilter.yaml and re-render

After 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 credentials

One 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 token

Other

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 version

Common workflows

First-time setupcd 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 stuck

Direct cluster access — kilter never touches ~/.kube/config; each project's kubeconfig is isolated:

KUBECONFIG=~/.cache/kilter/<name>/kubeconfig kubectl get pods -n <name>-dev