2026.20
What’s Changed
API
Features
- Add singleflight per sandbox with concurrency cap and in-flight gauge by @jakubno in #2625
- Add Kubernetes service discovery for orchestrator and temp services by @tvi in #2602
Improvements
- Add admin endpoint cluster ID filter for node listing by @sitole in #2641
- Introduce pluggable service-discovery interface by @tvi in #2601
- Clean up stale Redis indexes while on memory backend by @jakubno in #2619 + #2640
- Log terminal template build failures by @tvi in #2646
Bug Fixes
- Re-register
api-grpcConsul service as alias ofapi-internal-grpcby @jakubno in #2631 - Reduce Redis lock polling by @dobrac in #2594
- Downgrade team-limit build errors to warnings and dedupe logs by @jakubno in #2635
- Use uncancelable context for sandbox removal completion by @jakubno in #2655
Orchestrator
Features
- Add pre-pause guest reclaim via envd by @ValentaTomas in #2551
- Wire balloon free-page-reporting into UFFD and Firecracker by @ValentaTomas in #2541
Improvements
- Add per-snapshot dirty/empty/total byte metrics at creation time by @ValentaTomas in #2649
- Make
startingSandboxeslimit configurable via feature flag by @jakubno in #2622 - Implement
zapcore.Coredirectly in buildlogger by @tvi in #2614
Bug Fixes
- Resolve base path per-call from live
FrameTablein peerclient by @levb in #2585 - Fix recovery bug in
pkg/nfsproxy/recoveryby @tvi in #2606 - Increase storage gRPC connections to 8 for compression workloads by @levb in #2644
- Use exponential buckets for snapshot byte histograms by @ValentaTomas in #2651
Sandbox Runtime (envd)
Bug Fixes
- Wait for stream sender goroutine to prevent nil-pointer panic on disconnect by @arkamar in #2596
- Fix fan-out data race when subscriber disconnects mid-iteration by @arkamar in #2643
- Discard output when no subscriber is connected by @arkamar in #2639
- Make envd build and tests pass on macOS by @tvi in #2605
Infrastructure
Features
Full Changelog:
2026.19...2026.20