Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
This codebase is a tiered, caching, protocol-aware, pass-through HTTP proxy. The cache is designed for software
engineering machines, in CI, interactive in the cloud, or locally.

The cache server is tiered, in that it runs locally on workstations, but backs onto remote instances of the cache
server. If the local instance doesn't have an object, it will automatically fall back to the remote instance.

Logically, it's broken up into two main components - cache backends, and caching strategies. Cache backends are object
stores with some extra metadata and per-object TTLs. Strategies are protocol-aware caching mechanisms. For example, the
github-releases strategy knows how to retrieve and cache private and public GitHub releases artefacts. Another strategy
example is for Git, where the proxy is aware of the Git protocol and uses it to reduce the impact on upstream Git
servers.

The way the two components interact is that the strategies have access to a Cache implementation, which they use to
cache and restore data. Strategies are not limited to using the Cache though; for example the Git strategy could
keep a local bare checkout of upstream Git repositories and serve packs from the repo directly.

The codebase uses Hermit to manage toolchains. It is written in Go, and uses Just for running common tasks.