neuralwatt-router-service #8

Merged
alee merged 15 commits from neuralwatt-router-service into main 2026-08-29 17:17:54 +00:00
Owner
No description provided.
alee added 15 commits 2026-08-29 17:16:02 +00:00
documentation_reviews/readme-restructure-review.md found that the README restructure (14a7653) dropped the Where Ollama lives subsection, which included a security instruction about binding Ollama to a VPN address rather than 0.0.0.0. Restore it verbatim under ## Installation as a third subsection alongside Local (venv) and As a systemd service.

Also remove the dead Table of Contents links: Scheduled Jobs (systemd) (heading no longer exists), and Setup/Where Ollama lives (Setup section no longer exists). Re-add Where Ollama lives under Installation in the TOC so it has exactly one working entry.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
The README never mentioned the project name 6krrt; it only said Local LLM Model Router. Add a small cute SVG logo of a wheeled number 6 and a centered header block that shows both the name and the descriptor, keeping the existing intro paragraph and tui.py demo-gif TODO intact.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Adds a cute, wheeled '6' mascot to the project. The logo uses a transparent background and a high-contrast orange/slate palette for visibility across light and dark modes. Updated the README header to prominently feature the 6krrt name and the new logo.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Documents why config.yaml points at Modelfile-tagged variants of mistral-nemo:12b and qwen3-vl:4b, gives the exact ollama create commands, and explains the per-request num_ctx limitation that forces the context size to live in the tag.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
A bare SIGTERM delivered directly to the uvicorn PID (bypassing systemctl)
left the dispatcher permanently unreachable: its listening socket closed,
but graceful shutdown never completed because open SSE connections
(/events/decisions) never disconnect, and since systemd wasn't tracking a
stop job for that signal, TimeoutStopUSec never applied and
Restart=on-failure never fired.

Cap the graceful-shutdown wait with --timeout-graceful-shutdown 5 so any
SIGTERM converges to a clean exit regardless of who sends it, and record
the incident in CLAUDE.md for the next time this happens.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRQXz5SYZYVWscxS1QqF6U
Restart=on-failure explicitly excludes clean termination by SIGTERM/SIGINT
from auto-restart, on the assumption that SIGTERM always means a deliberate
stop. That assumption doesn't hold here: something outside systemctl keeps
sending the dispatcher a bare SIGTERM, and once the graceful-shutdown-timeout
fix let it exit cleanly instead of hanging, it just stayed down afterward
until someone noticed. Switch to Restart=always so it self-heals in ~5s
regardless of who sent the signal; systemctl stop/restart are unaffected.

Also documents the live investigation into the signal's actual source
(code_plans/router-unreachable-signal-investigation.md): ruled out systemctl,
the admin portal's restart trigger, suspend/resume, and the OOM killer;
confirmed via auditd it isn't delivered through kill or tgkill either, so the
audit watch now also covers pidfd_send_signal and the rt_*sigqueueinfo
syscalls. Still open.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRQXz5SYZYVWscxS1QqF6U
Coalesced commit: todos 1-6 all live in the single untracked

admin/frontend/index.html file. Their changes cannot be cleanly separated

by hunk because the pre-fix file state was never committed and the

original canvas gauge code is unrecoverable. This commit also carries

the frontend half of todo 7 (sequential saveAllConfig), which is in the

same file.

Fixes covered:

- Todo 1: quota gauge replaced with horizontal bar + realigned layout

- Todo 2: verdict doughnut canvas id fixed to verdict-chart

- Todo 3: history line chart canvas id fixed to history-chart

- Todo 4: runtime knob objects no longer render as [object Object]

- Todo 5: warnings panel rebuilds placeholder, no null reference

- Todo 6: task_category and model/provider strings escaped before innerHTML

- Todo 7 frontend: saveAllConfig issues requests sequentially

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
QA evidence captured while the QA uvicorn instance ran on 127.0.0.1:8091,

leaving the production :8080 systemd service untouched.

Committed evidence:

- code_plans/task-8-admin-visual-fixes.png

- code_plans/task-8-admin-visual-fixes-post-save.png

- code_plans/admin_dashboard.png

- code_plans/.playwright-mcp/ (console logs + v2/v3 screenshots)

- .omo/evidence/task-8-admin-visual-fixes-v2.png

- .omo/evidence/task-8-admin-visual-fixes-console-v2.txt

Panels asserted: quota bar, verdict doughnut, history line chart, runtime knobs,

warnings panel (no null reference), and save-all config flow.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
alee merged commit 7558332536 into main 2026-08-29 17:17:54 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alee/6krrt#8