Skip to content

History / LAN Manager

Revisions

  • docs: make the wiki a user guide The wiki was half user guide and half development record. It is now only the former — 21 pages to 16, each written for someone using TinyTitan. Removed (still readable in this repository's history at 6acaa8f): - Engineering-Notes.md, the dated engineering record - Tracker-Archive.md, the closed audit findings - ANE-Prefill-Research.md and Capital-of-Paris-Smartness.md, measurement studies - Technical-Articles.md, the index into the pages above Rewritten for users: - Home: the guide map, the quickstart and the requirements. - Installation and Configuration (new): every model key, where installs and staging live, the launcher's flags, the environment variables, the diagnostics switches and the other tools. - Runtime Controls: every CLI, server and API parameter with its default — generation and sampling, context and KV, thinking, answer shape, memory and expert streaming, engines, server runtime — with worked examples. - Local Server and API: endpoints, request examples, structured output, function tools, model ids, client wiring, prompt reuse, error codes. - Cookbook: more recipes (messages file, reproducible sampling, streaming, a named JSON schema, function calling, a Python client), each with what to expect. - Benchmarks: what to expect on an M3 and how to read it, without the version-by-version history. - Project Tracker: open work only. - Getting Started, FAQ, LAN Manager and TinyTitan Plugin: dated measurements and internal rationale removed. The Changelog stays: it is release notes for users, and docs/release-process.md makes it the canonical announcement. Links to the removed pages were repaired everywhere, including three historical Changelog entries; the wiki's internal links all resolve and it contains no personal or internal data.

    André Borchert committed Sep 29, 2026
  • docs: fix the wiki quickstart, examples and internal identifiers Task 6 of the cleanup runbook: the wiki is the user guide, and several pages had drifted from the build they document. - Home and Cookbook used `models/qwen3.5_2B_4Bit`, which is not installed, so the recipe exited 1. They now use `models/qwen3.5_4B_4Bit`, re-run for this commit, with the real stdout, the real timing footer and the real `install_models.sh` table pasted in place of the fabricated sample output. - Cookbook: the `@cpu` note now says the alias appears in catalog mode (`--models-dir`, which `tools/server_launcher.sh` uses), which is what the build does; a server started with a single `--model <dir>` serves one id. - OpenAI-Compatible-Server: the dense `--cpu` example uses the installed 4B. - ANE-Prefill-Research: the Reproducing section states its prerequisite (an installed 2B and the pinned Core ML venv) rather than implying it ran. - Redacted internal identifiers from LAN-Manager and Engineering-Notes: a real account name in an absolute path, private LAN and tailnet addresses and internal machine names are placeholders now. - Added a "Last verified" line to Home, Getting-Started, Cookbook, FAQ, Runtime-Controls, OpenAI-Compatible-Server and Benchmarking-Guide naming what was run and what was not. - Tracker: added TT-036 for the misleading "missing chat_template.jinja" error that a nonexistent `--model` directory produces, and linked Tracker Archive from the sidebar so no page is orphaned. Evidence: every recipe changed here was run locally on macOS 27.0 / Swift 6.4 / arm64; tools/lint.sh (eleven gates) and swift test --no-parallel both exit 0 in the repository.

    André Borchert committed Sep 28, 2026
  • Tracker round 5: TT-028 closed — a session is started by delegating to the harness `POST /dsh-lan/sessions` and `workspaces`'s `startSession` now route through the harness's own session controller rather than a reimplementation, with 501 kept for profiles that compose none and the controller's own failure code preserved. The page's "Not yet" section is rewritten to what is actually absent — a session with no live agent has no readable history (TT-030) — and Engineering Notes records that both previously-absent capabilities landed, with the reasoning for each. Plugin tests are 104.

    André Borchert committed Sep 18, 2026
  • Tracker round 4: TT-029 closed — Bonjour is browse-only, by decision The LAN source browses a service nothing registers. Registering it was rejected rather than deferred: Bonjour advertises the host's LAN address, the API answers on loopback only (TT-020), and a discovered peer that cannot be probed is worse than an empty browse. The plugin now says so at every mount, and the page's discovery table no longer implies Bonjour finds instances on the LAN. Engineering Notes records the reasoning so it is not re-litigated, and the plugin test count is current at 100.

    André Borchert committed Sep 18, 2026
  • Tracker round 2: TT-017 closed — a session's history can be read back The plugin could instruct a fleet and not collect the answers; it now exposes `GET /dsh-lan/sessions/:id/messages`, built on the live agent's own session derivation. The fleet-audit recipe in the LAN Manager page shows the read-back instead of only the prompt, and the endpoint list and test count in Engineering Notes are current (96 plugin tests). Open is 17, Blocked 4, Parked 4.

    André Borchert committed Sep 18, 2026
  • Tracker round 1: three tasks closed, two found and added, sorted by size The tracker is now ordered easiest-first with a Size column, so the work order is the table order. Closed: - TT-015 — `apply()` now has a mount test: one prefix route at the base path, a handler that answers, the mount banner, and disposal through both seams (`ctx.effect` and `ctx.on('dispose')`). 92 plugin tests. - TT-012 — the M1-M6 claim is now stated as what it is: `arm64` is required, every published measurement is from one M3, and the wider range is intent, not a result. - TT-016 — `POST /dsh-lan/gossip` is deleted. The mesh that works is the pull one: `/inventory` returns each member's peer list and the table merges it. A mutation endpoint with no caller is surface with no purpose, so it went, with its test and its catalogue entry; `mergeGossip` stays, because the pull path uses it. Found while reading the notes, and added: - TT-028 — starting a session is not wired: the endpoint answers 501 and the trust level is not accepted at all. - TT-029 — Bonjour discovery can never find anything: the plugin browses `_dsh-lan._tcp` and nothing registers it, so on a LAN with neither Tailscale nor seeded peers it looks for records no machine publishes. Re-sized TT-008 from S to M: the env is read in three places that each test `== "1"`, so the fix is to single-source it as a tri-state — which touches the runtime and therefore needs the golden check, not just a unit test.

    André Borchert committed Sep 18, 2026
  • Wiki audit: correct 12 pages against the code, and retire a command that cannot run Every page was read against the 5.7 tree. Three systemic causes account for most of what the audit found. **Docs described tuning that is no longer shipped.** FAQ and Runtime-Controls quoted the family fallback and pre-repair arms, while the defaults are the per-install `ModelProfile.table`: the 35B rows are 10 GiB/160 slots at 4-bit and 12 GiB/96 at 8-bit with prefetch on, and Qwen3.8 is 12 GiB/96 at 4-bit and 9.5 GiB/40 at 8-bit with prefetch off. Also corrected: Home's Swift floor (6.3 -> 6.4) and its 35B disk range; Getting-Started's dense sizes, and its claim that a pipe sets up the browser window (that prompt needs a terminal); Features' missing 8-bit Qwen3.8, its three clients where there are five, and "binary thinking" where Qwen3.8 has four levels. **Version labels had drifted.** Benchmarks' "v4.7" section is 5.0's work — there is no v4.7 tag — and it claimed a v4.6 baseline for Qwen3.8, which did not exist then. Its three percentages were withdrawn rather than re-guessed: their baselines cannot be re-derived from anything in the repository. **The LAN Manager's remote-access recipe was impossible.** The harness refuses `--host 0.0.0.0`, and a specific address fails the webserver plugin's schema (`expected "127.0.0.1" | "0.0.0.0"`), so the profile does not load. Verified by trying both on a throwaway DSH_HOME. The page, the plugin README and the plugin's own boot log all told operators to do it; all three now say what is true, and the boot log no longer advertises addresses nothing is listening on. Also: Cookbook's launcher keys, OpenAI-Compatible-Server's `-fast` listing and its per-surface reasoning field, System-Design's ANE default, MTP numbers and interface list, TinyTitan-Plugin's `--web` owner and its session-title overclaim, the LAN fence's IPv6 ranges and its missing config keys, an unquoted receipt error, and a duplicated sentence. Verified after: links, anchors and the sidebar clean; every cited path still resolves; both plugin suites pass; all six lint gates green.

    André Borchert committed Sep 18, 2026
  • LAN Manager: the mesh, the dashboard, and a separate plugins section `LAN-Manager.md` gains the group — one key with a public default, the four discovery sources, what the mesh does and does not do — plus a section on why a fleet control plane is worth having at all: twelve jobs, from stopping the line and auditing a fleet to broadcasting an incident, each with the command that does it. It also documents the dashboard's columns, its keys and its resize contract, and states the two limits plainly where a reader will hit them: the manager sends prompts but does not yet read the replies, and starting a session answers 501. `Project-Tracker.md` gets a `## Plugins` section, first after the intro, with one subsection per plugin, so plugin work no longer sits among the engine's numbered sections. dsh-lan-manager's five open items are individually closeable headings. The audit the page's own rule asks for: three completed engine items are pruned (the KAT block — its outcome is in Changelog 5.4, the README matrix and the `converter-expert-order` gate, with its trap and its parked idea kept; the six dense baselines; Release 5.3, superseded by 5.4 and now documented in release-process.md §5), along with a pointer into the removed "Recently closed" log and a blocker row for an 8-bit build that has since shipped. One item was simply wrong and is corrected: the dsh-tinytitan publishing entry said it awaited the catalogue maintainer's review, but PR #5094 was **closed on 2026-09-15 with no comment**, the catalogue carries no entry, and the package is not on npm — so it is a decision to resubmit or take another route, not a review in flight.

    André Borchert committed Sep 18, 2026
  • LAN Manager: the dsh-lan-manager plugin, and what it exposes A page for plugins/dsh-lan-manager: the endpoints, how to install it, and the two things that are easy to get wrong when using it. * Installing the plugin is not enough. dsh web binds loopback by default, so the page leads with the --host 0.0.0.0 --trusted-host invocation that has to accompany it, rather than leaving a reader with an API nothing can reach. * The access model is stated in full, including the two things a reader might otherwise assume are handled: X-Forwarded-For is deliberately not trusted, and the token is optional and is the only thing separating two machines on the same private range. Also records how the API derives "active" — from the session projection rather than the workspace registry — because that is the difference between answering the question the page asks and answering a neighbouring one. Sidebar gains a DeepSeek Harness section above Reference.

    André Borchert committed Sep 17, 2026