Commit Graph
100 Commits
Author SHA1 Message Date
kyle fa35293331 sift: pin 682b9b8044 (restore force-pushed commit) 2026-10-09 18:43:36 -07:00
kyleandClaude Opus 5.5 6d1000c756 straylight: add libxi to nix-ld libraries
Hermes' cua-driver (computer-use backend) is a prebuilt binary that links
libXi.so.6; without it the PM install fails verification with exit 127.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 18:43:18 -07:00
kyle b5e189bc5b llama-server: add Gemma4 31B and Muse-Glimmer-30B models
Both fetched to /var/lib/llama-server/models by download.sh. Gemma4 31B
uses MTP draft (spec-type draft-mtp); Muse-Glimmer uses DFlash drafter
(spec-type draft-dflash, parallel=1 for the 104 GiB TTM window).
2026-10-05 18:14:15 -07:00
kyle d7c1092d52 orion: pin sift 682b9b8 (P3.1 search filters + multi-query) 2026-09-30 07:38:31 -07:00
kyleandClaude Opus 5.5 c8b3b21004 dixie: honcho-embed pooling cls -> last
Qwen3-Embedding is a causal model; its card pools the last token. With cls every
input embedded as its first token's state ("the cat sat on the mat" and "the stock
market crashed today" at cosine 1.0). A CPU side server with --pooling last
reproduced the card's example scores within 0.002 without a manual EOS. Honcho's
stored vectors and sift's embed cache are re-embedded / flushed after the switch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:46:37 -07:00
kyle 03ad1de40e straylight: add trinity-mini (Arcee Trinity Mini 26B MoE) to llama-server router 2026-09-27 00:56:41 -07:00
kyle cb0bc87633 orion: pin sift 5a59f7a (P6 asynchronous batch fetch) 2026-09-26 23:32:13 -07:00
kyle 4fa779be9c orion: pin sift bdc093e (P5b long-doc questions + P5c extract; P6 plan docs) 2026-09-26 20:22:32 -07:00
kyle cd2bd3d0e3 orion: pin sift 1311cf3 (P5a PDF documents)
PDF extraction in a re-exec'd child, per-page cache, map/pages/
grep, cited digests. Module MemoryMax 512M -> 1G via pinned sift.
2026-09-26 10:57:22 -07:00
kyle ec39a569de dixie: Z tmpfiles rules use ~0755 so existing files stay 0644 (exec dropped), dirs become 0755 2026-09-25 07:49:51 -07:00
kyle e5c47007cd dixie: Z tmpfiles rules to relabel dropsonde2 trees 0755 recursively (fixes rsync's 0700 dirs) 2026-09-25 07:48:32 -07:00
kyle 9a5920da2b dixie: drop uid/gid from rsyncd modules — daemon runs as dropsonde via SSH, setgroups() fails otherwise 2026-09-25 03:03:40 -07:00
kyle 2305f4099a dixie: rsync --server --daemon sync key (no rrsync/python3 on dixie)
- authorized key forces rsync --server --daemon --config=/etc/rsyncd-dropsonde.conf
- environment.etc rsyncd-dropsonde.conf: cold + analysis modules, read only=false,
  use chroot=false, uid/gid dropsonde, max connections 2, lock file global
- tmpfiles: /srv/{cold,analysis}/dropsonde2 owned dropsonde
2026-09-25 02:45:44 -07:00
kyle 2e4aa6ed57 dixie: dropsonde sync key — rrsync -wo /srv (write-only, hyperborea -> dixie) 2026-09-25 02:24:26 -07:00
kyle 0ac90515bf dixie: use script attr for dropsonde-pg-setup (ExecStart heredoc+bash path broken) 2026-09-25 00:51:32 -07:00
kyle c402c1c599 dixie: drop python3.withPackages (duckdb CLI only) to trim the closure 2026-09-25 00:27:38 -07:00
kyle eed2821cea dixie: slice submodule uses sliceConfig, not serviceConfig 2026-09-24 23:42:12 -07:00
kyle 43b8e2288f dixie: listen_addresses under settings, not top-level 2026-09-24 23:41:40 -07:00
kyle 3980242da5 dixie: close the ExecStart indented string in dropsonde-pg-setup 2026-09-24 23:41:25 -07:00
kyle 4b751796c6 dixie: import analysis.nix (was never wired into the module list) 2026-09-24 23:36:31 -07:00
kyle 0c37b07099 dixie: label /srv/cold as ds2-cold, use sfdisk for wipe 2026-09-24 23:20:01 -07:00
kyle fddaffc825 dixie: fix slice unit name, pg-setup ExecStart, listen_addresses 2026-09-24 22:27:12 -07:00
kyle a40873685a dixie: open Postgres 5432 on tailscale0 for dropsonde 2026-09-24 22:17:44 -07:00
kyle 3c2a272722 dixie: dropsonde2 analysis tier (HDD /srv/cold, pg17+timescale+postgis+h3, analysis.slice, duckdb/polars) 2026-09-24 22:03:44 -07:00
kyleandClaude Opus 5.5 c12b2adbfd disk-health plan: deploy via committed master + doas (per CLAUDE.md)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 18:59:39 -07:00
kyleandClaude Opus 5.5 85d5631fa8 docs: disk-health monitoring plan (SMART/NVMe/SD card)
Current state verified on 2026-09-24: hyperborea NVMe already exported
via the Debian nvme textfile; no SMART on the NixOS hosts; no
disk-health alert rules. Plan: smartctl_exporter module for the NixOS
hosts, smartmon timer and SD-card kernel-error textfile on hyperborea,
orion scrape job, a disk-health rule group, verification and deploy
notes. For hand-off to another agent.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 18:59:15 -07:00
kyle 78d30026ce orion: allowlist vmui's /prometheus API prefix
Default Server URL is /prometheus; keep import/admin 403.
2026-09-24 01:56:05 -07:00
kyle f5ef78baca orion: read-only vmui via nginx allowlist + serve :8429
VictoriaMetrics stays loopback :8428. nginx :8429 allows GET/POST
to /vmui and query APIs only; import/admin/export/flags 403.
tailscale serve HTTPS 8429. Review, no switch.
2026-09-24 01:47:25 -07:00
kyle 1cbde84601 rift: linger kyle and enable user podman-restart
Keep rootless podman up after logind idle.
2026-09-24 01:33:19 -07:00
kyle f32db3c88b metrics: systemd unit-include as [.]service
systemd drops \. in unit-include and warns about unknown escapes.
2026-09-24 01:22:16 -07:00
kyle 81897b3f8a metrics: keep llama-straylight out of FleetTargetDown
35B eviction is not a paging event. params.model stays.
2026-09-24 00:46:23 -07:00
kyle 385529da39 metrics: phase 3 straylight/rift scrapes and hyperborea units
Review, no switch. node-laptop for talos/titan is excluded from
FleetTargetDown. llama-straylight scrape uses params.model for
ornith-1.5-35b-a3b (router 400 without it; will load if cold).
2026-09-24 00:42:06 -07:00
kyle b861c6ee9f metrics: drop llama-dixie-vision scrape
Router /metrics cannot be up without loading a model.
2026-09-24 00:29:24 -07:00
kyle ed5e1a1e0e metrics: HonchoDeriverBacklog and include honcho in target-down 2026-09-24 00:21:36 -07:00
kyle 5d8e8c4335 metrics: scrape dixie helper /metrics with model param
Router-mode llama-server returns 400 without it.
2026-09-23 23:57:36 -07:00
kyle b1d5aa7e64 metrics: drop alertmanager channel override
Webhook is already bound to ~alerts; Mattermost's channel
override wants the name, not ~alerts.
2026-09-23 23:44:24 -07:00
kyle ec74e0b69c metrics: phase 1 follow-up (review, no switch)
Honcho workspace_name keep, node_exporter restart metrics,
drop min_over_time on rule 1, Watchdog heartbeat, pin tether
to b267e2f so labelled series exist and rule 2 can fire.
2026-09-23 23:43:11 -07:00
kyle 4958493485 metrics: phase 1 orion+dixie (review, no switch)
VictoriaMetrics on 127.0.0.1:8428. LoadCredential for the Mattermost
webhook and the sift scrape token. Honcho scrapes keep a closed metric
name set. Meta-alerts for target-down, VM size, orion disk. Dixie gets
node_exporter, nvidia_gpu_exporter, and llama-server --metrics.

Tether labelled series still wait on titan's fix. Rule 2 is written
against reason=client_disconnect so it stays silent until then.
2026-09-23 23:22:38 -07:00
kyle 888e8e24fb orion: pin sift 4372673 (P2.7 metrics)
Prometheus /metrics behind a dedicated metrics caller; JSON stays
at ?format=json. No search-source change.
2026-09-23 23:11:30 -07:00
kyle c07c4bfe4f docs: fix tether cancel-storm PromQL (rule 2)
Label-set mismatch made the ratio empty. Select reason=client_disconnect
and kind=converted; never sum() a tether series without a selector.
2026-09-23 22:50:26 -07:00
kyle 8b14e1f99f docs: fleet metrics and alerting plan
Reviewed plan only: VictoriaMetrics on orion, vmalert/Alertmanager,
tailnet exporters, first five rules. No config, no deploy.
2026-09-23 22:48:51 -07:00
kyle 504d4eb3f1 orion: pin sift e62cfc8 (restricted tavily cap skip) 2026-09-23 16:38:41 -07:00
kyle bc30315344 orion: sift tavily+searxng, cap 130, tavily no_rerank
Kyle chose Tavily-first with SearXNG fallback. Brave stays off.
2026-09-23 16:25:01 -07:00
kyle 75b813b10b orion: SearXNG-only until Kyle picks sift search default 2026-09-23 16:20:38 -07:00
kyle 415589cc13 orion: pin sift 1c57845, brave_llm only for live fixture
RRF original-URL fix. SearXNG and Tavily stay off until Kyle picks a default.
2026-09-23 16:10:59 -07:00
kyle 573b9dcfd8 orion: disable sift brave_llm for bake-off config 1 2026-09-23 15:42:54 -07:00
kyle c84ca93024 orion: disable sift tavily for bake-off config 2 2026-09-23 15:36:33 -07:00
kyle 91c021cff9 orion: enable sift searxng, brave_llm, tavily
Bake-off sources. SearXNG journal is already LogLevelMax=err.
Keys stay in /var/lib/sift/secret.env, not the store.
2026-09-23 14:14:25 -07:00
kyle c839f7c8ae dixie: fail over USB Wi-Fi to internal CNVi
NM dispatcher plus a boot oneshot keep the AX9L (mt7921u) primary and
bring up the on-box iwlwifi profile if the dongle is gone. Connection
PSKs stay on-box; this only selects the radio.
2026-09-23 14:03:30 -07:00
kyle 687fac019f straylight: sift CLI 8ca3ade on PATH at next switch
Pin follows approved CLI fail-closed for non-default HERMES_HOME.
Does not switch straylight or orion. ~/.local/bin/sift (e36da19)
still shadows until that binary is removed after the switch.
2026-09-23 13:11:17 -07:00
kyle ed2ef77de6 orion: put sift CLI on PATH
The unit package is not in systemPackages, so `sift keys` is only
reachable via the store path. Track services.sift.package so it
follows the pin. Lands on the next orion switch.
2026-09-23 12:33:26 -07:00
kyle fccb26dea4 orion: pin sift 429f6b2 (P3) and drop SearXNG WARNING logs
Sift P3 ships with sources off. SearXNG engine WARNING lines include
q=; LogLevelMax=err keeps those out of the journal. Brave scraper
stays disabled. Do not enable search sources in this commit.
2026-09-23 12:25:04 -07:00
kyle 059c2306da orion: pin sift 3687636 (P2.5+P2.6)
P2.5 redacts restricted logs; P2.6 partitions dcache and pins
restricted callers to guardian-star.
2026-09-23 11:59:32 -07:00
kyle 988053ac94 orion: pin sift e36da19 (restricted workspace)
Permit straylight-gs to query guardian-star; fleet callers still refused.
2026-09-23 08:35:01 -07:00
kyle e6f7bcb566 straylight: bump tracker to 549eda3
Master adds -changepw. The service unit still starts with -addr and -db.
2026-09-23 07:51:16 -07:00
kyleandClaude Opus 5.5 46a7241dba dixie: 9B batch-size 512 so decodes interleave with long prefills
Prefill ran in 2048-token scheduler steps of ~2.4 s; each decoding slot
gets one token per step, so guardian calls (16 tokens) waited behind
Honcho's 10-28k-token prompts: p90 10 s, max 14 s under two sift
digests (2026-09-23 05:50). ubatch is already 512, so prefill
throughput is unchanged; steps drop to ~0.6 s.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 05:54:00 -07:00
kyleandClaude Opus 5.5 8790005c53 dixie: 9B KV pool 96k -> 128k
The unified 96k pool overflowed ~every 2-3 min under Honcho load
(39 events 2026-09-23 00:50-04:28). Each overflow fails every in-flight
slot with 'Context size has been exceeded', so Honcho retries and the
guardians' calls die with it. KV is ~20 KB/token on this model; 128k
costs ~0.65 GB of the ~2.5 GB free.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 04:47:24 -07:00
kyle afa33ee8ee orion: pin sift 767c12c (P2.3)
Pin chunk 0; 0.7 cosine + 0.3 term overlap; PromptVersion 2.
2026-09-23 03:24:04 -07:00
kyle e657737cd7 orion: pin sift 5dbc7e4 (P2.2)
Cap embed inputs at 3000 runes; retry too-large once.
2026-09-23 03:09:02 -07:00
kyle c42191f2a6 orion: pin sift 16a7d67 (P2.1)
embed_model honcho-embed; Wayback http rewrite; Memento parse;
keys.toml writePreserving; digest fallback cap.
2026-09-23 02:48:35 -07:00
kyle c831385cbd dixie: tether on :11435 in front of llama-server
Pin kyle/tether at c89894b. Listen 0.0.0.0:11435, upstream
127.0.0.1:11434. Open 11435 on tailscale0 next to 11433/11434.
2026-09-23 02:44:22 -07:00
kyle 109bc99d3b orion: pin sift 2db001e (WriteTimeout 120s, CLI flags)
Handler deadline 90s. Flags work on both sides of the URL.
No Dixie config change.
2026-09-23 00:37:29 -07:00
kyle 03e256c501 orion: pin sift a992216 (P2 fence follow-up)
Widen document-tag fence; same P2 host config as ff87a04.
2026-09-23 00:14:17 -07:00
kyle 9edaf0f339 orion: pin sift ff87a04 (P2 digest/context/recover)
Dixie chat+embed on :11434, digest thinking off, Honcho
context from rift for hermes-fleet only.
2026-09-23 00:05:30 -07:00
kyle 85b52525b0 orion: pin sift 0598c89 (P1.1 self-IP deny)
Same code as 447842f plus the IPv4-only assumption comment.
Live P1 was dca635f.
2026-09-22 23:05:31 -07:00
kyle 3cc51c9083 orion: pin sift dca635f
fac1462 set a vendorHash while vendor/ is committed, so
sift-*-go-modules failed. dca635f sets vendorHash = null.
2026-09-22 22:42:51 -07:00
kyle 9b745272e6 orion: enable sift P1 (pin fac1462)
Add the sift flake input at fac1462e7b3deb2082c9f6ae8dc4676fddf8d089
(git+ssh; git+https cannot auth on orion) and enable services.sift on
orion: loopback :8890, tailscale serve :8443 from the module, static
home WAN /32 in denyPrefixes. Keys stay on-box.
2026-09-22 22:20:11 -07:00
kyleandClaude Opus 5.5 ab3fbb094f straylight: llama.cpp 0.4.1 preset: no-mmap -> load-mode = none
0.4.1 dropped the no-mmap option (router refused to start: "option 'no-mmap'
not recognized in preset '*'"); --load-mode none is the equivalent. All other
preset keys checked against 0.4.1's option list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 20:13:51 -07:00
kyle dcc8da37a4 strawberry 2026-09-22 20:08:16 -07:00
kyleandClaude Opus 5.5 7a89ca25c4 remove the WNTRMUTE CA (MCP teardown)
Kyle 2026-09-22: the shared CA was only for Metacircular services (system
trust store + the MCR podman registry cert). No host should still depend on
it; anything that does should fail loudly rather than keep trusting it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 19:57:14 -07:00
kyle 90a572eabb rift: drop MCP config (containers already stopped)
Remove mcp.nix/mcpkg.nix, MCP firewall ports, MCNS nameserver, and
~mcp.metacircular.net. Leave LUKS FIDO2. Do not delete /srv/mcp.
2026-09-22 19:42:43 -07:00
kyleandClaude Opus 5.5 b387d86f28 straylight: remove MCP (fleet teardown for V3)
Kyle 2026-09-22: tear down MCP across the fleet. Drops the mcp/mcpkg imports
(agent, mcp user, packages), the unikernel-host agent overrides and kvm group,
the mcp-br0 bridge + FORWARD drop, the low-port sysctl (only MCNS/mc-proxy
needed it; Mattermost binds 8065), MCP firewall ports (53, 8443, 9443, 9444,
9555; keeps 443 for tailscale serve and 8080 for open-webui) and the MCNS
nameservers/~mcp.metacircular.net domain. State under /srv/mcp is kept.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 19:40:56 -07:00
kyle 39c9fc1a39 orion: set braveapi inactive = false
Package default is inactive: true, which skips loading the engine.
disabled = false is not enough; merge by name leaves inactive set.
2026-09-22 19:26:31 -07:00
kyle 8b14304037 orion: enable SearXNG braveapi via envsubst
Scrape engine `brave` stays disabled. API key lives in
/var/lib/searx/secret.env as BRAVE_API_KEY, not in the store.
2026-09-22 19:25:34 -07:00
kyleandClaude Opus 5.5 b743d3f360 dixie: 9B to 8 slots over a 96k pool
A Honcho catch-up wave (48 deriver batches + 11 dreams + dialectic prefetches)
held all 6 slots with long thinking generations; tiny aux calls (title,
approval guardian) queued behind them and title_generation timed out at 60 s.
Two spare slots plus a bigger shared KV pool (so 6 long prompts can't exhaust
it). VRAM 9.7 GB.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 19:14:45 -07:00
kyle f28c1ae5f0 orion: SearXNG engine allowlist for the home IP
Enable bing; keep wikipedia/wikidata/github/arxiv. Disable brave,
duckduckgo, startpage, google, qwant, mojeek (CAPTCHA, 429, or silent 0).
2026-09-22 19:10:30 -07:00
kyle 94e85283c3 orion: generate SearXNG secret in activationScripts
searx-init loads EnvironmentFile at spawn, so the secret must exist
before systemd starts that unit. Drop the racing oneshot. Make
tailscale-serve restart on NoState during switch.
2026-09-22 18:49:42 -07:00
kyle e6938ef782 orion: drop MCP, add SearXNG on loopback + Tailscale Serve
SearXNG binds 127.0.0.1:8888 (json+html, limiter off). Secret is
/var/lib/searx/secret.env, generated on-box. TLS via `tailscale serve`.
MCP agent, packages, extra firewall ports, and MCP DNS removed from this
host only.
2026-09-22 18:01:23 -07:00
kyle 744b8421e5 updating nixpkgs-unstable 2026-09-22 16:02:21 -07:00
kyleandClaude Opus 5.5 8a6d0039d3 dixie: 9B to 6 slots over a 64k pool
Room for the deriver, dialectic prefetches from three agents and their approval
guardians at once. Under full load (deriver + dialectic + guardian probes):
guardian p50 0.4 s / max 10 s, no KV-space failures. VRAM 8.9 GB.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 15:37:46 -07:00
kyle ba1ca9387b add btop 2026-09-22 15:23:00 -07:00
kyleandClaude Opus 5.5 6d5586c63c dixie: retire the 4B dialectic model; 9B gets 4 slots over a 48k pool
Dialectic benchmark (8 hermes-fleet questions): Qwen3-4B answered in 2-12 s but
often wrongly (invented facts, 'no information' on things memory holds); the 9B
answered correctly. All Honcho dialectic levels now use the 9B (rift .env). Its
VRAM goes to the 9B's KV pool: at 2 x 16k, concurrent deriver + dialectic hit
'failed to find free space in the KV cache'. 9B 6.3 GB + embed 2.2 GB = 8.4 GB.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 14:29:01 -07:00
kyleandClaude Opus 5.5 3f68a43c21 dixie: patched chat template for the 9B (no raise on tool-loop turns)
The stock Ornith template raises 'No user query found in messages.' when a request
has no plain user turn, which Honcho's dialectic tool loop sends on later
iterations: 6 of 8 'low'-level dialectic calls failed with HTTP 500 when routed to
the 9B. The patched copy treats the last message as the query instead.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 13:26:18 -07:00
kyleandClaude Opus 5.5 72cae29d5c dixie: unified KV per model; Qwen thinking sampling for the 9B
kv-unified lets one request use a model's whole 16k (split slots capped each at
8k and every Honcho dialectic prompt of 11-17k tokens failed). 9B gets temp 0.6 /
top-p 0.95 / top-k 20 / min-p 0: in a 20-batch replay of Honcho's deriver the
0.8 default dropped 7 batches (empty or wrong-shape output); with these, 3,
and 1 with a format instruction on rift. VRAM unchanged at 11.5 GB.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 12:56:16 -07:00
kyleandClaude Opus 5.5 91b2e6b33e dixie: honcho-embed back to 2048/slot, with explicit batch-size
8192/slot (previous commit) cost 6.6 GB of compute buffers and the 9B then
failed to load; 4096/slot did not fit beside the 9B and dialectic either.
2048/slot with batch-size set explicitly; long inputs are handled on rift
instead (EMBEDDING_MAX_INPUT_TOKENS=1536 makes Honcho chunk). All three
models resident at 11.5 GB.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 11:24:35 -07:00
kyleandClaude Opus 5.5 12cfe1e519 dixie: size honcho-embed so long inputs fit one batch and one slot
batch-size defaulted to 2048 (capping ubatch) and ctx 8192 over 4 slots left
2048 per slot, so Honcho inputs over 2048 tokens failed with 'input is too
large to process'. Now batch/ubatch 8192, ctx 16384 over 2 slots = 8192/slot,
matching Honcho's EMBEDDING.MAX_INPUT_TOKENS. Verified a 6191-token input.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-22 11:20:15 -07:00
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