ScriptsApr 15, 2026·3 min read

Tilt — Multi-Service Development for Kubernetes

Kubernetes dev loop that watches source, rebuilds images, live-updates pods, and shows it all in one dashboard. The standard tool for the 50-microservice laptop problem.

TL;DR
Tilt automates the Kubernetes dev loop: watch source, rebuild, live-update pods, all in one dashboard.
§01

What it is

Tilt is a development environment tool for Kubernetes that automates the inner dev loop for multi-service applications. It watches your source code, rebuilds container images, live-updates running pods, and displays logs and status for all services in a single dashboard. When you save a file, Tilt detects the change, rebuilds only what changed, and syncs it to the cluster in seconds.

Tilt targets teams running multiple microservices on Kubernetes who struggle with the slow rebuild-push-deploy cycle during local development. It solves what is commonly called the '50-microservice laptop problem.'

§02

How it saves time or tokens

The traditional Kubernetes dev loop involves editing code, building a Docker image, pushing it to a registry, updating the deployment, and waiting for the pod to restart. This can take minutes per change. Tilt's live-update feature bypasses the full rebuild by syncing changed files directly into the running container, reducing the feedback loop to seconds. The unified dashboard eliminates the need to run kubectl logs in multiple terminals.

§03

How to use

  1. Install Tilt:
brew install tilt-dev/tap/tilt
  1. Create a Tiltfile in your project root:
# Tiltfile
docker_build('my-api', './api')
k8s_yaml('k8s/api-deployment.yaml')
k8s_resource('api', port_forwards=8080)

docker_build('my-frontend', './frontend')
k8s_yaml('k8s/frontend-deployment.yaml')
k8s_resource('frontend', port_forwards=3000)
  1. Run Tilt:
tilt up

Open the dashboard at http://localhost:10350 to see all services, logs, and build status.

§04

Example

A Tiltfile with live-update for fast iteration:

docker_build(
  'my-api',
  './api',
  live_update=[
    sync('./api/src', '/app/src'),
    run('npm install', trigger='./api/package.json'),
  ]
)
k8s_yaml('k8s/api.yaml')
k8s_resource('api', port_forwards=8080)

With this config, editing a source file syncs it directly into the container without rebuilding the image.

§05

Related on TokRepo

§06

Common pitfalls

  • Live-update requires the container to support file syncing (e.g., a running process that watches for file changes); statically compiled binaries need a rebuild step
  • Tilt's Tiltfile uses Starlark (a Python dialect), not standard Python; some Python features like imports are not available
  • Running many services locally on Kubernetes requires significant CPU and memory; consider using k3d or minikube with adequate resource allocation

Frequently Asked Questions

Does Tilt work with local Kubernetes clusters?+

Yes. Tilt works with minikube, kind, k3d, Docker Desktop Kubernetes, and any other local cluster. It also supports remote clusters, though live-update performance is best with local clusters.

What is a Tiltfile?+

A Tiltfile is a configuration file written in Starlark (a Python dialect) that tells Tilt how to build, deploy, and manage your services. It defines Docker builds, Kubernetes manifests, port forwards, and live-update rules.

How does live-update differ from hot-reload?+

Hot-reload is a framework feature (like React's HMR) that updates code within a running process. Live-update is a container feature that syncs files into a running container. They can work together: Tilt syncs the file, and the framework's hot-reload picks up the change.

Can I use Tilt without Kubernetes?+

Tilt is primarily designed for Kubernetes workloads. For Docker Compose projects, Tilt has experimental support but it is not the primary use case. If you do not use Kubernetes, tools like Docker Compose with watch mode may be simpler.

Is Tilt free?+

Yes. Tilt is open source under the Apache 2.0 license. There is no paid tier. The project is maintained by the Tilt team (now part of Docker).

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets