Commit Graph
100 Commits
Author SHA1 Message Date
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
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