More Menu
Reading ListGanti TemaSearch
Reading List

Queue · 0 items

Your reading list is empty. Save articles to read them later.

Start Reading

My Dev Laptop Setup: Windows 11, WSL 2 Ubuntu & 9Router

Iwan Efendi6 min
My MSI Modern 14 laptop setup with Windows 11, WSL 2 Ubuntu, and 9Router AI gateway

How I set up my MSI Modern 14 laptop with Windows 11, WSL 2 Ubuntu 26.04, and 9Router AI gateway for modern web development.

Artikel ini tersedia dalam Bahasa IndonesiaBaca dalam ID →
Baca dalam IDID
I've never been the kind of developer who obsesses over the perfect setup. Truth is, I'm just an amateur who loves tinkering — trying things, breaking them, and occasionally stumbling into something that actually clicks. A few months ago, I got tired of the constant context-switching between Windows for daily tasks and Linux for development. That's when I decided to give WSL 2 a serious try, paired with a local AI routing setup I'd been hearing about. What I ended up with genuinely surprised me. It's not perfect, but it works well enough that I want to share it — partly because I wish someone had laid this out for me when I was Googling around. This is my daily driver: an MSI Modern 14 B11MOU. Nothing flashy, just a reliable workhorse I call SILULA (yes, I name my laptops — don't judge). It's an entry-level machine I've slowly upgraded over time.

Hardware Specs

Here's what SILULA is packing under the hood:
  • Processor: 11th Gen Intel Core i3-1115G4 @ 3.00GHz (2 cores, 4 threads, Tiger Lake)
  • RAM: 32 GB DDR4 (31.7 GB usable) — the single biggest upgrade that makes everything possible
  • Storage: 512 GB NVMe SSD (211 GB used, about 255 GB free)
  • Graphics: Intel UHD Graphics (128 MB dedicated video memory)
  • Display: 14" Full HD (1920x1080) @ 60 Hz
  • External Monitor: MSI PRO MP161 E2 Portable Monitor (handy when working at the office or a cafe)
  • Peripherals: Logitech M550 mouse + Logitech POP Icon Keys keyboard (managed via Logi Options+)
The 32 GB RAM upgrade is honestly the reason this dual-core i3 still feels snappy. Windows host, WSL 2, databases, multiple editor tabs — it handles all of them without breaking a sweat. The 512 GB SSD is enough for daily dev work, though I do keep an eye on storage since WSL images and project files add up quickly. If you're considering a laptop upgrade on a budget, max out the RAM first before worrying about the CPU. I talk more about this in my RAM upgrade comparison.

Host OS: Windows 11

SILULA runs Windows 11 Home Single Language — the regular release channel, nothing fancy. I keep it updated through normal Windows Update, and the recent quality improvements have made a noticeable difference in day-to-day stability. On the Windows side, I keep things minimal. Only apps that need native GUI or direct hardware access live here:
  • Runtimes & SDKs: Node.js 24.16.0, Python 3.13.13, Git 2.54.0, GitHub CLI 2.93.0, .NET SDK 10.0.300
  • Productivity: Notion, Telegram Desktop, PowerToys (lifesaver for window management), OBS Studio, MegaSync, Zoom
  • Enterprise: SAP GUI for Windows 8.00 (Patch 15) — real life includes enterprise software
After a fresh Windows install, I always run through my own post-install checklist to strip bloat and lock down privacy settings before installing anything else.

WSL 2: Ubuntu 26.04 LTS

All development happens inside WSL 2 running Ubuntu 26.04 LTS (Resolute Raccoon) on kernel 6.6.114.1-microsoft-standard-WSL2. No custom .wslconfig — Windows 11 handles resource allocation well by default:
  • CPU: All 4 logical threads available
  • RAM: Dynamic allocation — typically 8–12 GB out of the 15 GB mapped to the VM
  • Storage: Sparse VHD that grows as needed
Inside the WSL environment:
  • Shell: GNU Bash 5.3.9
  • Node.js: v22.22.3 (managed via NVM)
  • npm: 10.9.8
  • Python: 3.14.4 (using uv v0.11.18 as the package manager — way faster than pip and handles PEP 668 gracefully)
  • Git: 2.53.0
  • Hermes Agent: v0.17.0 at /home/snipgeek/.local/bin/hermes
One thing that caught me off guard — Python on Ubuntu 26.04 doesn't ship pip enabled by default due to PEP 668. I panicked for a second, but uv turned out to be a happy accident. It's genuinely faster and isolates dependencies into .venv automatically. If you're torn between dual-boot and WSL, I've compared both approaches here.

The AI Gateway: 9Router + Hermes Agent

Here's where things get interesting. I run a local AI routing gateway called 9Router on the Windows host and connect my WSL 2 tools to it.

What is 9Router?

9Router is an open-source AI routing proxy that exposes a single OpenAI-compatible endpoint (/v1). It runs on localhost:20128 and does two things exceptionally well:
  1. RTK Token Saver: Compresses CLI tool outputs (like git diff, grep, error logs) before sending them to the LLM. I've seen 20–40% token savings without losing accuracy.
  2. Smart Multi-Provider Combo: Falls back through a chain of providers if one hits a rate limit or runs out of quota.

My Model Configuration

I keep two combos configured:
  • free-tier: Routes through Kiro AI (kr/claude-sonnet-4.5, kr/glm-5) and OpenCode Free (oc/*). Handles my daily coding — for free.
  • 9Router-Pro: Premium fallback chain (deepseek-v4-flash, gemini-3.5-flash, step-3.7-flash:free) for when the free tier gets congested.

Connecting WSL 2 to 9Router

This took me a minute to figure out. WSL 2 runs on a separate virtual network (Hyper-V bridge), so localhost:20128 from inside WSL won't reach the host's 9Router. The fix is simple — point Hermes to the WSL bridge gateway IP instead:
# ~/.hermes/config.yaml
provider: custom
api_base: http://172.20.192.1:20128/v1
model: free-tier
fallbacks:
  - DeepSeek-V3.2-Speciale
  - step-3.7-flash:free
  - gemini-3.5-flash
  - deepseek-v4-flash
To find your own WSL gateway IP, run ip route show | grep default inside your Ubuntu terminal. The first entry (usually something like 172.x.x.x) is your host's IP.

Code Editors & Tools

Since I experiment with a lot of AI coding tools, I keep several editors on Windows (they access WSL files via \\wsl.localhost\Ubuntu\):
  • Antigravity IDE (2.1.1) & Antigravity (2.1.4): Main agentic coding environment
  • Cursor (3.9.8) & Trae (3.5.60): VS Code forks optimized for AI-assisted workflows
  • Zed (1.8.2): For when I just need to open a file and write code fast
  • Kiro (0.12.333) & Qoder (1.106.3): Supplementary AI assistants
All of them point to the local 9Router endpoint as their LLM provider, which means I never worry about API quotas or usage limits during a coding session.

FAQs

1. Isn't a dual-core i3 too slow for WSL 2 and AI tools?

Not really. The heavy LLM processing happens in the cloud via 9Router's provider chain — the laptop only sends prompts and renders results. The 32 GB RAM upgrade is what keeps everything smooth.

2. Why no .wslconfig to limit WSL 2 memory?

With 32 GB of RAM and most workloads inside WSL 2, the default dynamic allocation works great. Hard-limiting WSL to 8 GB would just cause swapping and slower compilations.

3. Why doesn't pip work in WSL 2 Ubuntu 26.04?

Ubuntu 26.04 enforces PEP 668, marking system Python as externally managed. Instead of fighting it, I use uv — it's faster, respects .venv isolation, and sidesteps the restriction cleanly.

Why This Setup Works for Me

I've tried pure Linux, dual-boot, and macOS. But this Windows 11 + WSL 2 + 9Router combo hits a sweet spot. I get native Linux development via WSL, keep Windows for the apps that need it, and route everything through a local AI gateway that keeps my workflow uninterrupted. If you're an amateur tinkerer like me and you've been thinking about trying WSL 2 or setting up a local AI router, I hope this helps you skip some of the Googling I had to do. Got questions about your own setup? Drop a comment below — I'd love to hear what's working for you.

References

Topics

Topics in this article

Explore related topics and continue reading similar content.

Share this article

Discussion

Preparing the comments area...

You Might Also Like