Attic
from Nixのsubstituter
https://docs.attic.rs/
https://github.com/zhaofengli/attic
Rust実装
https://discourse.nixos.org/t/introducing-attic-a-self-hostable-nix-binary-cache-server/24343
Claude Code.icon
Attic は、S3互換ストレージをバックエンドとするセルフホスト型のNixバイナリキャッシュサーバーです。Rustで書かれています。
何を解決するか
Nixでパッケージをビルドすると、同じパッケージでも毎回ビルドし直す必要があります。バイナリキャッシュを使えば、ビルド済みの成果物を再利用できます。公式の cache.nixos.org は存在しますが、自分のプロジェクト固有のパッケージをキャッシュしたい場合はセルフホストが必要です。Atticはそのためのサーバーです。
主な特徴
table:_
機能 説明
マルチテナント 複数のユーザー/チームがそれぞれ独立したキャッシュを持てる。テナント間は厳密に分離される
グローバル重複排除 各テナントのキャッシュは、裏側では一つのcontent-addressedストレージを共有。同じNARが複数テナントにpushされてもストレージは1つ分で済む
マネージド署名 署名鍵はサーバー側で管理。パッケージをpushするユーザーが署名鍵に直接アクセスすることはない
ガベージコレクション LRU方式で未使用のストアパスを自動的にクリーンアップ
水平スケール Fly.ioなどのサーバーレスプラットフォームへのデプロイに対応しつつ、単一マシンでも動作
アーキテクチャ概要
code:_
クライアント (attic CLI)
↓ push/pull
Attic Server (Rust)
↓ 読み書き
S3互換ストレージ (AWS S3, MinIO, etc.)
+ PostgreSQL/SQLite (メタデータ管理)
クライアント: attic CLIでキャッシュへのpush/pullを行う
サーバー: NARの保存・配信・署名・GCを担当
ストレージ: S3互換であれば何でもOK(AWS S3、MinIO、Cloudflare R2など)
技術スタック
Rust (88.8%) — サーバー・クライアント本体
Nix (8.6%) — ビルド・開発環境定義
C++ (1.5%) — 補助的な部分
使いどころ
CI/CDでNixビルドのキャッシュを共有したいとき
チームや組織内でプライベートなバイナリキャッシュを運用したいとき
cachix の代替としてセルフホストしたいとき
Cachixという既存のマネージドサービスと比較すると、Atticは完全にセルフホストであり、グローバル重複排除やマルチテナントが特徴的です。