0%

selfhostingai-inferenceollama

Setting Up Local AI Inference on a Windows Laptop

2025-12-26·5 min read

I wanted to experiment with running large language models locally without relying on paid APIs or cloud GPUs.

I had two machines:

  • A Windows laptop with only 8GB usable RAM
  • My Mac, which I use as my primary development machine

The idea was simple: use the Windows machine purely for inference, and treat everything else as separate layers.

This article is a step-by-step log of how I set it up.

Step 1: Pulling and testing local models on Windows

I started by installing Ollama on the Windows laptop and testing which models were realistically usable with the available memory.

Given the RAM constraint, larger models were unstable, so I focused on smaller variants that could load and unload reliably.

The models I ended up working with:

  • DeepSeek-R1 (1.5B)
  • Llama 3.2 (3B)
  • Qwen 2.5 (1.5B)

I pulled these models locally and verified that each of them could run end-to-end without freezing the system.

Step 2: Comparing model outputs directly in the terminal

Before adding any APIs or networking, I wanted to see how each model behaved in isolation.

I ran prompts directly in the terminal for each model to:

  • Verify output quality
  • Observe latency differences
  • Check memory usage during inference

This helped set expectations early and made it clear which models were better suited for different types of prompts.

Step 3: Wrapping Ollama with a small inference API

Instead of calling Ollama directly from other machines, I added a small inference service on the Windows laptop.

This service:

  • Exposes a /models endpoint
  • Accepts inference requests
  • Forwards them to Ollama
  • Returns back the list of models available

At this point, the Windows laptop effectively became a dedicated model worker.

Step 4: Connecting the Windows and Mac machines securely

The next step was making the Windows inference service reachable from my Mac.

I set up private networking via Tailscale so both machines could communicate as if they were on the same local network, without exposing anything publicly.

Once this was configured, I could call the Windows inference API directly from the Mac.

Step 5: Adding a backend control layer on the Mac

On the Mac, I introduced a backend that acts as a control layer between the frontend and the Windows worker.

Its responsibilities are intentionally minimal:

  • Receive requests from the frontend
  • Decide which model to use
  • Forward the request to the Windows inference API
  • Return the response

This backend also enforces a single active inference request at a time, which is important given the memory limits on the Windows machine.

Step 6: Building a minimal frontend to interact with the system

Finally, I added a small frontend to interact with the setup more easily.

The UI allows me to:

  • Enter prompts
  • Select a model or task
  • Send requests
  • View responses and latency

There’s no focus on polish here. It’s meant to be a lightweight playground for testing and observing system behavior.Current state of the setup

At this point:

  • All inference runs locally on the Windows laptop
  • No paid APIs are used
  • Only one model is loaded at a time
  • The Mac handles routing and orchestration
  • The system remains stable within the given memory limits

That was the intended outcome.

Current state of the setup

At this point:

  • All inference runs locally on the Windows laptop
  • No paid APIs are used
  • Only one model is loaded at a time
  • The Mac handles routing and orchestration
  • The system remains stable within the given memory limits

That was the intended outcome. Yes, I know it isn't much of a big deal for the ones who are deep in the AI world and have already played around with models, this is just me trying something for the first time when I was bored.

This setup is now something I can iterate on slowly, test different ideas against, or extend in small ways, probably even do my own benchmarks on models.

Sharing this here mostly as a build log, in case the process is useful to others experimenting with local inference.

Contact

Get in touch for projects, collaborations, or just to say hello.

Prem

Let's build something together.

Open to freelance & full-time roles.

Mumbai, India© 2026 Prem Thatikonda