Tilt: The Smartest Way to Develop on Kubernetes
Tilt automates your Kubernetes dev workflow with intelligent rebuilds. It understands dependencies between your services, rebuilds only what changed, and shows everything in a beautiful dashboard.
How Tilt Works
Tilt reads a Tiltfile (Python-like syntax) that describes your services. It watches files, detects changes, and does the minimal rebuild needed — often just syncing files instead of rebuilding the entire image.
The Free API (Tiltfile)
# Tiltfile
# Build and deploy a service
docker_build("my-api", "./api")
k8s_yaml("k8s/api.yaml")
k8s_resource("my-api", port_forwards="8080:8080")
# Live update (sync files without rebuilding image)
docker_build(
"my-frontend",
"./frontend",
live_update=[
sync("./frontend/src", "/app/src"),
run("npm install", trigger=["./frontend/package.json"]),
]
)
k8s_yaml("k8s/frontend.yaml")
# Custom commands
local_resource(
"run-tests",
cmd="cd api && go test ./...",
deps=["./api"],
auto_init=False
)
# Helm charts
k8s_yaml(helm("./charts/my-app", values=["values-dev.yaml"]))
# Start Tilt
tilt up
# Open dashboard
tilt dashboard
# Trigger a resource manually
tilt trigger my-api
# Get status via API
curl http://localhost:10350/api/v1alpha1/uiresources
Live Update (No Rebuild)
The killer feature — file sync without image rebuild:
docker_build(
"my-app",
".",
live_update=[
fall_back_on(["requirements.txt"]), # Full rebuild if deps change
sync("./src", "/app/src"), # Sync source files
run("python manage.py migrate"), # Run after sync
]
)
Change a Python file -> Tilt syncs it to the pod in <1 second. No Docker build. No push. No redeploy.
Real-World Use Case
A team of 8 developers working on 15 microservices. Each developer ran tilt up and got the full stack with live updates. Inner dev loop went from minutes to seconds. Team velocity doubled in the first week.
Quick Start
brew install tilt-dev/tap/tilt
tilt up
Resources
Need dev environment automation? Check out my tools on Apify or email spinov001@gmail.com for custom solutions.
Top comments (0)