VPS Identity Map

MATERIALS.
STRUCTURE. HOMEDIR, DEPTH 2
LAYERS. 11, EXPLODED BY SIZE
UNIT. VPS-HOME-01
HOST. hetzner-vps · user claude
SHEET. 216G used of 451G · 217G free
MATERIAL. 143 G in ~ · 66 dirs (35 hidden) · 60 loose files
SURVEY. 2026-09-28 21:49 UTC · figures from live du / df
CONDITION. live, rebuilt on a timer
1 2 3 4 5 6 7 8 9 10 11 100 CM 150 CM 200 CM 102 CM
1. LECTOR/.CLAUDE, 49 G, 2. LECTOR/.CACHE, 23 G, 3. WORKTREES/LECTOR-AUDIT/.CACHE, 15 G, 4. PLATFORMIO, 14 G, 5. TOOLS, 5.3 G, 6. HERMES, 3.7 G, 7. .CACHE, 2.9 G, 8. PROJECT ARCHIVE, 2.5 G, 9. .LOCAL, 2.3 G, 10. TOOLS/TESTKIT-WWW, 2.2 G, 11. PROJECTS/ACTIVE/LECTOR-RETURN/.CACHE, 2.1 G
01

Where the space went


#SizePathWhat it is
0149 G projects/active/lector/.claudeagent session store living inside a git repo. Largest single blob on the box, and it is not code.
0223 G projects/active/lector/.cachebuild cache. Fully regenerable, nothing to lose.
0315 G worktrees/lector-audit/.cache16 G of it is .cache. An audit worktree last touched 30 Aug.
0414 G .platformioPlatformIO package cache, global to the box.
055.3 G toolsray, testkit-www, whisper-env, zig, hermes-webui.
063.7 G .hermesHermes runtime plus its node_modules.
072.9 G .cachepip, npx, misc. Safe to purge wholesale.
082.5 G projects/archivesee the structure sheet for detail.
092.3 G .localbins and tool installs.
102.2 G tools/testkit-wwwray, testkit-www, whisper-env, zig, hermes-webui.
112.1 G projects/active/lector-return/.cachesecond checkout of lector, 2.6 G sibling at lector-batt.
122.0 G .claudeClaude Code runtime and session history.
132.0 G .npmsee the structure sheet for detail.
141.9 G .rustupwith .claude 2.0 G, .npm 1.7 G and .npm-global 1.1 G.
151.8 G projects/active/lector-batt/.cachethird checkout of lector. Likely a dead fork.
161.4 G tools/ray/squashfs-rootray, testkit-www, whisper-env, zig, hermes-webui.
171.3 G projects/active/lector/.gitsee the structure sheet for detail.
181.1 G projects/active/lector/.piosee the structure sheet for detail.
191.1 G .npm-globalsee the structure sheet for detail.
20976 M goGo module and build cache.
21853 M projects/h4rg0s-motion/outrendered animation output.
22673 M appsgoogle-cloud-sdk, node_modules, and a gcloud.tar.gz already extracted.
23671 M projects/archive/lector-wallpapers/gallerysee the structure sheet for detail.
24615 M worktrees/lector-audit/.pio/build16 G of it is .cache. An audit worktree last touched 30 Aug.
A container is dropped from this list when something inside it is at least half its size, so projects loses to lector/.claude and lector loses to its own cache. Every row is a real owner of space, not a folder that merely contains other folders.
02

Structure


~/  143 G  (216G used on / · 217G free · 50%)

── WORK ──────────────────────────────
  projects/                85 G
      active/              82 G
      archive/             2.5 G
      h4rg0s-motion/       911 M
      herdr-mobile-relay/  58 M
      h4rg0s-style/        16 M
  worktrees/               17 G
      lector-audit/        17 G
      arch-reader/         207 M
      lector-touch/        78 M
      kioko-dark-loom/     37 M
      kioko-things-parity/ 19 M
      kioko-gcal-signin/   18 M
      kioko-things3-clone/ 18 M
      kioko-things-dests/  18 M
      naki-audit/          18 M
  gh-work/                 456 M
  chrome-testing/          390 M
  learning/                226 M
  videos/                  189 M
  showreel/                143 M
  vaults/                  105 M
      nue/                 104 M
  my-agent/                26 M
  hub/                     22 M
      backups/             15 M
      ktf-tmp/             5.0 M
  code/                    1.8 M
  fonts-delivery/          96 K

── TOOLS & RUNTIMES ──────────────────
  .platformio/             14 G
  tools/                   5.3 G
      testkit-www/         2.2 G
      ray/                 1.9 G
      whisper-env/         441 M
      zig-x86_64-linux-0.15.2/ 380 M
      hermes-webui/        243 M
      testkit-tools/       13 M
  .hermes/                 3.7 G
  .cache/                  2.9 G
  .local/                  2.3 G
  .claude/                 2.0 G
  .npm/                    2.0 G
  .rustup/                 1.9 G
  .npm-global/             1.1 G
  .grok/                   612 M
  .t3/                     437 M
  .cargo/                  433 M
  .config/                 386 M
  .codex/                  355 M
  .cua-driver/             252 M
  .opencode/               239 M
  .fonts/                  89 M
  .bun/                    86 M
  .agent-reach-venv/       81 M
  .gemini/                 64 M
  .wrangler/               26 M
  .agent/                  3.8 M
  .agents/                 568 K
  .readwise/               156 K
  .helmrig/                136 K
  .ssh/                    52 K
  .superpowers/            48 K
  .pytest_cache/           28 K
  .claude-monitor/         20 K
  .skillclaw/              20 K
  .supabase/               16 K
  .gnupg/                  12 K
  .vscode/                 8.0 K
  .mcporter/               8.0 K
  .calibre-web/            4.0 K
  .xurl/                   4.0 K

── DRAFTS / SCRATCH ──────────────────
  backups/                 452 K
  incoming/                412 K
  workspace/               384 K
  bin/                     152 K
  tmp/                     116 K
  asahi-watch-archive/     84 K
  reports/                 76 K
  scripts/                 20 K
  '/                       16 K
  Library/                 12 K
  jfaudit/                 8.0 K
  records/                 4.0 K

── LOOSE FILES AT ROOT: 60 ────────────────────
  AGENTS.md · HERDR_TELEGRAM_GUIDE.md · PROJECTS.md · asahi-watch-out.md · asahi-watch-prompt.txt · asahi-watch-supervise.sh · asahi-watch-tmp-asahi.xml · asahi-watch-tmp-lina.xml · check_380.py · check_asahi_and_iso.py · check_asahi_gh.py · check_asahi_prs.py · check_asahi_prs_detail.py · check_batch.py · check_commit.py · check_details.py · check_external.py · check_github.py · check_iso.py · check_issues.py · check_omacom.py · check_repo.py · claude-vps-task.md · claude-vps-task2.md · dualboot-omarchy-gaming.md · framework-ai-laptop-report.md · gemini-approver-run.py · imgme.command · orchestrator-models.md · probe_ladder.py · reader_duplication_map.txt · run-claude-task.sh · run-claude-task2.sh · skills-lock.json · .bash_history · .bash_logout · .bashrc · .bashrc.bak.1789930978 · .claude.json · .claude.json.bak · .claude.json.bak-1779270260 · .claude.json.tmp.1310454.11ede2235a9c · .claude.json.tmp.3425241.af1d4ec67e39 · .cloud-locale-test.skip · .cwa_watchdog_fails · .gitconfig · .gitconfig.pre-emailfix · .gitignore_global · .hanja_posted · .kualia_oauth.json · .lesshst · .npmrc · .patreon_session · .patreon_token · .profile · .readwise-cli.json · .substack_sid · .sudo_as_admin_successful · .tmux.conf · .zshrc
03

What I recommend


01CRITICAL

Regenerable build cache is the cheapest win

lector .cache, lector-audit .cache, the home .cache and .npm/_npx are all reproducible from source. Nothing to lose. Run this first, it is the whole first hour of work.

02HIGH

lector/.claude is the largest thing on the box

An agent session store living inside a git repo, and it is now bigger than the source it sits next to. Either it belongs under ~/.claude with a retention policy, or it is stale. Biggest single win on the sheet, and the one I want to read inside before touching.

03HIGH

lector-audit is a finished audit nobody closed

A worktree whose audit completed weeks ago, still holding a full build cache. Check the branch is merged, then remove the worktree.

04MEDIUM

Several checkouts of one project

lector, lector-return, lector-batt, lector-koreader, lector-fonts-dist, plus the lector-audit and lector-touch worktrees. Two are likely dead forks. The real cost is not the bytes, it is not knowing which one is truth.

05MEDIUM

Loose files in $HOME

A pile of one-shot check_*.py probes from a single audit run, superseded, plus task notes and rotating config backups. A home directory should hold directories. These belong in hub/audits/<date>/.

06MEDIUM

Six catch-all folders, one category

incoming, records, reports, tmp, workspace, jfaudit, backups. All near-empty, all meaning something different to whoever made them. Collapse to one scratch/ plus a real archive/.

07MEDIUM

Agent runtimes outnumber the ones in service

The canon says two agents are live. The home directory carries config for six. Worth deciding which are actually in service, for the bytes and for the honesty of the rules.

08LOW

A directory literally named '

~/' exists and contains /home/claude/. A script ran a mkdir with a stray quote. Sixteen kilobytes, harmless, and it poisons every future glob. Delete on sight, then find the script.

09LOW

Stale credential and config backups

Multiple .claude.json.bak and .claude.json.tmp files, a timestamped .bashrc.bak, a .gitconfig.pre-emailfix. The bytes are nothing. The risk is restoring a stale credential store by accident.

10LOW

Archives still sitting next to their extraction

A gcloud tarball beside the extracted SDK, a zig tarball beside the extracted toolchain. Already unpacked, so the archive is pure weight.

11LOW

archive/ has no expiry rule

Dead forks, finished side-projects and a gigabyte of wallpapers with nothing stating what archive means or when a project gets deleted. One paragraph in AGENTS.md, then act on it once.

04

Proposed shape


~/
  projects/       the only place code lives. active/ · archive/ (with a stated expiry rule)
  vaults/         notes. nue · h4rg0s-brain
  tools/          what this box runs, not what it builds
  hub/            HANDOFF.md, JEV.md, audits/<date>/, one-off probes under audits/<date>/
  media/          videos + showreel + Pictures, currently three folders for one thing
  scratch/        incoming · tmp · records · reports · workspace · jfaudit collapse into this
  bin/ scripts/   entry points and helpers, currently a small amount of signal spread over seven dirs
  code/           either promote soundtap into projects/, or delete this dir as a mistake
  ── everything else is a dotfile and belongs there ──
  .hermes .claude .config .local .cache .npm …

Two rules that would stop most of this coming back:
  1. no loose files in ~ — anything ad-hoc goes in scratch/ or hub/audits/<date>/
  2. code only lives in projects/ — a second checkout is a worktree under worktrees/, never a sibling folder