Open playbook
How to build your own private mini AI data center
The real plan, with the real bill of materials and real planning prices. Nothing here is gated, because the hard part was never which disks to buy.
How do you build a private AI data center?
Start with storage, not compute. Buy enterprise SATA disks in an external enclosure, because those specific disks migrate into a rack-mounted storage server later and nothing is stranded. Then build one GPU compute node and one 24-bay storage node, put an S3-compatible object service on top of ZFS, and connect them with a fabric fast enough that storage never starves the GPU. Everything after that is addition rather than replacement.
Four principles hold it together: own your storage behind an S3-compatible API rather than just owning disks, future-proof that storage because the namespace outlives every machine, extend the rack so NVMe and inference end up co-located with the object store and search runs end to end locally, and start small so every phase reuses the last instead of replacing it.
Four principles, and everything else follows
These are the reason the build order looks the way it does. Each one explains why the next purchase is the right one, and together they are the argument for starting with disks rather than with a GPU.
- 01
Own your storage, and own it as S3
Owning the bytes is only half of it. Owning them behind a standard object API is what makes them useful.
Disks you control with no standard interface in front of them is a NAS: your data, reachable only by whatever happens to mount it. An S3-compatible API in front of the same disks makes the corpus addressable by every tool, SDK and pipeline that already speaks S3, including ones that have nothing to do with us. The API is the contract, and it is the part worth insisting on, because it is what stops ownership turning into lock-in of a different shape.
- 02
Future-proof the storage before anything else
The namespace outlives every machine it has ever been served from.
Accelerators are superseded, interconnects change generation, servers get replaced. None of that matters if the data does not live inside any of them. Pick the interface that survives the move (SATA disks migrate from a desktop enclosure into a rack chassis), keep an independent copy so the migration is never a single-copy event, and address everything as s3:// objects from the first day rather than as paths on a machine you will not own in three years.
- 03
Extend the rack so compute comes to the data
The endgame is NVMe and inference sitting beside the object store, so search over your own storage runs end to end without leaving the rack.
Storage alone still sends every read somewhere else to be understood. The reason to extend into a rack is co-location: a fast local NVMe tier and an accelerator in the same cabinet as the object pool, so extraction, embedding, indexing, retrieval and inference all happen next to the bytes. That is what turns owned storage into an end-to-end system, where a query against your own object storage returns a timestamp inside a video rather than a filename, and no part of answering it crossed a network you pay for.
- 04
Start small, extend, never re-architect
Every phase should reuse the last one, which is a constraint on what you buy first.
The first purchase is four disks and an enclosure, and it is useful the day it lands. The second is a rack that adopts those same disks. After that, throughput is a compute pod, capacity is more disks or a shelf, shared multi-node access is a parallel filesystem tier, and bandwidth is a fabric generation. Because the object namespace never changes, none of those is a migration, and a rack that fills up is answered by another rack rather than by starting over.
Phase 0: Now
Storage first, so no disk is ever stranded
- Enterprise SATA drives chosen specifically because they move from a Mac-attached enclosure into server storage later.
- An 8-bay Thunderbolt JBOD, starting at 4 × 24 TB for 96 TB raw and expanding toward 192 TB.
- An independent backup from day one, so the eventual migration is never a single-copy event.
- Data organized against stable s3:// object namespaces before the object store exists.
Outcome: Useful capacity immediately, with disks that survive the move into the rack.
| Component | Why it is on the list | Planning range |
|---|---|---|
| Seagate Exos X24 24 TB SATA HDDEnterprise 3.5-inch SATA disk; SATA preserves Mac-enclosure portability | Start building the corpus now; disks can later move into server storage | $350-$500 each |
| OWC ThunderBay 8 or equivalent JBOD8-bay Thunderbolt SATA enclosure | Immediate bulk storage without throwaway disks | $850-$1,300 |
| Independent backupSeparate NAS, disks or cloud copy | Avoid a single-copy migration event | Workload dependent |
Why SATA specifically. It is the one decision in Phase 0 that matters later. SATA disks drop straight into a rack-mounted 24-bay chassis, so the drives you buy to sit beside a workstation today become the first population of the object pool rather than surplus. Buy the interface that survives the move, and buy the independent backup at the same time so the eventual migration is never a single-copy event.
Phase 1: V1 rack
A self-contained multimodal AI appliance
- Compute-01: RTX PRO 6000 Blackwell 96 GB, Threadripper PRO 9975WX, 512 GB ECC, mirrored boot, model and scratch NVMe.
- Storage-01: 24-bay hot-swap server starting around 12 × 20-24 TB enterprise SATA.
- Durable data exposed through an S3-compatible object API; local NVMe is cache and scratch, never the source of truth.
- The full local Mixpeek stack, Ray, vector services and video extraction, plus vLLM, SGLang and TensorRT-LLM for serving.
- 100 GbE-ready internal fabric, an isolated management network, BMC/IPMI and a local break-glass console.
Outcome: Private large-scale ingestion, multimodal inference and model training in one 27-32U cabinet.
| Component | Why it is on the list | Planning range |
|---|---|---|
| 27-32U enclosed vertical rackFull-depth, lockable, wheeled, high-airflow cabinet | A clean movable appliance | $1,000-$2,500 |
| Compute Pod 01: 4U chassisFull-depth GPU chassis with server airflow and serviceability | A replaceable AI compute unit | $700-$2,000 |
| RTX PRO 6000 Blackwell 96 GB96 GB ECC NVIDIA accelerator | Large coding, VLM and video inference, Mixpeek extraction, training and fine-tuning | $13,000-$15,000 |
| Threadripper PRO 9975WX32 cores, 64 threads, high PCIe capacity | FFmpeg, Ray CPU workers, preprocessing, tokenization, databases, feeding the GPU | $4,000-$5,000 |
| ASUS Pro WS WRX90E-SAGE SEECC RDIMM, PCIe 5.0, dual 10GbE, AST2600 BMC/IPMI | Expansion, RAM bandwidth and remote recovery | $1,200-$1,500 |
| 512 GB ECC DDR5 RDIMMRegistered ECC memory | Dataset staging, Ray, dataloaders, CPU offload, training | $1,500-$3,000 |
| 2 × 2 TB mirrored boot NVMeRedundant system volume | OS, configs and critical service state | $300-$600 |
| 8 TB model/dataset NVMeFast reusable local tier | Weights, model cache, tokenized and hot datasets | $700-$1,500 |
| 4-8 TB high-endurance scratch NVMeSeparate high-write tier | Frames and audio, checkpoints, optimizer state, temp tensors | $500-$1,500 |
| 1600 W+ PSU or OEM redundant PSUGPU-capable power | Stable compute power with headroom | $500-$1,000 |
| Cooling and fansTR5/server cooling, front-to-back airflow | Sustained 24/7 operation | $250-$700 |
| Storage Pod 01: 4U 24-bayHot-swap server with ECC, BMC, HBA/backplane, redundant PSU | Makes durable storage independent from compute | $4,000-$8,000 before disks |
| 12 × 20-24 TB enterprise SATA HDDsThe initial object pool | Canonical media, Mixpeek objects, datasets and artifacts | $4,000-$7,000 total |
| ZFS + S3-compatible object serviceDurable implementation behind a stable object API | A canonical s3:// namespace independent of disk topology | $0+ software |
| 100 GbE ConnectX-class NICsHigh-speed node adapters | Keep storage traffic from starving the GPUs | $500-$2,000 per node |
| 100 GbE managed data switchInternal high-speed fabric | Compute to storage, and the future shared tier | $1,500-$5,000 |
| Management switch / VLANSeparate out-of-band network | BMC/IPMI, UPS, switches, controllers, sensors | $200-$750 |
| Kubernetes control nodeSmall dedicated x86 host | Keeps orchestration independent of the GPU workers | $300-$800 |
| Local consoleSmall monitor, keyboard and shelf | Break-glass install, BIOS and network recovery | $150-$500 |
| Rack PDU + UPSMetered power and short ride-through | Clean power and graceful shutdown | $1,500-$4,000 |
| Rails, optics, DAC, SAS, power, sparesIntegration hardware | A repeatable, serviceable installation | $500-$1,500 |
| Tailscale access planeSecure overlay for clients and admin | Engineers reach services without the rack depending on any one machine | Service dependent |
Phase 2: Horizontal scale
More nodes, one logical pool
- Compute-02/03/N join as Kubernetes and Ray workers under the GPU Operator and KubeRay.
- Lustre arrives only when multiple workers genuinely need the same active working set. S3 stays the durable truth.
- The fabric moves 100 GbE → 200/400 GbE RDMA, with a distinct compute fabric where model parallelism warrants it.
- Storage-02/N or dense shelves take capacity from hundreds of TB toward petabytes.
Outcome: Compute, storage and bandwidth scale independently of each other.
| Component | Why it is on the list | Planning range |
|---|---|---|
| Lustre shared hot tierParallel POSIX filesystem over a fast RDMA fabric | A shared training and video working set across nodes | $5,000-$25,000+ |
| Compute Pod 02Second GPU worker node | Horizontal throughput and distributed training | Future node pricing |
| Kubernetes + GPU Operator + KubeRayCluster scheduling and distributed execution | One logical resource pool | $0+ software |
Phase 3: Frontier and off-grid
Nothing built in V1 is invalidated
- Future NVIDIA-qualified RTX PRO, MGX, HGX or DGX nodes join the existing cluster.
- Dense storage shelves scale the object pool without touching compute.
- An optional off-grid power module: solar, a 48 V LiFePO4 bank, hybrid inverter and generator, with energy-aware scheduling.
- Satellite WAN plus the secure overlay keeps the site reachable without depending on local infrastructure.
Outcome: A private AI cluster where newer accelerator nodes join without changing the object namespace.
| Component | Why it is on the list | Planning range |
|---|---|---|
| 200/400 GbE or InfiniBand compute fabricTightly coupled inter-node network | Distributed training and model parallelism | $10Ks+ |
| Dense JBOD or storage shelf60-106-drive expansion | Hundreds of TB to PB-scale object storage | $50K-$150K+ |
| Starlink + secure accessRemote WAN | Connectivity at a remote site | Hardware + service |
| 48 V LiFePO4 bankLarge-format battery storage | Overnight and low-solar operation | ~$20K-$35K+ at V1 scale |
| Solar arrayGround array; planning target ~25-30 kW for year-round V1 resilience in the Pacific Northwest | Generate rack energy and recharge batteries | ~$15K-$40K+ installed |
| Hybrid inverter + generatorAC conversion and charging, plus long-dark-period backup | Resilient off-grid operation | $8K-$25K+ |
How the disks move between phases
PHASE 0 - NOW
Mac Studio
│ Thunderbolt
▼
ThunderBay 8
├── 24TB
├── 24TB
├── 24TB
└── 24TB
= 96TB raw
PHASE 1 - V1
ThunderBay corpus
│ copy + verify
│ 10/100GbE
▼
Storage-01
S3 / ZFS
12×20-24TB
│
├──────── Compute-01
│ 96GB GPU
│
└──────── Mixpeek
PHASE 2 - SCALE
Kubernetes / Ray
│
100→400GbE fabric
┌─────────────┼─────────────┐
▼ ▼ ▼
Compute-01 Compute-02 Storage-01
│ │ │
└─────── Lustre V2 ─────────┘
shared hot data
PHASE 3 - PB / FRONTIER
Compute-01 Compute-02 MGX/HGX/DGX future
\ | /
└── high-speed fabric ──┐
▼
Storage cluster
S3 + Lustre
│
dense JBOD shelves
hundreds TB → PBsConsolidated bill of materials
Planning ranges, not quotes. Hardware pricing, availability and qualification status all move. Validate the seller, the warranty, the qualification status and the interface before buying.
| Phase | Component | Extends to | Planning range |
|---|---|---|---|
| NOW | Seagate Exos X24 24 TB SATA HDD | 4 drives = 96 TB raw; 8 = 192 TB; later migrate into 24-bay storage | $350-$500 each |
| NOW | OWC ThunderBay 8 or equivalent JBOD | Fill to 8; later reuse for migration, backup or a cold copy | $850-$1,300 |
| NOW | Independent backup | Grows with the corpus | Workload dependent |
| V1 | 27-32U enclosed vertical rack | Add pods until full, then duplicate the rack | $1,000-$2,500 |
| V1 | Compute Pod 01: 4U chassis | GPU #2 vertically; Compute-02/N horizontally | $700-$2,000 |
| V1 | RTX PRO 6000 Blackwell 96 GB | A second 96 GB GPU; future RTX PRO, MGX, HGX or DGX nodes | $13,000-$15,000 |
| V1 | Threadripper PRO 9975WX | Add CPU or GPU nodes; a higher-core node on measured need | $4,000-$5,000 |
| V1 | ASUS Pro WS WRX90E-SAGE SE | Reserve an x16 slot for GPU #2 and a ConnectX NIC | $1,200-$1,500 |
| V1 | 512 GB ECC DDR5 RDIMM | Scale toward ~2 TB; each node adds RAM | $1,500-$3,000 |
| V1 | 2 × 2 TB mirrored boot NVMe | Larger mirror or dedicated management storage later | $300-$600 |
| V1 | 8 TB model/dataset NVMe | Add or enlarge enterprise NVMe per node | $700-$1,500 |
| V1 | 4-8 TB high-endurance scratch NVMe | Add NVMe; shared hot data moves to Lustre at V2 | $500-$1,500 |
| V1 | 1600 W+ PSU or OEM redundant PSU | GPU #2 where the power envelope permits | $500-$1,000 |
| V1 | Cooling and fans | OEM or liquid cooling for denser future accelerators | $250-$700 |
| V1 | Storage Pod 01: 4U 24-bay | Populate 24 bays; Storage-02/N; dense JBOD later | $4,000-$8,000 before disks |
| V1 | 12 × 20-24 TB enterprise SATA HDDs | ~240-288 TB raw; fill 24 bays; then PB shelves | $4,000-$7,000 total |
| V1 | ZFS + S3-compatible object service | The backend can become distributed object storage | $0+ software |
| V1 | 100 GbE ConnectX-class NICs | 100 → 200/400 GbE RDMA | $500-$2,000 per node |
| V1 | 100 GbE managed data switch | Upgrade to 200/400G; split fabrics later | $1,500-$5,000 |
| V1 | Management switch / VLAN | Add all future nodes and racks | $200-$750 |
| V1 | Kubernetes control node | 1 → 3 HA controllers | $300-$800 |
| V1 | Local console | Rack KVM later | $150-$500 |
| V1 | Rack PDU + UPS | Larger or redundant UPS as load grows | $1,500-$4,000 |
| V1 | Rails, optics, DAC, SAS, power, spares | Standardize for future pods | $500-$1,500 |
| V1 | Tailscale access plane | Add users and sites; substitute an approved on-prem solution for true air-gap | Service dependent |
| V2 | Lustre shared hot tier | Add MDS/OSS/OST capacity | $5,000-$25,000+ |
| V2 | Compute Pod 02 | Compute-03/N | Future node pricing |
| V2 | Kubernetes + GPU Operator + KubeRay | Add workers horizontally | $0+ software |
| FUTURE | 200/400 GbE or InfiniBand compute fabric | Future HGX, DGX or MGX nodes | $10Ks+ |
| FUTURE | Dense JBOD or storage shelf | Add shelves independently of compute | $50K-$150K+ |
| OFF-GRID | Starlink + secure access | Backup WAN | Hardware + service |
| OFF-GRID | 48 V LiFePO4 bank | Add modules from measured kWh/day | ~$20K-$35K+ at V1 scale |
| OFF-GRID | Solar array | Expand from measured load and site yield | ~$15K-$40K+ installed |
| OFF-GRID | Hybrid inverter + generator | Parallel or larger equipment as compute grows | $8K-$25K+ |
34 components across five phases. Phase 0 alone is roughly $2.3K-$3.3K before backup and is useful the day it arrives.
The software you will run on it
All open or freely available, all running locally. This is the layer where the work actually is, which is why the hardware plan above can be published without hesitation.
- Mixpeek local stack
- Ray / KubeRay
- Kubernetes
- NVIDIA GPU Operator
- vLLM
- SGLang
- TensorRT-LLM
- NeMo
- Megatron
- PyTorch
- Hugging Face
- Qdrant
- S3-compatible object service
- ZFS
- Lustre (V2)
- Prometheus / Grafana-class observability
Want this built and operated for you instead?
The plan above is genuinely everything, and building it is still a procurement project, an assembly project and an operational commitment. The alternative is to sponsor the build and have Mixpeek deploy it as a Mixpeek Appliance: the same plan, specified, assembled and optionally operated for you. You own the hardware either way.