Commit Graph

26 Commits

Author SHA1 Message Date
Miguel Palhas 9b4a2b44dc feat(opencode): allow bash on yolo only
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 2m1s
Global config keeps bash at "ask", which stalls every unattended opencode
session on git and grep. yolo runs the PR daemon's reviewers, so the prompt
is a deadlock there rather than a gate.

Merges like claude-settings.json: home/yolo/opencode.json holds only the
override, so agents, commands and skills still come from common. Reviewers
run on branches under review, so this drops that prompt too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 11:25:08 +01:00
Miguel Palhas ba5b618e49 refactor(yolo): take the agent-skills units from their own module
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m57s
pr-daemon, hourlog and week-review are defined by the agent-skills
home-manager module now, next to the scripts they run; this host just
enables them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 22:20:44 +01:00
Miguel Palhas 7580edb82c fix(pr-daemon): pin TMUX_TMPDIR to the runtime dir
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m53s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 19:06:33 +01:00
Miguel Palhas 88abb49340 fix(pr-daemon): KillMode=process
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m53s
Agent tmux sessions the daemon starts live in its cgroup; a restart was
killing every session it had created.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 19:03:51 +01:00
Miguel Palhas 94e24f9277 feat(yolo): run the PR daemon as a user service
Watches GitHub and Gitea PRs and routes them to aoe sessions. Lives here
rather than in agent-skills' nix module for the same reason the timers
do: it belongs to one box.

Config and tokens are outside the store, so the unit refuses to start
without them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:30:56 +01:00
Miguel Palhas 074cb5faa1 chore: drop kimiclaude from aoe agents
Moonshot-backed wrapper is no longer used; only synclaude remains registered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 13:17:15 +01:00
Miguel Palhas 849cd3a5ef chore: sync aoe structured-session toggle from yolo
CI / lint (push) Successful in 38s
CI / eval (push) Successful in 2m26s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 12:22:23 +01:00
Miguel Palhas 0a4dd8a192 fix: bypass the ssh agent for github on yolo
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 2m4s
gpg-agent is the ssh agent here, and signing blocks forever on a pinentry
prompt with no TTY, so git push hung right after "Server accepts key".
The key file has no passphrase, so read it directly instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 21:11:28 +01:00
Miguel Palhas 8efd0a1139 feat: give yolo a distinct amber cursor
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m56s
yolo's desktop is only ever seen through a Moonlight window, so its cursor
needs to be tellable apart from the client's at a glance. Bibata-Modern-Amber
differs in both colour and silhouette from Nordzy.

Threads the theme through an option rather than setting it in one place: it
was hardcoded in cursor.nix, in hl.env, in the setcursor autostart, and twice
more in darkman's mode scripts, which re-set it on every light/dark switch and
would have reverted the override.

Also drops a stale hl.env pointing HYPRCURSOR_THEME at rose-pine-hyprcursor,
which no host installs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 16:06:01 +01:00
Miguel Palhas de527df7c4 feat: stream yolo at 4k
virtio-gpu exposes no NVENC/VAAPI, so sunshine software-encodes. Measured
x264 (superfast+zerolatency) on the 8 vCPUs: 73fps at 2160p against 135fps
at 1440p, so a 60fps client keeps roughly 20% margin.

Also brings the drifted agent-of-empires config upstream, which the
mutableFiles guard required before switching.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 15:56:56 +01:00
Miguel Palhas 3ee2f4db10 feat: run the aoe web dashboard as a service
CI / lint (push) Successful in 33s
CI / eval (push) Successful in 2m12s
Auth is off in the unit: traefik + authelia front it, and aoe rejects
--auth none on a wildcard bind unless --behind-proxy says so.
2026-08-18 09:28:32 +01:00
Miguel Palhas 92a7273ff3 fix: let yolo inherit the common claude model
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m53s
yolo pinned model to claude-fable-5[1m] while common sets opus[1m].
/model writes the live value into ~/.claude/settings.json, so any switch
away from fable-5 left the file drifted and mutableFiles aborted
activation on the next `nh home switch`. Dropping the override makes the
repo agree with the model actually in use.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:24:00 +01:00
Miguel Palhas c79436d340 refactor: fix yolo config drift and restart traps
CI / lint (push) Successful in 32s
CI / eval (push) Successful in 2m7s
yolo's .claude/settings.json was a full fork of the common file, not the
narrow override its comment claimed: sandbox, defaultMode, voiceEnabled,
$schema and feedbackSurveyState were absent, and five more keys had
diverged. It now holds only yolo's overrides and merges over common via
recursiveUpdate. sandbox.enabled stays pinned false — inheriting it would
newly sandbox every Bash call on a box built for unattended agents.

mutableFiles maps a source back to a repo path for the "bring changes
upstream" hint, which only works inside the flake tree. Generated sources
would print a /nix/store path to copy onto, so add upstreamPath.

rev and rev-deploy set Restart=always with RestartSec=2, which burns
systemd's default 5-starts-per-10s budget and parks the unit in `failed`
until a manual reset-failed. StartLimitIntervalSec=0 lifts the cap.

programs.nh.flake and home.mutableFilesRepoPath become mkDefault so yolo
overrides them plainly instead of with mkForce in three places.

Also clears the outstanding nixfmt and statix findings. The yolo system
derivation hash is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 07:32:08 +01:00
Miguel Palhas fbf5ce2616 fix: stream real frames from yolo instead of a black picture
Three separate faults, each producing a black Moonlight stream:

- sunshine's wlr backend takes wlr-screencopy's dmabuf path, which on this
  virtio-gpu returns empty buffers. Reproduced locally over 127.0.0.1, so it
  is not the network or the client. Switch to kms capture.
- hypridle locked the session and cut dpms, blanking the captured output with
  no console to unlock from. Disable it on this host.
- qemu picked the nvidia render node by readdir order, so virgl fell back to
  llvmpipe. Pin renderD128 via the VM's args.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 17:48:41 +01:00
naps62 2873d37bda chore: drop notify-hermes hooks
Removes 4 hook entries; PermissionRequest and SubagentStop had no others.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 13:05:41 +00:00
naps62 c57a430fd6 feat: chrome and agent-browser only on yolo
Drops zen-browser and downloads-cleanup. agent-browser was a global npm
install; nixpkgs has it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 12:57:25 +00:00
naps62 4dcf84d41c feat: per-host claude settings and machine profile
settings.json carries skipDangerousModePermissionPrompt and the rev hook
wiring, so yolo gets its own; other hosts keep the shared one. Machine
profile picks which agent-skills machines/<name>.md is imported.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 08:39:08 +00:00
naps62 032cea0db8 feat: adopt agent-skills, scope aoe config to yolo
Drops the stale skills/commands/CLAUDE.md from home/common/programs/claude
in favour of the agent-skills flake, which is the maintained copy. The
module keeps what agent-skills does not own: packages, statusline and
settings.json.

aoe's config.toml moves to home/yolo — it sets yolo_mode_default, which
starts sessions with permission checks skipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 08:35:08 +00:00
naps62 2e23c695a2 feat: install codex cli, add yolo ssh host aliases
cliPackage only points the desktop app at codex; it never put the cli on
PATH, so `codex` was missing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:59:34 +00:00
naps62 e0e71a44d1 chore: drop claude-rc
No longer used.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:49:39 +00:00
naps62 0501db564d fix: create claude-rc log dir
systemd does not create the parent of StandardOutput=append:, failing
every instance with 209/STDOUT on a fresh machine.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:46:26 +00:00
naps62 0fa1a31489 fix: flattened repo layout under ~/tea
Repos moved from ~/tea/<org>/<repo> to ~/tea/<repo>, so the rev and
agent-skills unit paths no longer resolved. Also captures aoe schema keys
added on first run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:40:42 +00:00
naps62 bb65e34bca chore: move yolo flake path to ~/tea/nixos-config
Also overrides the home-manager nh.flake, which sets NH_FLAKE and was
still pointing at the ~/projects default, so bare `nh home switch` never
resolved on this host.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 07:38:15 +00:00
naps62 7dc2b581d3 feat: declare aoe config as a shared module
Vendors config.toml and moves the package into common/programs/aoe, so
any host that wants aoe imports one thing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 06:46:15 +00:00
naps62 de79327942 fix: write claude-rc@ template as a plain file
home-manager starts every unit it manages, and starting a template with
no instance errors out, failing activation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 06:41:32 +00:00
naps62 77bdbe108d feat: add yolo host
New NixOS VM on proxmox, replacing the Ubuntu box. Reuses the existing
Hyprland config; remote access is Sunshine/Moonlight rather than xrdp,
since xrdp cannot drive a wayland compositor.

Two fixes here are not yolo-specific and affect any fresh install:
git at system level (nix needs it for the type = "git" hyprland input,
but git only came from home-manager, so neither rebuild could run), and
dropping the yogurt input, whose private repo made home-manager
un-evaluatable without GitHub auth.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 06:30:54 +00:00