Repository navigation
Labels
remote cacheRemote cachingRemote caching
Description
Part of the 2026 Q4 plan (P0).
Goal
Test remote caching in real projects and release it, together with Vite+'s Cloudflare Workers implementation in voidzero-dev/vite-plus-remote-cache-cloudflare.
Roadmap
- Cache tools that maintain their own cache: ☂️ Cache tools that maintain their own cache #929. In trials on real workspaces, most tasks either couldn't be cached or missed on every fresh checkout, so a remote cache would have had little to share.
- Reuse entries across main and pull requests, safely: Reuse remote cache entries across main and pull requests, safely #931.
- Ship: fix A remote cache entry's input paths can point outside the workspace #768 and The remote cache exposes credentials to tasks and env value hashes to the server #781, and document remote caching.
Done
- Configuration, upload and restore: refactor(cache): separate entry validation from local storage #725, test(cache): add in-memory remote cache backend #726, feat(cache): resolve remote cache configuration #727, refactor(cache): expose remote cache settings in plan snapshots #740, refactor(cache): separate enabled remote cache access modes #744, test(cache): run commands against the remote cache test server #754, feat(cache): upload task results to the remote cache #755, feat(cache): restore task results from the remote cache #756, feat(cache): show remote cache hits #757
- Hardening: fix(cache): harden remote cache requests and restores #764, fix(cache): fail the run when a cache hit's outputs can't be restored #770, fix(cache): stop remote cache requests on Ctrl-C and fast-fail #771, feat(cache): use HTTP 404 for remote cache fetch misses #772, fix(cache): treat a cache entry with an overflowing duration as corrupt #786
- Background uploads and HTTP/2: feat(cache): upload to the remote cache in the background and support HTTP/2 #787, test(cache): make stalled-remote-cache a proxy for the remote cache #795
- Uploads authenticated with GitHub Actions OIDC: fix(env): pass through GitHub Actions OIDC variables #691, refactor(cache): let remote cache requests carry auth headers #797, feat(cache): authenticate remote cache uploads with GitHub Actions OIDC #798
- Windows e2e: test(cache): run the remote cache e2e tests on Windows #841, test(cache): emit the stalled milestone only when a test waits for it #844
- Server: moved from feat(remote-cache): add self-hosted public cache server #718 to its own repository, serving voidzero-dev/void (ci: bind voidzero-dev/void to the production cache vite-plus-remote-cache-cloudflare#13 and feat: accept pull request uploads for opted-in namespaces, starting with void vite-plus-remote-cache-cloudflare#17)
Later
- A remote cache hit is never stored back, so a server that shares entries across endpoints can't keep each endpoint's own entries current #924 A remote hit is never stored back
- Remote cache keys always include the OS and architecture, so a task whose outputs are the same on every platform can't share entries between macOS and Linux #926 Keys always include the OS and architecture
- A task output archive larger than the remote cache server's request limit can never be stored #888 Output archives larger than the server's request limit
- Cache keys record absolute pnpm-store paths through
args, so built-in-tool verdicts cannot cross machines #717, Built-in tool tasks miss the cache after the workspace moves #790 Entries that embed machine-specific paths (feat(plan): let synthesized commands declare a tool entry script #789) - Export OpenTelemetry client spans for the native remote cache #906 OpenTelemetry client spans (feat(cache): export OpenTelemetry client spans #907)
All pull requests: label:"remote cache"
Reacted by Aman Mahajan
Metadata
Metadata
Assignees
Labels
remote cacheRemote cachingRemote caching
Type
Fields
Priority
None yet
Start date
None yet
Target date
None yet
Effort
None yet
Activity
args, so built-in-tool verdicts cannot cross machines #717