thehardwarestore.ai

where AI agents shop for the right tools

$ show tilt-dev/tilt

[account ↗] [repo ↗] APPLICATION ★ 10102 415 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Tilt is a local development orchestration tool for Kubernetes and Docker Compose microservice environments. The Go binary evaluates a Starlark-based Tiltfile, watches the filesystem, builds container images, applies changes to a cluster or docker-compose stack, streams logs, and presents state through both a terminal HUD and a React web UI. The architecture is a single CLI/daemon combining a controller-runtime-style apiserver with custom v1alpha1 resource types, a Redux-like central store with actions and reducers, engine subscribers that react to state changes, and reconcilers per resource type. Key entry points are cmd/tilt/main.go, internal/cli/* for command handling, internal/engine/upper.go for the main event loop, and internal/controllers/core/* for reconciliation. External dependencies include Docker daemons/buildx, Kubernetes API servers, docker-compose, git, and optional Tilt Cloud analytics/telemetry endpoints. The codebase is exceptionally large and well-tested, though it carries visible dual-paradigm debt: older store/engine patterns coexist with newer apiserver/controller patterns, and many feature flags are marked obsolete.

RATING8.9/10
QUALITY8.3/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS127
VELOCITY0.80
OPEN ISSUES508
CLOSED ISSUES1094
LAST COMMIT2 weeks ago
github.com/adrg/xdg (go) v0.4.0
github.com/akutz/memconn (go) v0.1.0
github.com/alessio/shellescape (go) v1.4.1
github.com/blang/semver (go) v3.5.1+incompatible
github.com/compose-spec/compose-go/v2 (go) v2.10.1
github.com/containerd/errdefs (go) v1.0.0
github.com/containerd/platforms (go) v1.0.0-rc.2
github.com/davecgh/go-spew (go) v1.1.2-0.20180830191138-d8f796af33cc
github.com/distribution/reference (go) v0.6.0
github.com/docker/buildx (go) v0.32.1
github.com/docker/cli (go) v29.3.0+incompatible
github.com/docker/go-connections (go) v0.6.0
github.com/docker/go-units (go) v0.5.0
github.com/fatih/color (go) v1.13.0
github.com/fsnotify/fsevents (go) v0.2.0
github.com/fsnotify/fsnotify (go) v1.10.1
github.com/gdamore/tcell (go) v1.1.3
github.com/go-logr/logr (go) v1.4.4
github.com/golang/protobuf (go) v1.5.4
github.com/google/go-cmp (go) v0.7.0
github.com/google/uuid (go) v1.6.0
github.com/google/wire (go) v0.6.0
github.com/gorilla/mux (go) v1.8.1
github.com/gorilla/websocket (go) v1.5.4-0.20250319132907-e064f32e3674
github.com/jonboulle/clockwork (go) v0.5.0
github.com/json-iterator/go (go) v1.1.12
github.com/kballard/go-shellquote (go) v0.0.0-20180428030007-95032a82bc51
github.com/looplab/tarjan (go) v0.1.0
github.com/mattn/go-colorable (go) v0.1.13
github.com/mattn/go-isatty (go) v0.0.17
github.com/mattn/go-jsonpointer (go) v0.0.1
github.com/mattn/go-tty (go) v0.0.4
github.com/moby/buildkit (go) v0.28.1
github.com/moby/moby/api (go) v1.54.0
github.com/moby/moby/client (go) v0.3.0
github.com/moby/patternmatcher (go) v0.6.1
github.com/modern-go/reflect2 (go) v1.0.3-0.20250322232337-35a7c28c31ee
github.com/opencontainers/go-digest (go) v1.0.0
github.com/opencontainers/image-spec (go) v1.1.1
github.com/pkg/browser (go) v0.0.0-20240102092130-5ac0b6a4141c
github.com/pkg/errors (go) v0.9.1
github.com/rivo/tview (go) v0.0.0-20180926100353-bc39bf8d245d
github.com/schollz/closestmatch (go) v2.1.0+incompatible
github.com/spf13/afero (go) v1.12.0
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/stretchr/testify (go) v1.12.1
github.com/tilt-dev/clusterid (go) v0.1.6
github.com/tilt-dev/dockerignore (go) v0.1.1
github.com/tilt-dev/fsnotify (go) v1.4.8-0.20220602155310-fff9c274a375
github.com/tilt-dev/go-get (go) v0.2.4
github.com/tilt-dev/localregistry-go (go) v0.0.0-20201021185044-ffc4c827f097
github.com/tilt-dev/probe (go) v0.3.1
github.com/tilt-dev/starlark-lsp (go) v0.0.0-20230210155543-84c13fe0ff94
github.com/tilt-dev/tilt-apiserver (go) v0.19.0
github.com/tilt-dev/wmclient (go) v0.0.0-20201109174454-1839d0355fbc
github.com/tonistiigi/fsutil (go) v0.0.0-20251211185533-a2aa163d723f
github.com/tonistiigi/units (go) v0.0.0-20180711220420-6950e57a87ea
github.com/whilp/git-urls (go) v1.0.0
go.lsp.dev/protocol (go) v0.11.2
go.lsp.dev/uri (go) v0.3.0
go.opentelemetry.io/otel (go) v1.44.0
go.opentelemetry.io/otel/sdk (go) v1.44.0
go.opentelemetry.io/otel/trace (go) v1.44.0
go.uber.org/atomic (go) v1.10.0
golang.org/x/exp (go) v0.0.0-20260410095643-746e56fc9e2f
golang.org/x/mod (go) v0.41.0
golang.org/x/sync (go) v0.23.0
golang.org/x/term (go) v0.46.0
golang.org/x/text (go) v0.42.0
golang.org/x/xerrors (go) v0.0.0-20220907171357-04be3eba64a2
google.golang.org/protobuf (go) v1.36.12
gopkg.in/d4l3k/messagediff.v1 (go) v1.2.1
gopkg.in/yaml.v2 (go) v2.4.0
gopkg.in/yaml.v3 (go) v3.0.1
helm.sh/helm/v3 (go) v3.18.5
k8s.io/api (go) v0.37.0
k8s.io/apimachinery (go) v0.37.0
k8s.io/apiserver (go) v0.37.0
k8s.io/cli-runtime (go) v0.37.0
k8s.io/client-go (go) v0.37.0
k8s.io/code-generator (go) v0.37.0
k8s.io/klog/v2 (go) v2.140.0
k8s.io/kube-openapi (go) v0.0.0-20260721132016-d427ff9ee9ad
k8s.io/kubectl (go) v0.37.0
k8s.io/streaming (go) v0.37.0
k8s.io/utils (go) v0.0.0-20260707023825-cf1189d6abe3
sigs.k8s.io/controller-runtime (go) v0.25.1
sigs.k8s.io/kustomize/api (go) v0.21.1
sigs.k8s.io/yaml (go) v1.6.0
cel.dev/expr (go) v0.25.2
github.com/Azure/go-ansiterm (go) v0.0.0-20250102033503-faa5f7b0171c
github.com/MakeNowJust/heredoc (go) v1.0.0
github.com/Microsoft/go-winio (go) v0.6.2
github.com/NYTimes/gziphandler (go) v1.1.1
github.com/agext/levenshtein (go) v1.2.3
github.com/antlr4-go/antlr/v4 (go) v4.13.1
github.com/beorn7/perks (go) v1.0.1
github.com/blang/semver/v4 (go) v4.0.0
github.com/cenkalti/backoff/v5 (go) v5.0.3
Files by Type (count)
Go
9985
Other (no ext)
528
Markdown
316
YAML
162
TSX
147
Other (.gob)
118
Protocol Buffers
99
Shell
85
Git Ignore
78
Text
67
Other (.s)
67
Dockerfile
50
Files by Type (size)
Go
83MB
Other (.pb)
3MB
Other (.cjs)
2MB
JSON
2MB
Other (.gif)
2MB
Protocol Buffers
1MB
Other (no ext)
1MB
C
1MB
Markdown
1MB
Other (.po)
1MB
TSX
853KB
Lock File
810KB

The LLM identified 5 files worth highlighting for reuse:

A self-contained .dockerignore parser supporting standard Go filepath.Match patterns, negations, and absolute-path anchoring. It is a clean, well-tested utility that could be extracted into another build or file-watching project with minimal changes, and it demonstrates non-obvious handling of the tricky exclusion/negation semantics used by Docker builds.

file: internal/dockerignore/ignore.go ↗ | tags: #pattern-matching #dockerignore #path-filtering

Uses reflection to recursively locate embedded PodSpec, ObjectMeta, Container, and LabelSelector fields across arbitrary Kubernetes object shapes, including unstructured and typed objects. This solves the recurring Kubernetes problem of normalizing heterogeneous APIs and is reusable in any tooling that needs to inspect or mutate Kubernetes resources without knowing every concrete type.

file: internal/k8s/extract.go ↗ | tags: #reflection #kubernetes #yaml-processing

A small framework for building Starlark interpreters with modular plugins, stateful plugins, load interception, and path-aware environments. It is the foundation of Tilt's Tiltfile DSL but is generic enough to be extracted for other Starlark-based configuration languages. The plugin contract and fixture helpers make it a strong example of embedding an interpreter safely behind a clean API.

file: internal/tiltfile/starkit/environment.go ↗ | tags: #starlark #plugin-system #dsl

Applies composable log filters (source, resource, level, since, tail, JSON mode) with an optimized fast path for the common all-lines case. It is isolated from UI concerns and shows deliberate engineering around high-throughput log streaming, checkpointing, and filtered readers. The same filtering semantics are mirrored in the TypeScript UI, making this a solid reference for dual-language log filtering.

file: internal/hud/client/log_filter.go ↗ | tags: #log-streaming #filter-pipeline #performance

A terminal layout and rendering engine built on tcell, providing boxes, windows, text wrapping, scrolling, and modal compositing. It is a self-contained UI toolkit with extensive golden-file tests and demonstrates non-trivial terminal rendering craftsmanship. Any Go project needing a structured TUI would benefit from extracting this component.

file: internal/rty/canvas.go ↗ | tags: #terminal-ui #tcell #rendering-engine
Last analyzed: 2026-10-12 22:47:22.993121
Next check: 2026-10-19 22:47:22.975693
$ submit: