Silo
Silo is an OSS Kotlin/Ktor replacement for the end-of-life Gradle Remote Build Cache Node — a drop-in HTTP server that speaks the Gradle build cache protocol. Fat-jar and multi-arch Docker, Apache-2.0.
Quickstart
Run with Docker
docker run -p 8080:8080 -v silo-data:/data ghcr.io/chrisjenx/silo:latest
Run the fat jar
java -jar silo-*-all.jar # listens on :8080, stores under /data
java -jar silo-*-all.jar --version
Point Gradle at it
In your build’s settings.gradle.kts:
buildCache {
remote<HttpBuildCache> {
url = uri("http://localhost:8080/cache/")
isPush = true
// credentials { username = "ci"; password = System.getenv("SILO_PW") }
}
}
Then build with the cache enabled:
./gradlew build --build-cache
A cold build PUTs task outputs into Silo; a clean rebuild resolves them FROM-CACHE.
Health is at /health, Prometheus metrics at /metrics, and a live stats stream at
/api/stream/stats.
Documentation
| Page | What’s in it |
|---|---|
| Live demo | The admin dashboard running on simulated data — no install |
| Requirements & limits | Hardware sizing + OS / filesystem / Ktor guard rails |
| Configuration | HOCON reference + every SILO_* env var |
| Operations | Runbook: monitoring, tuning, backup/restore, audit log |
| TLS & reverse proxy | Caddy, nginx, Traefik, AWS ALB, Cloudflare Tunnel |
| Design language | Admin SPA design notes |
Status
Pre-1.0. The Gradle build-cache protocol, filesystem store, SQLite metadata index, auth (Basic + OIDC), metrics, audit logging, and crash-recovery are implemented. See the issue tracker for what’s next.