Multi-tenant Nix Binary Cache http://celler.x86.lol/
  • Rust 93.1%
  • Nix 6.7%
  • HTML 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-14 08:32:18 +00:00
.cargo .cargo: Rename config to config.toml 2024-09-02 14:07:37 -04:00
.github dependabot: group minor/patch rust updates 2026-05-02 15:57:49 +02:00
attic treewide: reformat 2026-09-14 10:27:09 +02:00
book treewide: reformat 2026-09-14 10:27:09 +02:00
client treewide: cargo format 2026-09-14 09:54:56 +02:00
flake treewide: reformat 2026-09-14 10:27:09 +02:00
integration-tests treewide: reformat 2026-09-14 10:27:09 +02:00
nixos treewide: reformat 2026-09-14 10:27:09 +02:00
server treewide: cargo format 2026-09-14 09:54:56 +02:00
token token: fix unit test 2026-09-09 09:17:12 +02:00
.editorconfig .editorconfig: Fix indentation 2024-06-01 13:47:27 -06:00
.envrc Initial public commit 2022-12-31 17:01:07 -07:00
.gitattributes book: Add vendored highlight.js with Nix syntax 2023-01-29 17:23:59 -07:00
.gitignore Initial public commit 2022-12-31 17:01:07 -07:00
Cargo.lock client, server: use plain un-base64-encoded files for keys 2026-09-09 09:16:29 +02:00
Cargo.toml build(deps): bump base64 from 0.22.1 to 0.23.0 2026-08-01 17:13:11 +00:00
CHANGELOG.md changelog: update 2026-09-14 09:54:57 +02:00
crane.nix treewide: reformat 2026-09-14 10:27:09 +02:00
default.nix treewide: reformat 2026-09-14 10:27:09 +02:00
flake-compat.nix treewide: reformat 2026-09-14 10:27:09 +02:00
flake.lock flake: add style checks 2026-09-14 10:27:09 +02:00
flake.nix treewide: reformat 2026-09-14 10:27:09 +02:00
LICENSE Initial public commit 2022-12-31 17:01:07 -07:00
README.md docs: add changelog and simple migration guide 2026-06-16 10:35:22 +02:00
renovate.json renovate.json: Group non-major updates together 2024-11-09 15:07:11 -07:00
shell.nix treewide: reformat 2026-09-14 10:27:09 +02:00

Celler

Celler is a self-hostable Nix Binary Cache server backed by an S3-compatible storage provider. It has support for global deduplication and garbage collection.

It is derived from Attic. See the migration guide for migration instructions.

Rationale for Forking

We love Attic for its design, clear code and ease-of-use, but found it lacking for production setups. Development also seems to be stalled.

See the changelog for the current list of changes compared to Attic.

We are also interested in the following features and will work on them as time permits.

  • Prometheus Metrics for requests, duration of requests, NAR file size, chunk size, etc.
  • Request logging
  • Integration into Single-Sign On via OpenID Connect.
  • Store path pinning.

Try it out (15 minutes)

Let's spin up Celler in just 15 minutes. And yes, it works on macOS too!

Goals

  • Multi-Tenancy: Create a private cache for yourself, and one for friends and co-workers. Tenants are mutually untrusting and cannot pollute the views of other caches.
  • Global Deduplication: Individual caches (tenants) are simply restricted views of the content-addressed NAR Store and Chunk Store. When paths are uploaded, a mapping is created to grant the local cache access to the global NAR.
  • Managed Signing: Signing is done on-the-fly by the server when store paths are fetched. The user pushing store paths does not have access to the signing key.
  • Scalabilty: Celler can be easily replicated. It's designed to be deployed to serverless platforms like fly.io but also works nicely in a single-machine setup.
  • Garbage Collection: Unused store paths can be garbage-collected in an LRU manner.

Licensing

Celler is available under the Apache License, Version 2.0. See LICENSE for details.

By contributing to the project, you agree to license your work under the aforementioned license.

Contact

Chat with us on Matrix: #ctrl-os:cyberus-technology.de

For commercial support, reach out to Cyberus Technology.