Data center? No thanks… I’d rather date my GPU
I started my own business as a freelance data engineer in April 2026. As any freelancer will tell you, cost suddenly becomes a huge factor in decision making; I’ve opted for a less powerful ThinkPad, cheap or free tiers of software needed, building my own websites, etc.
Around the same time, pricing of Claude Code and other coding agents started to change. I was already hesitant in using third party agents, primarily because my work usually involves sensitive data, and getting a ZDR is reserved for “qualified” enterprise accounts. Further, 20 USD/month is quite pricey and per-token pricing quickly becomes untenable.
I don’t generally vibe code, but I’ve been using some form of auto-complete in my editor for years. This too has been impacted by new pricing, rate limits, and so on. Additionally, it can be helpful when working alone to have an LLM review code, even if it does so imperfectly.
So what if I could get the functionality of a coding agent and auto-complete securely… and for free? Thanks to open source, Tailscale, Ollama, and a relatively beefy consumer GPU, that is exactly what’s possible.1
Why run on a GPU?
As previously mentioned, my new ThinkPad isn’t exactly a powerhouse. In fact, when the CPU is under load the bluetooth will stop working which is less than ideal. I’ve done what I can with respect to power saving settings, but the fact of the matter is that running LLMs truly locally is not a task fit for my poor laptop. I dream of an X1 Carbon, but until then we’ll have to make do.
Running on a GPU will also usually be much faster. The AMD Radeon RX 7900 XTX has 24GB VRAM which allows us to run relatively large models entirely in memory.
The setup
Okay, so I have an underpowered laptop and a GPU situated in a desktop PC in my office. The dream, obviously, is to be able to bring the laptop places and still be able to use an LLM - both in an agent and for auto-complete. There’s a few steps in achieving this: setting up an LLM to run on VRAM, connecting to it securely, and letting an agent harness use it.
Ollama
Ollama is open source software that allows running open models locally. It can utilise both CPU and GPU. I’ll be using qwen3.6:27b for coding agents and qwen2.5-coder:1.5b for auto-complete.
I use Arch Linux2 (btw) so Ollama - including GPU inference - is easily installed by following the wiki. It can also be installed via Docker - I don’t know how well it works, however, and I prefer to keep my services up to date along with my OS. After installation, Ollama is available via ollama in the terminal but also on localhost:11434
> xh localhost:11434
HTTP/1.1 200 OK
Content-Length: 17
Content-Type: text/plain; charset=utf-8
Ollama is running
Models can be installed using ollama pull. After running
> ollama pull qwen3.6:27b; ollama pull qwen2.5-coder:1.5b
both models are listed available via ollama list or localhost:11434/api/tags. We can verify that GPU is fully utilised by running ollama run [model_tag] and checking usage with ollama ps. The latter should read 100% GPU under PROCESSOR
> ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3.6:27b a50eda8ed977 18 GB 100% GPU 32768 4 minutes from now
Perfect, we’re good to go! But this is still only available on my desktop. We need some way to expose localhost:11434 to my laptop (and any other devices I might desire). But the internet is a scary place, and ssh is easy to mess up. So…
Tailscale
Enter Tailscale. It’s a zero trust connectivity platform that allows for device connections in a secure mesh network. Again, installation is easy by following the wiki. Tailscale needs to be installed on all devices that should be connected. Once that’s in place, tailscale up will connect and authenticate a device on your tailnet. The image below shows that my desktop (nostromo) and my laptop (lv-426) are both connected to my tailnet.

Now comes the magic. On my desktop, I can run
> tailscale serve --bg --http 11434 localhost:11434
This allows me to share the service running on localhost:11434 at the specified port. --bg runs the service in the background, meaning it’s robust against restarts. And now you might be thinking, “ok but it’s http!!!”, and you’re right but it doesn’t matter because traffic is encrypted by default and cannot be accessed outside the tailnet.
HTTP servers can be accessed via Tailscale’s MagicDNS. My desktop’s MagicDNS name is nostromo. This means I can reach Ollama on my laptop like this
> xh nostromo:11434
HTTP/1.1 200 OK
Content-Length: 17
Content-Type: text/plain; charset=utf-8w
Ollama is running
Neat!!!
Agent & auto-complete
I use pi for coding agents3 and continue for auto-complete in VSCode. The latter has, unfortunately, recently been acquired by Cursor so I’ll probably have to switch at some point. The extension is open source so I expect forks to be available eventually.
Setting up both becomes super simple: I point them to nostromo:11434 as the API base and give my super secret API key that you’ll see in just a moment.
// models.json for pi
{
"providers": {
"ollama": {
"baseUrl": "http://nostromo:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{
"id": "qwen3.6:27b"
}
]
}
}
}
// config.yaml for continue
name: Autocomplete
version: 1.0.0
schema: v1
models:
- name: qwen2.5-coder:1.5b
model: qwen2.5-coder:1.5b
provider: ollama
apiBase: http://nostromo:11434
roles:
- autocomplete
The API key can of course be anything - it’s not required by Ollama at all but some setups expects it to have a value.
That’s all
I now have fully functioning auto-complete and coding agents, for the low price of whatever I pay for having my desktop running (it’s not much). My privacy guarantees are also better - albeit not perfect.
It should be noted that this setup probably can’t handle multiple running agents in complex scenarios. That’s fine for my use cases and workflow but if full yolo vibe coding is required it’s probably not the best solution.
Thanks for reading!
Obviously, the GPU was relatively costly but since it’s a previous investment it’s free by girl math standards. In fact it’s barely a depreciating asset due to VRAM demands! ↩︎
Technically EndeavourOS which is Arch based, but same difference. ↩︎
I prefer running
piin a container. You can see my setup here. ↩︎
