Multi-tenant Nix Binary Cache http://celler.x86.lol/
  • Rust 92.4%
  • Nix 7.3%
  • HTML 0.2%
Find a file
Julian Stecklina 7504f70a4c
Merge pull request #41 from Tom-Hubrecht/login-token-env
celler/client: Allow using an environment variable for the login token
2026-05-07 10:53:13 +02: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-05-06 21:40:21 +02:00
book book: remove minio reference 2026-05-05 10:21:34 +02:00
client celler/client: Allow using an environment variable for the login token 2026-05-07 10:45:49 +02:00
flake flake/packages: simplify and expose tests 2026-04-15 00:08:07 +02:00
integration-tests integration-tests: move to garage as S3 server 2026-05-05 10:21:34 +02:00
nixos flake: simplify celler derivations 2026-04-12 23:11:50 +02:00
server build(deps): bump the rust-dependencies group across 1 directory with 11 updates 2026-05-03 04:22:29 +00:00
token build(deps): bump the rust-dependencies group across 1 directory with 11 updates 2026-05-03 04:22:29 +00: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 celler/nix_store: update nix-daemon dependencies 2026-05-06 21:40:21 +02:00
Cargo.toml build(deps): bump the rust-dependencies group across 1 directory with 11 updates 2026-05-03 04:22:29 +00:00
crane.nix celler: defeat clippy 2026-04-23 23:21:52 +02:00
default.nix flake: simplify celler derivations 2026-04-12 23:11:50 +02:00
flake-compat.nix Initial public commit 2022-12-31 17:01:07 -07:00
flake.lock build(deps): bump crane from 7cf72d9 to d459c13 2026-05-06 18:10:19 +00:00
flake.nix hercules-ci: limit to common architectures 2026-04-12 23:27:16 +02:00
LICENSE Initial public commit 2022-12-31 17:01:07 -07:00
README.md readme: update nix-daemon progress 2026-05-06 21:40:21 +02:00
renovate.json renovate.json: Group non-major updates together 2024-11-09 15:07:11 -07:00
shell.nix Initial public commit 2022-12-31 17:01:07 -07: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.

Relationship to Attic

Celler is a fork of Attic. We love Attic for its design, clear code and ease-of-use, but found it lacking for production setups. The current delta to between Celler and Attic is:

  • Updated all dependencies.
  • Remove C++ bindings to libnixstore.
  • Simplified Nix and CI setup
  • Use pure Rust code to talk to the Nix daemon.

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.

We are also open to contributions. In case you want to contribute a major feature, please involve us in the design!

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.