Commit Graph
100 Commits
Author SHA1 Message Date
Frank 5bfdc98e61 niri: make desk-2-portable a real profile for the second desk
The portable rig (laptop + two 16" PM1601 panels in portrait) had no
profile of its own, so display.kdl stayed on desk-1-home: the Sceptre
identity block matched nothing, its connector-keyed fallbacks carried
3440x1440@180.000 that no panel here reports, and niri silently drove
every panel at its preferred mode with positions written for the home
desk. key the two panels by captured EDID identity, pin the modes they
actually report, and centre the laptop against the 1920-tall panel band.

desk.sh match now selects this profile, so blankpad-desk-autoswitch no
longer dies at its initial match with "no desk profile matches".
2026-10-30 15:54:34 -07:00
Frank 9f142b7eaf live: heartbeat sync 2026-10-30T15:20:04-07:00 (Refs #11) 2026-10-30 15:20:04 -07:00
Frank ad5903c294 live: heartbeat sync 2026-10-30T14:17:40-07:00 (Refs #11) 2026-10-30 14:17:40 -07:00
Frank ef7478f9c7 live: heartbeat sync 2026-10-30T13:16:49-07:00 (Refs #11) 2026-10-30 13:16:49 -07:00
Frank 05f4fa412e live: heartbeat sync 2026-10-30T12:13:49-07:00 (Refs #11) 2026-10-30 12:13:49 -07:00
Frank 7508541310 live: heartbeat sync 2026-10-30T11:11:49-07:00 (Refs #11) 2026-10-30 11:11:49 -07:00
Frank d5b6b0e930 live: heartbeat sync 2026-10-30T10:10:49-07:00 (Refs #11) 2026-10-30 10:10:49 -07:00
Frank 28fd76fa21 live: heartbeat sync 2026-10-30T09:07:40-07:00 (Refs #11) 2026-10-30 09:07:40 -07:00
Frank b6e3bf2769 live: heartbeat sync 2026-10-30T08:05:49-07:00 (Refs #11) 2026-10-30 08:05:49 -07:00
Frank 05f818ac03 live: heartbeat sync 2026-10-30T07:04:49-07:00 (Refs #11) 2026-10-30 07:04:49 -07:00
Frank 223768cc91 live: heartbeat sync 2026-10-30T06:02:49-07:00 (Refs #11) 2026-10-30 06:02:49 -07:00
Frank 57fc14057e live: heartbeat sync 2026-10-30T04:59:49-07:00 (Refs #11) 2026-10-30 04:59:49 -07:00
Frank b9dcb88f9b live: heartbeat sync 2026-10-30T03:56:49-07:00 (Refs #11) 2026-10-30 03:56:49 -07:00
Frank fb9b8b7d22 live: heartbeat sync 2026-10-30T02:53:49-07:00 (Refs #11) 2026-10-30 02:53:49 -07:00
Frank 53dd12e73d live: heartbeat sync 2026-10-30T01:50:49-07:00 (Refs #11) 2026-10-30 01:50:49 -07:00
Frank 52e8cca8f3 live: heartbeat sync 2026-10-30T00:48:49-07:00 (Refs #11) 2026-10-30 00:48:49 -07:00
Frank 7b7566928f live: heartbeat sync 2026-10-29T23:45:49-07:00 (Refs #11) 2026-10-29 23:45:49 -07:00
Frank ee7489b546 live: heartbeat sync 2026-10-29T22:44:49-07:00 (Refs #11) 2026-10-29 22:44:49 -07:00
Frank 4b032e011b live: heartbeat sync 2026-10-29T21:41:49-07:00 (Refs #11) 2026-10-29 21:41:49 -07:00
Frank dc56eb5b02 live: heartbeat sync 2026-10-29T20:38:49-07:00 (Refs #11) 2026-10-29 20:38:49 -07:00
Frank a5e00a09eb live: heartbeat sync 2026-10-29T19:37:40-07:00 (Refs #11) 2026-10-29 19:37:40 -07:00
Frank 04ada2c913 live: heartbeat sync 2026-10-29T18:36:49-07:00 (Refs #11) 2026-10-29 18:36:49 -07:00
Frank 4df5a28ba6 live: heartbeat sync 2026-10-29T17:35:49-07:00 (Refs #11) 2026-10-29 17:35:49 -07:00
Frank 03bf48956f live: heartbeat sync 2026-10-29T16:32:39-07:00 (Refs #11) 2026-10-29 16:32:39 -07:00
Frank 4d76c6038e live: heartbeat sync 2026-10-29T15:29:37-07:00 (Refs #11) 2026-10-29 15:29:37 -07:00
Frank 206c9acb46 feat: add the DeepSeek platform provider and deepseek-flash
Refs #83

The first vendor-cloud chat row in agent/models.yml. The provider label is the
bare word `deepseek` because pi-catalog/src/hosts.ts keys the direct-DeepSeek
behaviour set (max_tokens field, thinking extraBody, thinking-disable mode) off
that exact name and off api.deepseek.com; the house `<api> (<host>)` pattern
would not match and the row would lose the quirks the endpoint answers to.

The key is command-backed (`!cat ~/.config/secrets/deepseek_api_key`, 600), so
no sk-… value enters the tracked tree, and the row declares the model card's own
pair: contextWindow 1048576 / maxTokens 262144, input [text, image], with the
October 2026 peak rate card in cost. Docs move to the new
omp-docs/core/deepseek-provider.md, indexed and logged in the same commit.
2026-10-29 14:47:34 -07:00
Frank 53025a6be5 live: heartbeat sync 2026-10-29T14:27:39-07:00 (Refs #11) 2026-10-29 14:27:39 -07:00
Frank dc88d6f961 live: heartbeat sync 2026-10-29T13:25:49-07:00 (Refs #11) 2026-10-29 13:25:49 -07:00
Frank f2d8aa4f9e live: heartbeat sync 2026-10-29T12:22:39-07:00 (Refs #11) 2026-10-29 12:22:39 -07:00
Frank 7506970f9d live: heartbeat sync 2026-10-29T11:19:49-07:00 (Refs #11) 2026-10-29 11:19:49 -07:00
Frank c736456413 live: heartbeat sync 2026-10-29T10:17:49-07:00 (Refs #11) 2026-10-29 10:17:49 -07:00
Frank 441519c1f0 live: heartbeat sync 2026-10-29T09:15:49-07:00 (Refs #11) 2026-10-29 09:15:49 -07:00
Frank 90cd6bb766 live: heartbeat sync 2026-10-29T08:12:39-07:00 (Refs #11) 2026-10-29 08:12:39 -07:00
Frank 757fa0106b live: heartbeat sync 2026-10-29T07:10:49-07:00 (Refs #11) 2026-10-29 07:10:49 -07:00
Frank a8e74e7266 live: heartbeat sync 2026-10-29T06:09:49-07:00 (Refs #11) 2026-10-29 06:09:49 -07:00
Frank f859230ff6 live: heartbeat sync 2026-10-29T05:06:49-07:00 (Refs #11) 2026-10-29 05:06:49 -07:00
Frank 6569290398 live: heartbeat sync 2026-10-29T04:04:49-07:00 (Refs #11) 2026-10-29 04:04:49 -07:00
Frank d83531e3fe live: heartbeat sync 2026-10-29T03:03:49-07:00 (Refs #11) 2026-10-29 03:03:49 -07:00
Frank 41f577c883 live: heartbeat sync 2026-10-29T02:02:39-07:00 (Refs #11) 2026-10-29 02:02:39 -07:00
Frank 32bea490c4 live: heartbeat sync 2026-10-29T01:00:49-07:00 (Refs #11) 2026-10-29 01:00:49 -07:00
Frank b698b0e35e live: heartbeat sync 2026-10-28T23:58:49-07:00 (Refs #11) 2026-10-28 23:58:49 -07:00
Frank 0d41c3d61d live: heartbeat sync 2026-10-28T22:56:49-07:00 (Refs #11) 2026-10-28 22:56:49 -07:00
Frank ea2cfad847 live: heartbeat sync 2026-10-28T21:53:49-07:00 (Refs #11) 2026-10-28 21:53:49 -07:00
Frank 6f0aa7d72e live: heartbeat sync 2026-10-28T20:51:49-07:00 (Refs #11) 2026-10-28 20:51:49 -07:00
Frank 7d394e74b4 live: heartbeat sync 2026-10-28T19:48:49-07:00 (Refs #11) 2026-10-28 19:48:49 -07:00
Frank 10cd18ec57 live: heartbeat sync 2026-10-28T18:46:49-07:00 (Refs #11) 2026-10-28 18:46:49 -07:00
Frank e4721a6713 live: heartbeat sync 2026-10-28T17:45:49-07:00 (Refs #11) 2026-10-28 17:45:49 -07:00
Frank 4648ba7f3f live: heartbeat sync 2026-10-28T16:42:49-07:00 (Refs #11) 2026-10-28 16:42:49 -07:00
Frank 2d71c603cb live: heartbeat sync 2026-10-28T15:42:39-07:00 (Refs #11) 2026-10-28 15:42:39 -07:00
Frank 388058d134 live: heartbeat sync 2026-10-28T14:40:49-07:00 (Refs #11) 2026-10-28 14:40:49 -07:00
Frank 979382e5cc live: heartbeat sync 2026-10-28T13:39:49-07:00 (Refs #11) 2026-10-28 13:39:49 -07:00
Frank 47d4e0e8f9 live: heartbeat sync 2026-10-28T12:38:49-07:00 (Refs #11) 2026-10-28 12:38:49 -07:00
Frank a071d71e99 live: heartbeat sync 2026-10-28T11:37:39-07:00 (Refs #11) 2026-10-28 11:37:39 -07:00
Frank 38236f35f7 live: heartbeat sync 2026-10-28T10:34:49-07:00 (Refs #11) 2026-10-28 10:34:49 -07:00
Frank d73deb61e2 live: heartbeat sync 2026-10-28T09:33:49-07:00 (Refs #11) 2026-10-28 09:33:49 -07:00
Frank 68d6889100 live: heartbeat sync 2026-10-28T08:31:49-07:00 (Refs #11) 2026-10-28 08:31:49 -07:00
Frank 5a3f1a77ac live: heartbeat sync 2026-10-28T07:29:49-07:00 (Refs #11) 2026-10-28 07:29:49 -07:00
Frank 0b27a68c33 live: heartbeat sync 2026-10-28T06:26:49-07:00 (Refs #11) 2026-10-28 06:26:49 -07:00
Frank 0b72e9a427 live: heartbeat sync 2026-10-28T05:23:49-07:00 (Refs #11) 2026-10-28 05:23:49 -07:00
Frank b04a634ec2 live: heartbeat sync 2026-10-28T04:21:49-07:00 (Refs #11) 2026-10-28 04:21:49 -07:00
Frank 240324a18c live: heartbeat sync 2026-10-28T03:18:49-07:00 (Refs #11) 2026-10-28 03:18:49 -07:00
Frank 9d172eff9c live: heartbeat sync 2026-10-28T02:15:49-07:00 (Refs #11) 2026-10-28 02:15:49 -07:00
Frank ddebfb63bb live: heartbeat sync 2026-10-28T01:13:49-07:00 (Refs #11) 2026-10-28 01:13:49 -07:00
Frank b7fd64b241 live: heartbeat sync 2026-10-28T00:11:49-07:00 (Refs #11) 2026-10-28 00:11:49 -07:00
Frank 414b4cd578 live: heartbeat sync 2026-10-27T23:08:49-07:00 (Refs #11) 2026-10-27 23:08:49 -07:00
Frank b289aa59d4 live: heartbeat sync 2026-10-27T22:05:49-07:00 (Refs #11) 2026-10-27 22:05:49 -07:00
Frank 175bbdf451 live: heartbeat sync 2026-10-27T21:02:39-07:00 (Refs #11) 2026-10-27 21:02:39 -07:00
Frank 531ead5775 live: heartbeat sync 2026-10-27T20:01:49-07:00 (Refs #11) 2026-10-27 20:01:49 -07:00
Frank 9df5c50fda live: heartbeat sync 2026-10-27T18:58:49-07:00 (Refs #11) 2026-10-27 18:58:49 -07:00
Frank ed3a43bff1 docs(core): snapcompact audit — measured shape/recall table, frank-archon image-count budget, 85% trigger law
Live probe against frank-archon (212,916-char archive, 8 planted facts):
auto shape 8on22-bw reads back 8/8 recall at 47% of raw-text billed
tokens; both denser grids drop characters. Lands the docs for the paired
live-config changes (thresholdPercent 95->85, imageCountBudget 16) and
records the catalog-only frame-pricing law (radiance ~2,400 tok/frame vs
the harness's blind 5,024 floor).

Refs #81
2026-10-27 18:37:31 -07:00
Frank cd3fe7fd03 live: heartbeat sync 2026-10-27T17:57:53-07:00 (Refs #11) 2026-10-27 17:57:53 -07:00
Frank 218357cb66 live: heartbeat sync 2026-10-27T16:55:49-07:00 (Refs #11) 2026-10-27 16:55:49 -07:00
Frank 31d6924a27 live: heartbeat sync 2026-10-27T15:54:49-07:00 (Refs #11) 2026-10-27 15:54:49 -07:00
Frank feda9fe668 live: heartbeat sync 2026-10-27T14:52:38-07:00 (Refs #11) 2026-10-27 14:52:38 -07:00
Frank eae9dea2b0 live: heartbeat sync 2026-10-25T19:49:50-07:00 (Refs #11) 2026-10-25 19:49:50 -07:00
Frank bc597edec1 live: heartbeat sync 2026-10-23T16:20:45-07:00 (Refs #11) 2026-10-23 16:20:45 -07:00
Frank 5f560f33c1 live: heartbeat sync 2026-10-23T15:17:45-07:00 (Refs #11) 2026-10-23 15:17:45 -07:00
Frank 461f0b8a6e live: heartbeat sync 2026-10-23T14:16:45-07:00 (Refs #11) 2026-10-23 14:16:45 -07:00
Frank 02b65989ca live: heartbeat sync 2026-10-23T13:14:45-07:00 (Refs #11) 2026-10-23 13:14:45 -07:00
Frank 42eaf9e1a7 live: heartbeat sync 2026-10-22T22:47:45-07:00 (Refs #11) 2026-10-22 22:47:45 -07:00
Frank f51f4dd1aa live: heartbeat sync 2026-10-22T20:42:45-07:00 (Refs #11) 2026-10-22 20:42:45 -07:00
Frank 0e2cf13e3b live: heartbeat sync 2026-10-22T11:24:45-07:00 (Refs #11) 2026-10-22 11:24:45 -07:00
Frank 1d1059f7b3 live: heartbeat sync 2026-10-22T11:02:06-07:00 (Refs #11) 2026-10-22 11:02:06 -07:00
Frank b7089ef570 live: heartbeat sync 2026-10-22T10:01:40-07:00 (Refs #11) 2026-10-22 10:01:40 -07:00
Frank dc4de763f3 live: heartbeat sync 2026-10-22T09:01:07-07:00 (Refs #11) 2026-10-22 09:01:07 -07:00
Frank 9d284106ac live: heartbeat sync 2026-10-22T07:59:45-07:00 (Refs #11) 2026-10-22 07:59:45 -07:00
Frank ac2c5c519a live: heartbeat sync 2026-10-22T06:58:47-07:00 (Refs #11) 2026-10-22 06:58:47 -07:00
Frank f1402ca89c live: heartbeat sync 2026-10-22T05:56:18-07:00 (Refs #11) 2026-10-22 05:56:18 -07:00
Frank 4d515f7e81 live: heartbeat sync 2026-10-22T04:54:18-07:00 (Refs #11) 2026-10-22 04:54:18 -07:00
Frank f7281eee42 live: heartbeat sync 2026-10-22T03:51:42-07:00 (Refs #11) 2026-10-22 03:51:42 -07:00
Frank ecb81dd8b8 live: heartbeat sync 2026-10-22T02:50:34-07:00 (Refs #11) 2026-10-22 02:50:34 -07:00
Frank 1b1a296ec5 live: heartbeat sync 2026-10-22T01:47:38-07:00 (Refs #11) 2026-10-22 01:47:38 -07:00
Frank 9a3d364832 live: heartbeat sync 2026-10-22T00:46:57-07:00 (Refs #11) 2026-10-22 00:46:57 -07:00
Frank e529dc5386 live: heartbeat sync 2026-10-21T23:44:55-07:00 (Refs #11) 2026-10-21 23:44:55 -07:00
Frank 9faf7e0652 live: heartbeat sync 2026-10-21T22:44:37-07:00 (Refs #11) 2026-10-21 22:44:37 -07:00
Frank 017404aa51 live: heartbeat sync 2026-10-21T17:49:41-07:00 (Refs #11) 2026-10-21 17:49:41 -07:00
Frank f3360a28f1 feat(models): reach the fleet from off-network through the OpenWebUI door
Every provider in agent/models.yml is a LAN address, so a workstation that
leaves the house has no model at all. Add `openwebui (franksdank.cloud)`:
the already-public OpenWebUI vhost as an OpenAI-compatible provider that
proxies the same engines, with frank-dragoon and frank-zealot rows and the
WAN row as its own compaction target. LAN rows, modelRoles and the speech
runner stay untouched — the door is purely additive.

The key is command-backed (`apiKey: "!cat ~/.config/secrets/openwebui_api_key"`,
mode 600) instead of inline: a literal sk-... in a tracked file is a key in
every agent context on every box that pulls this repo, and the pre-commit
shape gate would block it anyway. Rotate = rewrite the file + restart omp,
because a `!cmd` value is cached for the process lifetime.

Compat blocks copy their LAN twins because the proxy was probed, not assumed
(2026-10-21): streaming SSE carries reasoning_content and tool_calls deltas
plus final usage, image_url content parts reach both vision towers, and
chat_template_kwargs is forwarded — proven on frank-zealot, where
enable_thinking false yields zero reasoning and true a real block.
frank-archon gets no WAN row: OpenWebUI answers 400 "Model not found"
because its picker never published it, so that path is a fleet change.

Verified end-to-end from a scratch HOME whose LAN baseUrls point at a dead
port, so any answer can only have come through the door (text and a real
tool round-trip); `omp models` still lists all four chat providers and the
tts runner, so the file validates. bats 137/137, kb-lint clean.
Docs: omp-docs/core/wan-model-access.md.
2026-10-21 16:48:29 -07:00
Frank dcdf84719c docs(reports): point the reports index and work log at the vuln issues
The audit's vulnerability clusters are now filed on Gitea as
dank/command-center#67..#77, one issue per host-and-package cluster. Link
them from omp-docs/reports/index.md and record the PR/issue references on
the matching log.md entry, so a reader of the audit can find the open work
without leaving the bundle.
2026-10-21 15:05:41 -07:00
Frank 27da5cd9ec docs(reports): land the fleet security audit with its per-host vuln passes
Fold the Dankclaw and Dankserver vulnerability passes into
fleet-security-audit-2026-10-21.html: the stub "Advisory cross-reference (in
progress)" section becomes the full matrix (host advisories, GHSA coverage,
image-vulnerability matrix, no-advisory census, observed-without-credentials
rows for the two livingroom hosts) and the header links the two working files,
which move into omp-docs/reports/ with an index of their own.

Correct three figures the audit had wrong, all found by re-probing: the
mutable-tag census (17 -> 19 Dankclaw manifests / 17 unique references, +4 on
Dankserver), the Dankserver OpenSSH advisory count (0 -> 5 unpatched CVEs; the
first OSV query omitted the version epoch, and OSV answers "0 vulns" rather
than "unknown" for a malformed purl), and the Plex version ("12.1.0" is
Jellyfin's - the live container reports 1.43.5.11029-6bf8af3f0-ls329). Also
repair a malformed <code> tag in F1's evidence cell.

kb-lint and kb-coverage both report 0 issues; index.md gains the Reports
section and log.md the matching entry.
2026-10-21 14:04:33 -07:00
Frank ec9bf77b10 live: heartbeat sync 2026-10-21T11:49:23-07:00 (Refs #11) 2026-10-21 11:49:23 -07:00