OS·WholeTech
OS·WholeTech / Linux / Analysis
🔬 Analysis · alternatives · gaps

The Linux setup, under the microscope.

The Linux guide gives you the clean, opinionated path. This page is the honest second pass: why each choice was made, what else you could have done, what we deliberately left out, the trending tools worth a look, how to get ready for Mythos, and how to lock the whole thing down.

Written May 2026. The AI-tooling world moves weekly — this is a snapshot of the landscape and the reasoning, not gospel.

Part 1

The steps, re-examined

Each guide step made one choice for clarity. Here's the reasoning and the roads not taken.

1

SSH, apt & Node — the foundation

We chose: SSH in as root@droplet, apt for system packages, and Node LTS via the official NodeSource repo.

Why: apt is built into Ubuntu/Debian — no extra installer to trust. NodeSource gives a current Node because three of the agents are npm packages and distro Node is often years stale.

Alternatives worth knowing
  • nvm or fnm instead of a single system-wide Node — let you switch Node versions per project and install without sudo. We skipped this to avoid an extra layer, but it matters the moment two projects need different Node versions.
  • NodeSource repo vs. distro packages: we used NodeSource for a modern LTS. The distro's own nodejs package is simpler but usually too old for the agents — a real tradeoff, not a no-brainer.
  • dnf / pacman on non-Debian distros — if you're on Fedora/RHEL it's sudo dnf install, on Arch sudo pacman -S. Same idea, different package manager; the guide assumes apt.
  • The curl … | bash installers vs. native packages — several tools here (Node setup, Tailscale, Ollama, the Claude native installer) are one-line pipe-to-shell scripts. Convenient, but you're executing remote code as you fetch it; where a signed apt/dnf package exists, it's the more auditable path.
2–4

The three agents (Claude Code · Codex · Gemini)

We chose: npm global installs of each, with the headless URL-login flow.

Why: one consistent install method across every OS, easy to teach — and the print-a-link login is exactly what a desktop-less server needs.

Alternatives & notes (May 2026)
  • Claude Code now runs on Opus 4.7 (87.6% on SWE-bench Verified) with Agent Teams, Agent View, /goal workflows, and auto mode — worth turning on once you're comfortable. The native binary installer (curl -fsSL https://claude.ai/install.sh | bash) avoids needing Node at all.
  • Codex got a GPT-5.5 refresh that several 2026 rankings now place at #1 for raw coding — a real reason to keep it in the rotation, not just as a backup.
  • The browser-login URL flow is the right call on a headless server, but note: each tool prints a one-time link you open on your laptop or phone. If you're behind a corporate proxy or the link expires, re-run the login — don't paste an API key onto the server unless you have to.
  • All three also have VS Code extensions — and on a remote box those are arguably more useful than the editor would be on your laptop, because Remote-SSH lets your local VS Code drive the agent on the server. Covered in full as the editor route below.

Hermes — the bonus 4th agent

We chose: the native one-line installer (or pip install hermes-agent).

Why: on Linux, Hermes installs natively — the installer sets up everything it needs (Python, Node, ripgrep, ffmpeg), so there's no compatibility shim to worry about.

Notes
  • It's model-agnostic — point it at Nous, OpenAI, Anthropic, or OpenRouter, so you can reuse an account you already have rather than adding a fifth login.
  • The pip path is the cleaner one if you already keep a Python environment; the curl installer is faster if you don't.
5

Tailscale — the network

We chose: Tailscale, signed-in with one account across devices, plus tailscale up --ssh on the server.

Why: --ssh is the quiet hero here — it lets you reach the box from any device and means you can close public SSH entirely. That's the single biggest security win in the whole guide.

Alternatives
  • ZeroTier and Netbird — open-source mesh-VPN competitors; Netbird is self-hostable end to end.
  • Raw WireGuard — maximum control, much more manual.
  • Cloudflare Tunnel — exposes one service publicly without opening ports; different job than Tailscale (publish vs. private mesh).
  • We didn't cover Tailscale ACLs in the guide — they're how you stop, say, the kids' laptop from reaching your Ollama or SSH-ing into the droplet. Covered in Security below.
6

Ollama — local models

We chose: Ollama + llama3.2 as a safe first model, with a systemd override to expose it across the tailnet.

Alternatives & better models
  • LM Studio (friendly app window), Jan (open-source offline ChatGPT), llama.cpp/llamafile (lower-level) — all run local models; though on a headless server, terminal-native Ollama is the natural fit.
  • Better models to pull now: qwen3-family (Qwen 3.6 is a standout for coding, with MCP-native tool use and huge context), deepseek-r1 for reasoning, gemma3 for small/fast. llama3.2 is a gentle starting point, not the ceiling.
  • The systemd override matters — and so does GPU. Editing ollama.service to listen on 0.0.0.0 is how you share it across the tailnet, but it also exposes a server with no password (see Security). And most cheap droplets have no GPU, so keep models small there; for real speed, GPU drivers (NVIDIA/CUDA) on a home box or GPU cloud do the heavy lifting.
The big one: the guide connects as root@droplet. For clarity the guide SSHes in and installs everything as root. That's a real security smell — every agent, every curl … | bash, and every model server then runs with full system privileges. The better practice on any server is a non-root user with sudo: create one, install and run the agents as that user, and only elevate with sudo when you actually need to. This is the most important critique on the page — see Part 2 and Part 5.
Optional · the editor route

The editor route — VS Code on your laptop, code on the server

On a headless Linux box, running a graphical editor on the server is usually the wrong call — it adds a desktop you don't need, eats RAM, and slows the box you're paying for. The right pattern is different: run VS Code on your laptop and reach the server via Remote-SSH, so the editor lives on your desk and the agent lives on the box. Or, if you specifically want a browser-based editor on the server, code-server is the right tool. Here is the honest, fully-detailed editor path for a Linux setup.

The two real paths on Linux Install VS Code (for the local-editor path) Pick one or two AI extensions, not all of them Five minutes to set it up well Pros — what the editor route gives you Cons — what it costs you When to pick which
🪟The honest take: on a remote box the terminal-first ethos is right because what you want from the server is throughput, not chrome. The editor route's real value on Linux is using your laptop's VS Code to drive the server — keeping the server lean while still getting a window with diffs. Running VS Code on a Linux desktop is fine too; running it on the same box that's serving Ollama and the agents is usually not.
Part 2

What we left out — and why

The guide is deliberately a clean six-step spine. That clarity has a cost: real omissions — and on a public server, some of them are security gaps, not just nice-to-haves. Here they are, honestly, with the reason each was cut.

Left outWhat it isWhy it was cut
Hermes AgentNous Research's self-improving, model-agnostic coding agentGenuinely an oversight in v1 — it's newer and niche. Now added as the bonus 4th agent. A good reminder that "the big three" isn't the whole field.
A non-root userA regular account with sudo instead of working as rootA real omission, and the important one on a server. The guide runs as root for clarity; you should create a sudo user and run the agents as that user. See Part 5.
A firewall (ufw)Uncomplicated Firewall — controls which ports the box acceptsCut to keep the guide short, but a public droplet should run one: sudo ufw allow OpenSSH && sudo ufw enable, then close everything else (with Tailscale you can close public SSH too).
fail2banBans IPs that hammer your SSH with failed loginsDeferred. On a public IP you'll see brute-force attempts within minutes; sudo apt install fail2ban stops the noise.
unattended-upgradesAutomatic install of security patchesSkipped for simplicity. On a server you won't babysit, auto-patching is exactly what you want: sudo apt install unattended-upgrades.
GitVersion control — how you save and undo real workInstalled in Step 1's basics but never taught. The moment you do serious coding you need to actually use it (git init, commit, push).
Python + uvThe runtime many AI tools (most MCP servers) needSkipped to keep Node as the headline runtime. sudo apt install python3 python3-pip and uv fill the gap (Hermes' installer pulls Python in for you).
MCP serversThe standard plugs that connect agents to your files, GitHub, browser, dataThe biggest conceptual omission. MCP is where the real power is going (see the tool map). The guide installs the agents; MCP is the next layer.
DockerContainers — isolate apps and agents from the hostCut to avoid a heavy concept early. But it's the clean way to sandbox an agent so it can't touch the whole server: curl -fsSL https://get.docker.com | sh.
OpenCodeThe leading open-source CLI agent (150K+ GitHub stars, LSP, multi-session)Cut to keep the core to vendor-backed tools with simple logins. Arguably the most defensible addition — see Trending below.
🧭The pattern: we cut anything that wasn't needed to get it working fast. On a single laptop that's fine; on a public server it leaves real gaps — server hardening (non-root user, firewall, fail2ban, auto-patching) was deliberately deferred to this page, plus Git, Python, MCP, and Docker on top.
Part 4 · the next wave

Getting ready for Mythos

Mythos is Anthropic's first model specialized for one domain: defensive cybersecurity. Announced April 7 2026 as the engine of Project Glasswing, it has already found a 27-year-old vulnerability in OpenBSD and bugs in FFmpeg. It is invitation-only ($25 / $125 per million tokens), shipped to 12 founding orgs and 40+ critical-infrastructure partners — not a download. Full briefing →

So "getting ready" isn't an install — it's preparing your environment so that when domain-specialized models (Mythos and the wave behind it) open up, you can point them at something useful:

🔭Honest take: as an individual you won't get Mythos itself soon. What you can do is build the habits — MCP, Git, a private network, a hardened machine — that make any future specialized model immediately useful. That's the real "future-proofing" (see the tool map).
Part 5 · don't skip this

Securing the install — the part most guides skip

This is the most security-critical guide in the set: a public server, reachable from the internet, running tools that can read files, execute commands, and serve a model — installed as root. That's a lot of power facing a lot of attackers. Here's how to keep it from biting you — Linux/server specifics first, then the universal rules.

Real incident (Feb 2026): Check Point Research disclosed that a malicious config could redirect Claude Code's traffic via the ANTHROPIC_BASE_URL setting and exfiltrate your API key in plaintext. Anthropic patched it before disclosure — the lesson stands: keep Claude Code updated, install only from official sources, and be suspicious of any config that reroutes where a tool "phones home."
Don't run as root SSH — the front door Firewall, fail2ban & auto-patching Lock down Ollama & Tailscale Protect your keys & logins Keep the agents on a leash Supply chain (the install commands themselves)
✓ Good shape when: you're a non-root sudo user, SSH is key-only (or Tailscale-only with port 22 closed), ufw + fail2ban + unattended-upgrades are running, no keys in plaintext, agents can't read your secrets, Ollama is Tailscale-only, and Tailscale has ACLs + key expiry. That's a server you can hand a vulnerability-finding model without flinching.
Back to it

Next