What the box does, and what it doesn't
Be clear about the split before you buy anything. When you run Claude Code or an app built on the Claude Agent SDK, the model runs in Anthropic's cloud and is reached over the API. Claude Code's own requirements list an internet connection as mandatory and a Pro, Max, Team, Enterprise or Console account. The mini PC runs everything around the model: the agent loop, the shell it executes commands in, git, your test suites, MCP servers, headless browsers, and the scheduler that kicks jobs off at 3 a.m. That is why a modest used box works here, and why you do not need a GPU for this job. If you want the model itself to run on your hardware, that is a different and much heavier workload; see running local LLMs on a mini PC.
Claude Code and Agent SDK requirements
Claude Code's published system requirements are modest: macOS 13+, Windows 10 1809+ or Windows Server 2019+, Ubuntu 20.04+, Debian 10+ or Alpine 3.19+, 4 GB+ RAM, and an x64 or ARM64 processor. The native installer does not need Node.js at all; only the optional npm package asks for Node.js 22 or later. If you build your own agent with the Agent SDK, the runtime is Python 3.10+ or Node.js 18+, and the SDK bundles its own Claude Code binary.
Sizing is where the SDK documentation is most useful. Each agent session is a separate long-lived subprocess with its own shell, working directory and transcript on disk. Anthropic suggests 1 GiB RAM, 5 GiB disk and 1 CPU per agent as a starting point, says memory grows with session length and tool activity, and gives a simple formula: agents per host equals host RAM minus overhead, divided by the peak RAM one session actually reaches. Measure a real session under your real tools rather than trusting the floor. In practice that means 32 GB is a comfortable target for a few concurrent agents, and 64 GB is where browser-heavy fleets stop fighting each other.
Scheduled agents with cron or systemd timers
For unattended jobs, Claude Code's non-interactive mode is the building block: `claude -p "…"` runs one task and exits with code 0 on success and non-zero on failure, so cron or a systemd timer can branch on the result. The docs recommend `--bare` for scripted runs (it skips auto-discovered hooks, plugins and MCP servers and needs `ANTHROPIC_API_KEY` set), `--output-format json` returns the result plus an estimated cost figure, and `--permission-prompts none` denies anything that would otherwise wait for a human. Pair that with a tight `--allowedTools` list and a dedicated Linux user, and a nightly dependency-update or report-writing agent is a few lines of config.
Browser agents are the heavy part
Agents that drive a real browser through Playwright are the most demanding thing you will put on this box, because every session is a full Chromium instance. Playwright's current requirements are Node.js 22, 24 or 26, and on Linux it lists Debian 12/13 and Ubuntu 22.04, 24.04 and 26.04 on x86-64 or arm64. Playwright does not publish a RAM figure per browser, so budget by measuring: launch your typical number of sessions, watch peak memory, and size up from there. That is the main reason the picks on this page favor 64 GB-capable machines. Ubuntu 24.04 LTS satisfies both Claude Code's and Playwright's support lists, which makes it the low-friction OS choice.
MCP servers and webhooks
MCP servers come in two standard transports. With stdio, the agent launches the server as a local subprocess, so it costs a little RAM per server and nothing else. With Streamable HTTP, the server is an independent process with its own endpoint; the spec says local servers should bind to 127.0.0.1 rather than every interface and should authenticate connections. Keep them on localhost and you avoid most of the risk.
Webhooks (a GitHub push, a form submission, a payment event) need a way in from the internet. Instead of forwarding a port on your router, use a tunnel. Cloudflare Tunnel's `cloudflared` makes an outbound-only connection, so the box needs no publicly routable IP and you can block all inbound traffic. Tailscale Funnel routes public traffic to a local service on ports 443, 8443 or 10000, TLS only, is available on all Tailscale plans, and has bandwidth limits you cannot configure, which is fine for webhooks.
Why a mini PC beats a laptop or a VPS for this
- Versus an old laptop: a laptop wants to sleep when the lid closes, rides on Wi-Fi, and keeps a battery sitting at full charge for months. A mini PC has none of those habits, takes a wired connection, and can be set in BIOS to power back on after an outage.
- Versus a cloud VPS: a VPS bills every month forever; a mini PC is a one-time purchase plus electricity. Your repos, browser profiles, API keys and the files agents work on stay in your house instead of on someone else's disk.
- Where the VPS still wins: a data center has redundant power, a static IP and nobody tripping over the cable. If your agents serve paying customers, host the public endpoint in the cloud and let the home box do the private work.
Power is the running cost that matters. At the 11 to 14 W idle that ServeTheHome measured on a ThinkCentre M720q, the yearly electricity estimate on this page stays small, and agent bursts barely move the average. Anthropic's own hosting guide points out that model token spend typically dwarfs infrastructure cost, so the box will rarely be your biggest line item.
How much machine you need
- One or two scheduled agents, no browser: any 8th-gen 1-liter tiny with 16 GB, such as the ThinkCentre M720q.
- Several agents plus Playwright: six or more cores and 32 GB.
- A small fleet of browser agents, or agents next to Proxmox VMs and workflow tools like n8n: a 64 GB-capable box such as the ThinkCentre M75q Gen 2.
If you are choosing between the three big business brands, our ThinkCentre vs OptiPlex vs EliteDesk comparison covers the differences in RAM limits, storage layout and remote management.























