Open Source Cloudless AI
I wanted a local workstation powerful enough to run the largest available AI models on consumer hardware. No proprietary cloud services. No external APIs. Fully autonomous agents for email, calendar, spreadsheets, Telegram, and more. All open source, all local, full privacy and control.
The exact build
- GPU: NVIDIA GeForce RTX 5090 with 32 GB VRAM, about $3,000. I picked it so I can run large models in GPU memory without compromises.
- CPU: AMD Ryzen 9 9950X3D, about $700. Great multicore and cache for data loaders and local services.
- Motherboard: ASUS ROG Strix X870E-E Gaming WiFi, about $450. Stable, PCIe 5.0, strong power delivery, wide connectivity.
- Cooling: NZXT Kraken Elite 360, about $330, in a Thermaltake Core P3 TG Pro open frame case, about $180. Keeps temps under control and looks clean.
- Power supply: ASUS ROG Strix 1000W Platinum ATX 3.1, about $270. Quiet and reliable.
- Storage: WD Black SN850X NVMe SSD 8 TB Gen4, rated to about 7,300 MB per second, about $750. Fast loads and lots of room for datasets and models.
- RAM: Corsair Vengeance DDR5 64 GB 6000 MT/s, about $250. Enough for parallel jobs and big context runs.
- Monitor: PRISM+ 49AL 240Hz, about $1,500, for the resolution (5210 x 1440), ClearMR 13000/HDR400, and 240Hz/0.03ms response time.
Total cost: about $7,000 USD (ignoring the value of my time to assemble it).
Installing and configuring everything
I first installed Ubuntu 25.04 Plucky Puffin. The NVIDIA 5090 driver install was fine. The problem was CUDA on Ubuntu 25 and getting different libraries to actually use it. Package compatibility was not there yet for the stack I needed, so I reinstalled with Ubuntu 24.04 LTS Noble Numbat, which worked better.
I installed Ollama to run local models and added FaceFusion along with a few other tools. With this, large models can live fully in GPU memory.
The cooler LED problem
My Kraken screen was upside down in the open frame. On Linux, liquidctl could read but not write orientation for this device. On Windows, I used NZXT CAM to flip the display.
The Windows detour and WSL
I installed Windows 11 and then the GeForce Game Ready driver. RTX 5090 owners can also see the launch driver note here: Game Ready for RTX 5090 and 5080. For Linux tools inside Windows I enabled Windows Subsystem for Linux and installed Ubuntu on WSL2. This gives me most of what I want from both worlds.
After the Windows install, the Ubuntu partition stopped booting. Fixing GRUB was not worth the time, so I kept Windows for device control and WSL for my Linux workflow.
What I liked on Windows
- For easy window layouts I use PowerToys FancyZones. If I just want the built in snap layouts, see Snap your windows.
- There is a paste manager built in. It is called Clipboard history. Press Windows and V to enable it.
- Driver and system updates are simple through Windows Update.
What I removed or disabled
- Widgets and news. Start with Customize the taskbar.
- Copilot prompts. For policy level control see Manage Copilot in Windows. For simple hiding, the taskbar toggle also works.
- Location prompts. See Windows location service and privacy.
- Edge nags. If you want policy control, see Microsoft Edge policy reference.
Where this leaves me
I wish I could run a 5090 as an external GPU on a Mac. Apple documents eGPU support only for Intel Macs with Thunderbolt 3. Apple Silicon does not support eGPU. See Use an external graphics processor with your Mac.
For now my setup is simple. Windows for device control and drivers. WSL with Ubuntu for the tools and scripts I like. CUDA and the NVIDIA driver stack are the core of the local AI workflow. Keep the matrix handy here: CUDA on Linux Guide.
Next steps
Over the coming days I will build a Model Context Protocol (MCP) layer that can send emails through Gmail, run agents on a daily schedule, update Google Sheets, and handle other basic workflows. The goal is to keep everything running only on free and open source software, using Ollama as the orchestration layer.