nixos-config/docs/NAIVEINTENT-VS-PUREINTENT.md
Sridhar Ratnakumar 62d6272b14 doc
2026-06-19 13:51:45 -04:00

79 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# pureintent vs naiveintent — which to use for dev + agentic work
Both are AMD Zen 4 (Phoenix) 8c/16t boxes, so CPU is nearly a wash. The
real differences are **RAM, SSD, and form factor**. All numbers below
were measured directly on each machine (June 2026).
## Measured comparison
| | **pureintent** (Beelink SER8) | **naiveintent** (Lenovo ThinkPad 21ME) |
|---|---|---|
| CPU | Ryzen 7 **8845HS**, 8c/16t | Ryzen 7 PRO **8840HS**, 8c/16t |
| Sustained all-core clock | **4.59 GHz** | 4.27 GHz |
| Single-core throughput | ~4.55 GB/s sha (tie) | ~4.70 GB/s sha (tie) |
| RAM | 32 GB — 20 GB free, **already swapping (5.5 GB)** | **64 GB** — 55 GB free, 0 swap |
| SSD | Crucial P3 Plus (QLC, **DRAM-less**) | KIOXIA KXG8 (premium TLC) |
| Sustained write (4 GB, fdatasync) | **729 MB/s** | **3.1 GB/s** (4.3×) |
| Sequential read (direct) | 5.3 GB/s | 3.2 GB/s (through LUKS) |
| Free disk | 200 GB (**77% full**) | 782 GB (13% full) |
| Encryption | none | LUKS full-disk |
| Form factor | always-on mini PC | laptop (battery, lid, roams) |
Both run the `powersave` governor with `balance_performance` EPP
(amd-pstate active mode — normal, not a real powersave), so that's not
a differentiator.
## What it means
- **CPU: a wash.** Same silicon. pureintent holds ~7% higher *sustained*
all-core clock (mini-PC cooling beats a thin laptop chassis), so large
parallel Nix builds finish marginally faster on it. Single-core /
interactive latency is a tie. Not a deciding factor.
- **RAM strongly favors naiveintent (2×).** This is what bites agentic
work — several Claude Code agents + language servers + builds + a
browser + incus containers eat RAM fast. pureintent already dips into
swap at light load; naiveintent has 55 GB free.
- **Disk strongly favors naiveintent.** 4.3× faster sustained writes and
6× more free space, on a better drive. Agentic/dev I/O is write-heavy
(nix store, git, node_modules, compile artifacts, logs). pureintent's
QLC + DRAM-less drive at 77% full only degrades further. LUKS on
naiveintent is effectively free (AES-NI).
## Verdict
For *doing* heavy interactive + agentic work, **naiveintent wins
clearly** — 2× RAM and 4× write throughput dwarf pureintent's ~7%
multi-core edge.
The only caveat was form factor: a laptop that sleeps/roams makes a poor
always-on host for a service like Kolu. **naiveintent will be deployed
always-on and plugged in**, so that caveat is moot → **migrate to
naiveintent.**
## Migration notes
naiveintent's config is currently near-empty (`kolu` + `gc`); pureintent
carries the workhorse stack. To port the setup from
`configurations/nixos/pureintent/default.nix`:
- **Kolu** — `services.kolu.host = "naiveintent"` is already set. Revisit
`allowedOrigins` (pureintent allows its Tailscale MagicDNS origin) and
any Tailscale-IP binding.
- **home-manager shared modules** naiveintent lacks: `ssh-agent-forwarding`,
`controlpersist`, `claude-code`, `work/juspay.nix`, `services/vira.nix`,
`services/drishti`.
- **incus** stack (`beszel.nix`, `incus`) + the `core.https_address`
preseed, if you want anywhen/containers and the incus UI.
- **remote builders** (`buildMachines` + `sincereintent.nix`).
- the dbus-broker / NetworkManager-wait-online activation workarounds.
Won't move cleanly:
- **drishti** CI-fleet monitoring depends on pureintent-local ssh aliases
(`pu`-managed `ssh_config`, `kolu-ci-1..8`, reachable only from
pureintent). Either keep drishti on pureintent or move the `pu` state.
- Decide whether pureintent is decommissioned or kept as a secondary
builder.
Regardless of the outcome: **GC pureintent** — at 77% full on a degrading
QLC drive it needs headroom.