NEWVectors or files. Pick a path.Start →

    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.

    1. 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.

    2. 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.

    3. 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.

    4. 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

    Buy the final storage chassis now, not a stand-in

    • Storage-01 itself: the same 24-bay hot-swap rack-mount server, with ECC, BMC/IPMI, an HBA and redundant power, that lives in the eventual rack. Not a desktop enclosure that gets replaced.
    • It sits on a shelf beside the Mac Studio, reached over ordinary 1/10 GbE, until the cabinet is bought. Then it slides in as-is.
    • Populated with 4 × 24 TB enterprise SATA for 96 TB raw, expanding toward 8 and then 12 drives in the same chassis.
    • ZFS and the S3-compatible object service stand up immediately, so the canonical s3:// namespace is real from day one rather than created during a later migration.
    • An independent backup from day one, because a single copy is a single copy whatever it is sitting in.

    Outcome: Useful capacity immediately, on the exact hardware that becomes permanent. Nothing bought at this phase is ever replaced, only added to.

    Bill of materials for Phase 0: Now
    ComponentWhy it is on the listPlanning range
    Storage Pod 01: 4U 24-bayHot-swap server with ECC, BMC, HBA/backplane, redundant PSU; the literal chassis that later slides into the rack, bought now instead of a throwaway enclosureMakes durable storage independent from compute from day one; never gets replaced$4,000-$8,000 before disks
    Seagate Exos X24 24 TB SATA HDDEnterprise 3.5-inch SATA diskPopulate Storage-01 from day one; drives never migrate because the chassis never changes$350-$500 each
    ZFS + S3-compatible object serviceDurable implementation + stable object APICanonical `s3://` namespace live from day one, not created during a later migration$0+ software
    Independent backupSeparate NAS/disks/cloud copyAvoid a single-copy eventWorkload 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.

    Bill of materials for Phase 1: V1 rack
    ComponentWhy it is on the listPlanning range
    27-32U enclosed vertical rackFull-depth, lockable, wheeled, high-airflow cabinetClean movable mini data center$1,000-$2,500
    Compute Pod 01: 4U chassisFull-depth GPU chassis; server airflow/serviceability preferredReplaceable AI compute unit$700-$2,000
    RTX PRO 6000 Blackwell 96 GB96 GB ECC NVIDIA accelerator; Server Edition preferred in qualified serverLarge coding/VLM/video inference, Mixpeek extraction, training/fine-tuning$13,000-$15,000
    Threadripper PRO 9975WX32C/64T, high PCIe capacityFFmpeg, Ray CPU workers, preprocessing, tokenization, DBs, GPU feeding$4,000-$5,000
    ASUS Pro WS WRX90E-SAGE SEECC RDIMM, PCIe 5.0, dual 10GbE, AST2600 BMC/IPMIExpansion + RAM bandwidth + remote recovery$1,200-$1,500
    512 GB ECC DDR5 RDIMMRegistered ECC memoryDataset staging, Ray, dataloaders, CPU offload, training$1,500-$3,000
    2 × 2 TB mirrored boot NVMeRedundant system volumeUbuntu, configs, critical service state$300-$600
    8 TB model/dataset NVMeFast reusable local tierWeights, HF cache, tokenized/hot datasets$700-$1,500
    4-8 TB high-endurance scratch NVMeSeparate high-write tierFrames/audio, checkpoints, optimizer state, temp tensors$500-$1,500
    1600 W+ PSU / OEM redundant PSUGPU-capable powerStable compute power with headroom$500-$1,000
    Cooling/fansTR5/server cooling, front-to-back airflowSustained 24/7 operation$250-$700
    + 8 × 20-24 TB enterprise SATA HDDsGrows the pool already running since NOW, to ~12 drives totalCanonical media, Mixpeek objects, datasets, artifacts$2,800-$4,000
    100 GbE ConnectX-class NICsHigh-speed node adaptersKeep storage traffic from starving GPUs$500-$2,000/node
    100 GbE managed data switchInternal high-speed fabricCompute ↔ storage and future shared tier$1,500-$5,000
    Management switch/VLANSeparate OOB networkBMC/IPMI, UPS, switches, controllers, sensors$200-$750
    Kubernetes control nodeSmall dedicated x86 hostKeeps orchestration independent of GPU workers$300-$800
    Local consoleSmall monitor + keyboard/mouse + shelfBreak-glass install/BIOS/network recovery$150-$500
    Rack PDU + UPSMetered power + short ride-throughClean power and graceful shutdown$1,500-$4,000
    Rails/optics/DAC/SAS/power/sparesIntegration hardwareRepeatable, serviceable installation$500-$1,500
    Tailscale access planeSecure overlay for clients/adminMac/amux and engineers reach services without rack depending on MacService 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.

    Bill of materials for Phase 2: Horizontal scale
    ComponentWhy it is on the listPlanning range
    Lustre shared hot tierParallel POSIX filesystem over fast/RDMA fabricShared training/video working set; avoids node-local data dependency$5,000-$25,000+
    Compute Pod 02Second GPU worker nodeHorizontal throughput + distributed trainingFuture node pricing
    Kubernetes + GPU Operator + KubeRayCluster scheduling/distributed executionOne 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.

    Bill of materials for Phase 3: Frontier and off-grid
    ComponentWhy it is on the listPlanning range
    200/400 GbE or InfiniBand compute fabricTightly coupled inter-node networkDistributed training / giant model parallelism$10Ks+
    Dense Seagate-class JBOD/storage shelf60-106-drive expansionHundreds of TB → PB-scale object storage$50K-$150K+
    Starlink + secure accessRemote WANCabin connectivityHardware + service
    48 V LiFePO4 bankLarge-format battery storageOvernight/low-solar operation~$20K-$35K+ V1 scale
    PNW solar arrayGround array; planning target ~25-30 kW for year-round V1 resilienceGenerate rack energy + recharge batteries~$15K-$40K+ installed
    Hybrid inverter + generatorAC conversion/charging + long-dark-period backupResilient off-grid operation$8K-$25K+

    How the disks move between phases

    Piecemeal migrationHow the same hardware moves forward: Storage-01 is bought in Phase 0 as the final chassis, runs beside the desk on 1/10GbE, then slides into the rack unchanged. No copy, no verify, no repurposing step.

    Consolidated 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.

    Complete bill of materials across all phases
    PhaseComponentExtends toPlanning range
    NOWStorage Pod 01: 4U 24-bayPopulate 24 bays over time; Storage-02/N; dense JBOD later$4,000-$8,000 before disks
    NOWSeagate Exos X24 24 TB SATA HDD4 drives = 96 TB raw now; fill toward 24 bays over time, same chassis through V1$350-$500 each
    NOWZFS + S3-compatible object serviceBackend can become distributed object storage$0+ software
    NOWIndependent backupGrows with corpusWorkload dependent
    V127-32U enclosed vertical rackAdd pods until full; duplicate rack later$1,000-$2,500
    V1Compute Pod 01: 4U chassisGPU #2 vertically; Compute-02/N horizontally$700-$2,000
    V1RTX PRO 6000 Blackwell 96 GBSecond 96 GB GPU; future RTX PRO/MGX/HGX/DGX nodes$13,000-$15,000
    V1Threadripper PRO 9975WXAdd CPU/GPU nodes; higher-core node if measured need$4,000-$5,000
    V1ASUS Pro WS WRX90E-SAGE SEReserve x16 for GPU #2 and ConnectX NIC$1,200-$1,500
    V1512 GB ECC DDR5 RDIMMScale toward ~2 TB; each node adds RAM$1,500-$3,000
    V12 × 2 TB mirrored boot NVMeLarger mirror/dedicated management storage later$300-$600
    V18 TB model/dataset NVMeAdd/larger enterprise NVMe per node$700-$1,500
    V14-8 TB high-endurance scratch NVMeAdd NVMe; shared hot data moves to Lustre at V2$500-$1,500
    V11600 W+ PSU / OEM redundant PSUGPU #2 where envelope permits$500-$1,000
    V1Cooling/fansOEM/liquid cooling for dense future accelerators$250-$700
    V1+ 8 × 20-24 TB enterprise SATA HDDs~240-288 TB raw at ~12 drives; ~480-576 TB with all 24 bays full; then PB shelves$2,800-$4,000
    V1100 GbE ConnectX-class NICs100 → 200/400 GbE RDMA$500-$2,000/node
    V1100 GbE managed data switchUpgrade to 200/400G; split fabrics later$1,500-$5,000
    V1Management switch/VLANAdd all future nodes/racks$200-$750
    V1Kubernetes control node1 → 3 HA controllers$300-$800
    V1Local consoleRack KVM later$150-$500
    V1Rack PDU + UPSLarger/redundant UPS as load grows$1,500-$4,000
    V1Rails/optics/DAC/SAS/power/sparesStandardize for future pods$500-$1,500
    V1Tailscale access planeAdd users/sites; substitute approved on-prem solution for true air-gapService dependent
    V2Lustre shared hot tierAdd MDS/OSS/OST capacity$5,000-$25,000+
    V2Compute Pod 02Compute-03/NFuture node pricing
    V2Kubernetes + GPU Operator + KubeRayAdd workers horizontally$0+ software
    FUTURE200/400 GbE or InfiniBand compute fabricFuture HGX/DGX/MGX nodes$10Ks+
    FUTUREDense Seagate-class JBOD/storage shelfAdd shelves independently of compute$50K-$150K+
    OFF-GRIDStarlink + secure accessBackup WANHardware + service
    OFF-GRID48 V LiFePO4 bankAdd modules from measured kWh/day~$20K-$35K+ V1 scale
    OFF-GRIDPNW solar arrayExpand from measured load/site yield~$15K-$40K+ installed
    OFF-GRIDHybrid inverter + generatorParallel/larger equipment as compute grows$8K-$25K+

    33 components across five phases. Phase 0 alone is roughly $5.4K-$10K 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.

    It is fully S3-compatible, with no code change. Whichever route you take, the object endpoint speaks the S3 API, so anything already talking to S3 points at a new endpoint URL and keeps working.