Commit Graph
100 Commits
Author SHA1 Message Date
kyleandClaude Fable 5.1 b632e20fd6 dixie: new host — Aurora R11 helper-tier inference node
Alienware Aurora R11 (i7-10700, 64 GB, one RTX 3060 12 GB today; second card
when its fans are replaced). Headless, Wi-Fi only, unencrypted root by
decision (always-on box that must come back from a power cut unattended).

- llama.cpp router (CUDA, from unstable) on :11434 with the three helper
  models resident (--models-max 3): ornith 9B for the Hermes approval guardian
  / title / web_extract and Honcho deriver, qwen3-4b for Honcho dialectic,
  Qwen3-Embedding-0.6B for Honcho embeddings. Vision (qwen3-vl-8b) on its own
  on-demand server on :11433 since it does not fit beside them in 12 GB.
- Both servers tailnet-only (tailscale0 firewall); GPUs capped at 140 W
  (thermal hour 2026-09-21: 75 C plateau, no throttling).
- Model weights on the USB cache stick (ext4 label dixie-cache) bind-mounted
  into /var/lib/llama-server/models; filled from straylight with dixie-push.
- 6.12 LTS kernel (mt7921u for the AX9L USB Wi-Fi arriving 2026-09-24).
- SSH keys baked in: no console after install to add them from.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 21:53:40 -07:00
kyle 7be010f883 Merge branch 'llama-cache' 2026-09-21 01:16:27 -07:00
kyleandClaude Fable 5.1 09d16f2f39 llama-server: cap ornith 9B helper output (runaway guard)
As Hermes' auxiliary model it received requests with no max_tokens and a
generation ran to 46k tokens (~70 min) after the client's 60 s timeout,
starving the 35B. Cap thinking (reasoning-budget 2048) and total output
(n-predict 4096) server-side; preset verified against a throwaway router.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 01:13:30 -07:00
kyleandClaude Fable 5.1 0a4bec8935 straylight: add tirith (Hermes pre-exec command scanner)
Hermes resolves tirith from PATH before its self-downloaded
~/.hermes/bin/tirith. Taken from nixpkgs-unstable (0.4.1); nixos-26.05
only has 0.3.3.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-20 21:07:37 -07:00
kyleandClaude Fable 5.1 ef4a334062 llama-server: per-model prompt cache limits; 4 unified slots for ornith
--cache-ram is per resident model, so the 8 GiB default meant up to 24 GiB
with --models-max 3. Default it to 2 GiB and give ornith-1.5-35b-a3b 16 GiB:
worst case drops to 20 GiB while the model that thrashes gets twice the cache.

ornith also goes from 2 slots of 131072 to 4 slots over one unified 262144
pool: same GPU memory, twice as many live prefixes.

Measured over 30 h before this change: 235 cache evictions and ~196 minutes
spent re-processing prompts over 20k tokens.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-20 18:16:58 -07:00
kyle b3f66466bc add cliamp 2026-09-20 13:08:20 -07:00
kyle a893514708 llama-server: revert models-max 3 -> 2 (OOM-killed desktop on rebuild)
models-max 3 pulled all three residents into RAM and the OOM killer
took the desktop (and Hermes) mid-switch. models-max 2 is the safe
baseline; co-residency of all three is a future-optimization, not a
today one.
2026-09-19 21:51:50 -07:00
kyle 0543864f38 straylight: disable laguna, default to ornith 2026-09-19 21:23:42 -07:00
kyle 72261df517 straylight: nix-ld libraries for Hermes Desktop (Electron) 2026-09-19 20:56:54 -07:00
kyle e8c366b064 llama-server: models-max 2 -> 3
Three residents (Laguna ~64G + ornith-1.5-35b ~21G + qwen3-vl-8b ~6G)
fit the ~104G TTM window with KV headroom. Needed now that both Hermes
hosts run their main loops off the router: straylight (laguna-s-2.1)
and talos (ornith-1.5-35b-a3b) each want a resident slot, leaving the
VLM as the third.

Working-tree WIP (nix-ld libs for hermes desktop) intentionally left
uncommitted.
2026-09-19 20:54:16 -07:00
kyle e50f76c68c install on all full desktops 2026-09-19 17:51:12 -07:00
kyle 664dbf32a7 removee gh 2026-09-19 17:50:35 -07:00
kyle 4137fdad47 node->straylight, add gh 2026-09-19 17:49:24 -07:00
kyle e4be9d2079 straylight: headless chromium-cdp user service for hermes browser tools 2026-09-19 12:23:39 -07:00
kyle b2ea7668cb straylight: add nodejs for hermes browser tools 2026-09-19 12:03:00 -07:00
kyle 623d68c38a ripgrep 2026-09-19 02:17:41 -07:00
kyle ae9892dce4 straylight: declare hermes-gateway user service + linger 2026-09-19 01:56:42 -07:00
kyle 3ed97625a1 straylight: build tracker from git input 2026-09-18 21:40:00 -07:00
kyle 77212bbdb7 straylight: add tracker web service 2026-09-18 21:20:17 -07:00
kyle fdf50e0606 straylight: cap Ornith 1.5 sampling and thinking budget
Default temp 0.6 / top-p 0.95 / top-k 20 and reasoning-budget 8192 so
unrestricted <think> does not stall long agent turns.
2026-09-18 14:28:49 -07:00
kyle 10dddaab7a straylight: unwire Laguna DFlash until the GGUF matches llama.cpp
Official laguna-s-2.1-DFlash-BF16.gguf is on disk but this llama.cpp
rejects it (expected 76 tensors, got 69). Leave the draft unwired so
Laguna loads; keep amdgpu DPM high.
2026-09-18 00:00:37 -07:00
kyleandClaude Opus 5 14b3b3c6b8 straylight: run Laguna with two slots over a unified KV pool
A second request (opencode background agent, pi alongside opencode) no
longer queues behind the first. kv-unified keeps the full 131072-token
context available to either slot instead of splitting it to 65536.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 00:00:27 -07:00
kyle ab89181213 straylight: pin amdgpu DPM high and enable Laguna DFlash
Keep the iGPU out of powersave while llama-server runs, and pair Laguna
S 2.1 with Poolside's DFlash draft (f16 draft KV, n-max 4).
2026-09-17 23:54:27 -07:00
kyle c5fed8c604 straylight: raise OpenCode and llama-server timeouts to 2h
Local prefill and reasoning/coding turns often sit idle past OpenCode's
5–10 minute defaults. Align llama-server --timeout with that window.
2026-09-17 05:49:52 -07:00
kyleandClaude Opus 5 2498ec066e straylight: drop Tailscale Serve loop for llama on :443
The unit re-applied --https=443 every 5s and fought Mattermost for
that port. llama is served on :10000, managed outside Nix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 21:05:52 -07:00
kyle 0fdc3c47a8 straylight: restore llama HTTPS every 5s after serve reset
The OpenCode TLS session keeps running , which
drops https://straylight.scylla-hammerhead.ts.net. Loop the serve
config so the API comes back in seconds.
2026-09-16 13:22:37 -07:00
kyle 62e57955eb straylight: persist Tailscale HTTPS for llama-server
OpenCode talks to https://straylight.scylla-hammerhead.ts.net/v1, which is
Tailscale Serve on :443 proxying localhost:11434. Re-apply the serve
config on a timer so  cannot leave the API dark.
2026-09-16 13:18:09 -07:00
kyle 1e94e6638e straylight: local Whisper ASR and Qwen3.8-Flash-Next uncensored
whisper.cpp large-v3-turbo on :11435 (CPU, OpenAI transcriptions path)
so ASR does not take GTT from llama-server. Flash-Next is the cygnal
IQ4_XS-NGQ4 GGUF (~98 GB, gfx1151), qwen4exp, mmproj pinned; unload
Laguna before loading.
2026-09-16 07:18:28 -07:00
kyle 927eff0c98 straylight: treat Ornith 1.5 9B as a VLM
Loaded instance reports image input; llama.cpp attaches mmproj-Q8_0
from the HF cache. Mark it vision in OpenCode and drop the old
text-only comment.
2026-09-16 06:41:01 -07:00
kyle 52859524d7 straylight: install OpenCode config for local llama.cpp models
Managed /etc/opencode/opencode.json points at straylight:11434 with
the router model ids, Laguna as default, Ornith 1.5 9B as small_model,
and a vision subagent on Qwen3-VL-8B abliterated.
2026-09-16 06:34:41 -07:00
kyle 56b233afb6 straylight: add Qwen3-VL-8B abliterated as the small VLM
Ornith 1.5 9B is a dense text model, not vision. Replace that role with
prithivMLmods Qwen3-VL-8B Instruct abliterated v2 (mradermacher Q4_K_M)
and pin mmproj-url so router mode actually loads the projector.
2026-09-16 06:03:51 -07:00
kyle 85d216fce3 straylight: add Ornith 1.5 35B-A3B MoE to llama-server
Official ornith-ai Q4_K_M GGUF (~22 GB). Multimodal 35B MoE with ~3B
active; llama-server fetches weights and mmproj on first load.
2026-09-16 05:56:27 -07:00
kyle 5a734118b0 straylight: add Ornith 1.5 9B uncensored to llama-server
mradermacher Q4_K_M of junafinity/Ornith-1.5-9B-uncensored. Multimodal
9B; llama-server fetches weights and mmproj on first load.
2026-09-16 05:53:31 -07:00
kyle 94d09ead29 add jq 2026-09-16 05:41:20 -07:00
kyle c03dbd0a51 straylight: add Qwen 3.8 27B uncensored to llama-server
huihui Q4_K_L of Qwen3.8-27B (orcarouter GGUF is gated). Dense 27B
coding agent, loaded on demand like Ornith.
2026-09-16 00:40:47 -07:00
kyle 7b3af4cb13 straylight: expose llama-server on the tailnet
Bind 0.0.0.0 and open 11434 on tailscale0 only, so localhost and
other tailnet machines can reach the OpenAI-compatible API. LAN
stays closed. rebuild-nixos deploys committed master, not the
working tree.
2026-09-15 23:57:23 -07:00
kyleandJunie 90d8ce03ae Enable envfs.
Co-authored-by: Junie <junie@jetbrains.com>
2026-09-15 23:38:19 -07:00
kyle c733278666 Add AGENTS.md. 2026-09-15 23:20:55 -07:00
kyleandClaude Fable 5.1 369c1a4c9f flake.lock: update inputs
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 22:28:39 -07:00
kyle 35f8d81ab6 models update 2026-09-15 21:03:01 -07:00
kyleandClaude Fable 5.1 1714600aab straylight: llama-server router mode on llama.cpp 0.4.0
Drop the b9828 source pin and take llama.cpp from a refreshed
nixpkgs-unstable (0.4.0), which supports the Laguna and Gemma 4
architectures. Run llama-server in router mode with a preset file:
abliterated Qwen3.6-35B-A3B and Gemma 4 26B-A4B for benchmarking,
Poolside Laguna S 2.1 as the primary coding agent, and Ornith kept for
comparison. At most two models stay resident; idle models unload after
six hours. Add llama-models and llama-unload helper commands.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 19:54:51 -07:00
kyleandClaude Fable 5.1 ec1e2efbba straylight: raise the GPU memory ceiling to 104 GiB
The TTM default caps GTT at half of RAM (~62 GiB), which is too small for
the 118B-parameter model straylight will serve. Set ttm.pages_limit and
ttm.page_pool_size to 27262976 pages (104 GiB); takes effect on reboot.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 19:54:51 -07:00
kyle 7ba99f1dd7 herdr local path fix 2026-09-15 18:13:00 -07:00
kyleandClaude Fable 5.1 ac7a0b20fe straylight: add herdr
Pin herdr v0.9.0 from the upstream flake (nixpkgs-unstable only has
0.7.1) and install it on straylight to host coding-agent terminals.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 17:41:39 -07:00
kyle 5da03f8ba4 protontricks 2026-07-26 19:04:51 -07:00
kyle f7765178bf rhythmbox 2026-07-19 00:47:59 -07:00
kyle 568a333bb0 portal 2026-07-14 22:58:23 -07:00
kyleandClaude Fable 5 705e2d6d09 CLAUDE.md: sync docs with current config
Update for the 26.05 bump and host changes: 8 hosts, orion is now a
server, straylight/svc added, vade on desktop-light, MCP modules,
and the current LUKS coverage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 21:23:37 -07:00
kyle ff9bba5b09 desktop updates (appimage/betaflight) 2026-07-14 20:46:17 -07:00
kyle 28ede0cd3e Cleanups 2026-07-08 02:42:38 -07:00
kyle b0a1e26498 python3.14 2026-07-08 02:05:30 -07:00
kyle d8f0177cf7 remove python312 2026-07-08 02:04:59 -07:00
kyle a7095408cd Add fido2 instructions. 2026-07-08 01:09:47 -07:00
kyle 374bde92f9 flake update 2026-07-08 00:37:35 -07:00
kyle f8272a9d62 Update to 26.05 2026-07-08 00:35:28 -07:00
kyle de8c8fb2a2 yt-dlp and python314 2026-07-07 23:57:07 -07:00
kyle fba556e13c add eog 2026-07-07 22:58:33 -07:00
kyleandClaude Sonnet 5 467eb1b60d enable steam on straylight
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 21:55:05 -07:00
kyle d3954901a1 enable bluez on straylight 2026-06-30 10:24:40 -07:00
kyle f59e97a79e clang 2026-06-28 15:34:36 -07:00
kyle 5ea4890313 try switching from ollama to llama.cpp 2026-06-27 23:02:39 -07:00
kyle 5745ba069b update flakes for ollama 2026-06-27 17:36:21 -07:00
kyle 0d5f8d4f99 add qtcreator 2026-06-26 12:55:08 -07:00
kyleandClaude Sonnet 4.6 1df8e46bcf straylight: add open-webui with Ollama and RAG
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-06-25 11:10:51 -07:00
kyle db96bd1ac7 dedicated ollama user/group 2026-06-24 14:04:09 -07:00
kyle 275176b80f fix system call 2026-06-24 14:02:42 -07:00
kyle 6ff6c997fd ollama -> vulkan 2026-06-24 11:23:23 -07:00
kyle 240ab7d50a nix maintainers lacking 2026-06-23 17:49:15 -07:00
kyle 6a8bbc4da5 flake update 2026-06-23 16:58:56 -07:00
kyle b3a52dc12b move ffmpeg to light 2026-05-28 06:40:07 -07:00
kyle 6670b1cf50 add platformio 2026-05-05 13:21:17 -07:00
kyle 18bcf5d1e7 update lector 2026-04-14 15:06:55 -07:00
kyle a99542aa50 add sox
claude code uses this for voice input
2026-04-14 14:59:58 -07:00
kyle dfc21b359c use firefox as default 2026-04-07 11:58:40 -07:00
kyle 4c29c7dabf flake updates 2026-04-07 10:00:54 -07:00
kyle 2cb9704dac discord 2026-04-07 09:27:29 -07:00
kyle 2b5a691ecf add chromium to packages
need for webusb things
2026-04-06 08:36:42 -07:00
kyleandClaude Opus 4.6 77e69e0b86 Set mutableUsers to false so hashedPassword is enforced on every rebuild
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 17:19:55 -07:00
kyle d4963c571a ollama 2026-04-04 16:19:16 -07:00
kyle 3b59f3cae4 wireless tools for i3blocks 2026-04-04 16:19:16 -07:00
kyleandClaude Opus 4.6 768e9a61dc Add svc host: NixOS config for TornadoVPS edge node
BIOS boot with GRUB on /dev/xvda, MCP agent via systemd,
mc-proxy and MCNS as containers via MCP agent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:21:01 -07:00
kyleandClaude Opus 4.6 e1600e19e7 Use hashed password instead of initial plaintext password for kyle user
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:57:37 -07:00
kyleandClaude Opus 4.6 6fd8ab61ed Fix orion build: remove nonexistent "crypted" LUKS device reference
The LUKS device is named "luks-5c5e94fc-..." in hardware-configuration.nix
which already has the FIDO2 options. The "crypted" reference caused a build
error. Also fix duplicate attribute definitions and unnecessary config wrapper.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:30:04 -07:00
kyleandClaude Opus 4.6 6733e92d1f Update CA cert after Metacrypt re-initialization
New root CA cert issued during Metacrypt vault rebuild. Same key
usage (Certificate Sign, CRL Sign), new validity period (2026-2046).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 10:07:54 -07:00
kyleandClaude Opus 4.6 adca98065f Update CA cert with CRL Sign key usage
Same key, added CRL Sign to key usage extensions. Distributed to
all nodes and NixOS system trust store.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 09:54:05 -07:00
kyleandClaude Opus 4.6 3be5613120 Fix deprecated NixOS options for 25.11
- Use nixpkgs.hostPlatform module instead of deprecated system arg to lib.nixosSystem
- Rename services.logind.powerKey to services.logind.settings.Login.HandlePowerKey

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 09:53:25 -07:00
kyle b6aa8346f5 update mcp 2026-04-03 09:37:36 -07:00
kyleandClaude Opus 4.6 47b4e533ff Document UID 850 as permanent — never change
Rootless podman deeply caches the UID in storage, subuid mappings,
and systemd sessions. Changing it destroys all container state.
Reference: log/2026-04-03-uid-incident.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 09:30:37 -07:00
kyleandClaude Opus 4.6 5d82e27ba4 Add fallback DNS resolvers to all nodes
All nodes now list 1.1.1.1 and 8.8.8.8 as fallback nameservers after
MCNS. When MCNS is down, internal names (.svc.mcp.metacircular.net)
fail but external DNS (google.com, github.com, etc.) keeps working.

Lesson from 2026-04-03 incident: without fallbacks, MCNS failure
caused total DNS blackout including external services, forcing
Tailscale to be disabled to restore any DNS resolution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 09:30:09 -07:00
kyleandClaude Opus 4.6 5a381d314e Pin mcp user UID/GID to 850
UID 995 conflicted with sshd on orion. Pin to 850 (the 800-899 range
is unused on all nodes and well below NixOS auto-assign range).
Pin GID to 850 as well for consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:38:45 -07:00
kyleandClaude Opus 4.6 53addc0ed1 Remove pinned UID for mcp user
UID 995 conflicted with sshd on orion. Let NixOS auto-assign the UID
for the mcp system user. Use systemd's %U specifier for XDG_RUNTIME_DIR
instead of the hardcoded UID.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:33:37 -07:00
kyleandClaude Opus 4.6 755450e72e fix orion: remove bogus "crypted" LUKS device reference
The FIDO2 crypttab options are already on the correct UUID-named device
in hardware-configuration.nix; the "crypted" name only applies to
disko-provisioned hosts (rift).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 01:00:19 -07:00
kyleandClaude Opus 4.6 5fd00af73c fix orion: remove duplicate top-level networking/services attrs
The module used explicit `config = { ... }` but also had duplicate
networking.nameservers and services.resolved.domains at the top level,
causing a NixOS module evaluation error. Merged the Tailscale nameserver
into the config block and removed the duplicates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:03:58 -07:00
kyleandClaude Opus 4.6 6a65e73200 Remove mcp-master systemd unit (now containerized)
The master runs as an MCP-managed container, deployed via
mcp deploy mcp-master --direct. The systemd unit was a temporary
bootstrap mechanism.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 22:56:08 -07:00
kyleandClaude Opus 4.6 b26478d47b Add mcp-master systemd service
Runs the MCP v2 master as a systemd service on rift. Uses
ConditionPathExists so the unit is a no-op on worker nodes
(like orion) that import mcp.nix but don't have the binary.

Starts after mcp-agent.service. Security hardened like the agent
but with ProtectHome=true (master doesn't need /run/user).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:43:38 -07:00
kyle dba2fb00eb update mc packages 2026-04-02 20:43:38 -07:00
kyle 246674369d updated packages 2026-04-02 20:33:24 -07:00
kyle 63bb945506 add opencode to full desktop packages 2026-04-02 17:10:04 -07:00
kyle 9be8f2d8d1 syncthing should run as a user 2026-04-02 16:07:59 -07:00
kyle 9972422fe6 package cleanup 2026-04-02 12:53:17 -07:00