Introduction
Tilt solves the "50 microservices on my laptop" problem. Where Docker Compose stalls and raw kubectl becomes a maintenance nightmare, Tilt turns your Kubernetes manifests into a reactive dev loop — edit a source file, Tilt rebuilds only the affected image, reloads the pod, and streams merged logs to a single UI. It is the standard tool at companies that ship dozens of services into a shared cluster.
What Tilt Does
- Watches source trees and rebuilds images incrementally with BuildKit or Buildpacks
- Live-updates running pods via
docker cp-style file syncs — no full rebuild needed - Aggregates logs, events, and resource status into one web dashboard
- Automates
kubectl apply,helm template,kustomize build, and custom commands - Re-runs tests and linters on save with configurable trigger modes
Architecture Overview
Tilt is a Go binary that reads a Tiltfile — a Starlark script exposing build, deploy, and resource primitives. It launches a long-running controller which reconciles the declared state with Kubernetes, watches filesystem changes with fsnotify, and talks to a local container runtime for builds. The web UI is a separate React app served on a local port and updated over a streaming API.
Self-Hosting & Configuration
Tiltfileis pure Starlark — loops, functions, and imports work as you expectdocker_buildsupportslive_updatesteps that sync files into a running container- Define resource dependencies so backend starts before frontend
- Works with kind, k3d, minikube, and remote clusters via
allow_k8s_contexts - Shared team dev environment:
tilt up --host=0.0.0.0and forward the UI port
Key Features
- Live-update skips full image rebuilds for 10x faster inner-loop iteration
- Resource graph visualizer makes dependency chains obvious
- Built-in support for Helm, Kustomize, ytt, and raw manifests in one Tiltfile
- Extension registry at tilt.dev/extensions for Postgres, cert-manager, Redis, and more
- Snapshot feature captures a dev session for bug reports
Comparison with Similar Tools
- Skaffold — Google's alternative; similar scope, YAML-config-first vs Starlark
- Garden — focuses on full-stack envs incl. tests; heavier config
- Okteto — cloud-hosted dev envs; great UX but not self-hosted
- DevSpace — declarative YAML, similar hot-reload goals
- Docker Compose — simple but Kubernetes-free; no service mesh / operators
FAQ
Q: Does Tilt work with a remote cluster?
A: Yes — whitelist the context with allow_k8s_contexts("my-dev-cluster"). Many teams run a shared dev cluster this way.
Q: How is live-update different from a rebuild? A: Live-update copies changed files into the running pod and optionally runs a restart command, skipping the entire image build/push cycle.
Q: Can I use Tilt in CI?
A: The tilt ci mode runs the Tiltfile once, waits for readiness, and exits non-zero on failure — perfect for smoke tests.
Q: Does Tilt replace Helm? A: No. Tilt invokes Helm (or Kustomize) and adds the dev loop around it.