Executes the plan from the wayfinder map #55 (checklist: #64).
What changes
Removed from the stack: ComfyUI + Qwen-Image (comfyui, downloader-comfyui, scripts/switch-model.sh), Open WebUI, Lazytainer, neo4j, with their volumes, env keys and update.sh steps (#58, #63).
qdrant is bound to loopback only (no auth). The dashboard port stays LAN-published, and the docs now say so correctly (#63).
Docs restructured (#60): README reduced to intro + quickstart + index. New architecture.md, gateway.md (replaces proxy-key-onboarding.md) and operations.md. network-access.md rewritten, coding-CLI docs fixed. docs/research/README.md marks each research doc current or superseded, and proxy-request-priority.md moved there.
GlossaryCONTEXT.md (#59). Every doc opens with a Source of truth line, names keys, and doesn't restate values.
Code comments → docs (#61): compose, .env.example and update.sh keep one-line pointers, inline warnings for data loss / security / breakage, and "auto-filled — leave blank" markers.
Agent guidedocs/agents/writing-docs.md + new-term procedure in domain.md, reached via a pointer in CLAUDE.md (#62).
Audit findings fixed along the way (#56): the stale OMNIROUTE_PORT:-4000 endpoint everywhere, the dashboard wrongly described as unpublished, Lazytainer described as working, and the contradictory account of the classifier's VRAM fix.
Checks run
every # see docs/…#… pointer and every markdown link resolves to an existing file/heading (script)
every non-research doc has its source-of-truth line and a README index row (server-planing.md is left unchanged by decision)
no non-research doc restates a compose / .env.example value
Deploy (run on the server after merge — not done by this PR)
./scripts/update.sh. Its --remove-orphans removes the comfyui, open-webui, lazytainer and neo4j containers. Expect a conflict prompt only if server .env values differ from the defaults.
docker volume rm llm-server_comfyui-data llm-server_open-webui-data llm-server_neo4j-data (check the prefix with docker volume ls).
OmniRoute dashboard: revoke the openwebui-chat API key and delete the comfyui provider connection, if they exist.
Reverse proxy: remove knowledge.proxy-ai.home and any comfy.home / :8008 route.
Optional: delete stale COMFYUI_*, OPENWEBUI_OMNIROUTE_KEY, NEO4J_PASSWORD, LAZYTAINER_* lines from the server .env, and docker image rm the unused images.
Verify: docker compose ps shows only llama-server, qwen-classifier, omniroute, qdrant; qdrant is unreachable on 6333 from another LAN host; a coding CLI still gets a response through the gateway.
Executes the plan from the wayfinder map #55 (checklist: #64).
## What changes
- **Removed from the stack:** ComfyUI + Qwen-Image (`comfyui`, `downloader-comfyui`, `scripts/switch-model.sh`), Open WebUI, Lazytainer, neo4j, with their volumes, env keys and `update.sh` steps (#58, #63).
- **qdrant** is bound to loopback only (no auth). The dashboard port stays LAN-published, and the docs now say so correctly (#63).
- **Docs restructured** (#60): README reduced to intro + quickstart + index. New `architecture.md`, `gateway.md` (replaces `proxy-key-onboarding.md`) and `operations.md`. `network-access.md` rewritten, coding-CLI docs fixed. `docs/research/README.md` marks each research doc current or superseded, and `proxy-request-priority.md` moved there.
- **Glossary** `CONTEXT.md` (#59). Every doc opens with a *Source of truth* line, names keys, and doesn't restate values.
- **Code comments → docs** (#61): compose, `.env.example` and `update.sh` keep one-line pointers, inline warnings for data loss / security / breakage, and "auto-filled — leave blank" markers.
- **Agent guide** `docs/agents/writing-docs.md` + new-term procedure in `domain.md`, reached via a pointer in `CLAUDE.md` (#62).
Audit findings fixed along the way (#56): the stale `OMNIROUTE_PORT:-4000` endpoint everywhere, the dashboard wrongly described as unpublished, Lazytainer described as working, and the contradictory account of the classifier's VRAM fix.
## Checks run
- [x] every `# see docs/…#…` pointer and every markdown link resolves to an existing file/heading (script)
- [x] every non-research doc has its source-of-truth line and a README index row (`server-planing.md` is left unchanged by decision)
- [x] no non-research doc restates a compose / `.env.example` value
- [x] `docker compose config -q` passes; `bash -n scripts/update.sh`
## Deploy (run on the server after merge — not done by this PR)
1. `./scripts/update.sh`. Its `--remove-orphans` removes the comfyui, open-webui, lazytainer and neo4j containers. Expect a conflict prompt only if server `.env` values differ from the defaults.
2. `docker volume rm llm-server_comfyui-data llm-server_open-webui-data llm-server_neo4j-data` (check the prefix with `docker volume ls`).
3. OmniRoute dashboard: revoke the `openwebui-chat` API key and delete the `comfyui` provider connection, if they exist.
4. Reverse proxy: remove `knowledge.proxy-ai.home` and any `comfy.home` / :8008 route.
5. Optional: delete stale `COMFYUI_*`, `OPENWEBUI_OMNIROUTE_KEY`, `NEO4J_PASSWORD`, `LAZYTAINER_*` lines from the server `.env`, and `docker image rm` the unused images.
6. Verify: `docker compose ps` shows only llama-server, qwen-classifier, omniroute, qdrant; qdrant is unreachable on 6333 from another LAN host; a coding CLI still gets a response through the gateway.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Drops the comfyui, downloader-comfyui, open-webui, lazytainer and neo4j
services with their volumes, env keys and update.sh steps, plus
scripts/switch-model.sh and the two image-generation research docs.
Refs #55 (removal inventory #58, intent vs. source #63)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- CONTEXT.md glossary
- README reduced to intro, quickstart and doc index
- new architecture.md, gateway.md (from proxy-key-onboarding.md),
operations.md; network-access.md rewritten
- coding-cli-setup: stale OMNIROUTE_PORT:-4000 endpoint, terms and
duplicated per-slot/classifier explanations fixed
- research/README.md index; proxy-request-priority.md moved there as
superseded
Every doc names keys instead of restating values and links its source.
Refs #55 (#56, #57, #59, #60)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Explanations from docker-compose.yml, .env.example and
scripts/update.sh now live in docs/architecture.md, gateway.md,
network-access.md and operations.md. Code keeps `# see docs/...`
pointers, one-line warnings (storage key, SSRF guard, WAL grace period,
git pull ordering) and "auto-filled — leave blank" markers.
Refs #55 (comment destination map #61)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/agents/writing-docs.md holds the doc/comment rules and done-check,
reached via a pointer in CLAUDE.md (AGENTS.md and QWEN.md import it).
docs/agents/domain.md gains the procedure for new or conflicting terms.
Refs #55 (agent guide #62)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Executes the plan from the wayfinder map #55 (checklist: #64).
What changes
comfyui,downloader-comfyui,scripts/switch-model.sh), Open WebUI, Lazytainer, neo4j, with their volumes, env keys andupdate.shsteps (#58, #63).architecture.md,gateway.md(replacesproxy-key-onboarding.md) andoperations.md.network-access.mdrewritten, coding-CLI docs fixed.docs/research/README.mdmarks each research doc current or superseded, andproxy-request-priority.mdmoved there.CONTEXT.md(#59). Every doc opens with a Source of truth line, names keys, and doesn't restate values..env.exampleandupdate.shkeep one-line pointers, inline warnings for data loss / security / breakage, and "auto-filled — leave blank" markers.docs/agents/writing-docs.md+ new-term procedure indomain.md, reached via a pointer inCLAUDE.md(#62).Audit findings fixed along the way (#56): the stale
OMNIROUTE_PORT:-4000endpoint everywhere, the dashboard wrongly described as unpublished, Lazytainer described as working, and the contradictory account of the classifier's VRAM fix.Checks run
# see docs/…#…pointer and every markdown link resolves to an existing file/heading (script)server-planing.mdis left unchanged by decision).env.examplevaluedocker compose config -qpasses;bash -n scripts/update.shDeploy (run on the server after merge — not done by this PR)
./scripts/update.sh. Its--remove-orphansremoves the comfyui, open-webui, lazytainer and neo4j containers. Expect a conflict prompt only if server.envvalues differ from the defaults.docker volume rm llm-server_comfyui-data llm-server_open-webui-data llm-server_neo4j-data(check the prefix withdocker volume ls).openwebui-chatAPI key and delete thecomfyuiprovider connection, if they exist.knowledge.proxy-ai.homeand anycomfy.home/ :8008 route.COMFYUI_*,OPENWEBUI_OMNIROUTE_KEY,NEO4J_PASSWORD,LAZYTAINER_*lines from the server.env, anddocker image rmthe unused images.docker compose psshows only llama-server, qwen-classifier, omniroute, qdrant; qdrant is unreachable on 6333 from another LAN host; a coding CLI still gets a response through the gateway.🤖 Generated with Claude Code