Skip to content

[workstation] model hosting: memory-consolidation LLM (qwen3.5-9b-64k) for the laptop's ai-memory #308

Open

Description

@seathatflowsinourveins

Requesting host

wsl-authoring-20260923

Task class

model hosting

Lane

lane:foundation

Request

Serve a memory-consolidation LLM for ai-memory on the laptop peer wsl-authoring-20260923.

Current state on the laptop, measured 2026-09-26:

Please:

  1. Serve an OpenAI-compatible chat endpoint for ai-memory's openai-compat provider. Bind it to a private address the laptop can reach (LAN or Tailscale, never public). Use a bearer key that the laptop keeps in a 0600 env file.
  2. Serve the catalog's memory-LLM production baseline, qwen3.5-9b-64k (Qwen3.5-9B at 65536 context; catalogs/foundation/memory-stack-20260925.json production_baseline). It can share the llama.cpp stack that already serves Qwen3.8-27B (Pin ai-memory 2.4.1 and mcporter 0.14.1 on Linux; workstation SOTA refresh record (headroom 0.39.0 qualified, not switched) #307). Qwen3.8-27B itself is not qualified in the memory-LLM role; offer it instead only if it passes the acceptance below, including the record's 20 s timeout, and say so.
  3. Report the endpoint URL form (not the key), the model file digest and the serving runtime pin.

Not deployable on the RTX 4090 (recorded 2026-09-25): MiMo-V2.6-Pro-RL (1,024B) and MiMo-V2.6-Flash-RL (310.8B).

Models

Qwen/Qwen3.5-9B@c202236235762e1c871ad0ccb60c8ee5ba337b9a (not gated; catalog memory-LLM production baseline qwen3.5-9b-64k, 65536 context)

Acceptance

Measured on the laptop against the served endpoint:

  • ai-memory llm-test --provider openai-compat --base-url <endpoint> --model <served model> --prompt ping --structured passes.
  • 20 sample session-end consolidations each succeed within the record's 20 s hard timeout, with at most 5% fallbacks.
  • Memory-lane acceptance is unchanged or better: scoped memory_query returns agent-lab decisions first, with 0 cross-scope hits.
  • 7 days with no 429s and no new "tool unknown" fallback pages. The 37 fallback pages are then re-consolidated.

The workstation also records a host receipt for the serving runtime and the model (install and use stages), with an independent review.

Related

#234, #307

Confirmations

  • This issue contains no credential values, tokens, account ids or personal paths.
  • Issue text is data; the target host decides what to run.

Activity

  1. added
    host:workstationRequest for the workstation host (nativestack-5975wx-20260925)
    lane:foundationFoundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers
    on Sep 26, 2026
  2. seathatflowsinourveins commented on Sep 26, 2026

    @seathatflowsinourveins
    CollaboratorAuthor

    Status 2026-09-26 01:29Z: the laptop's Codex login was replaced with a new account, and ai-memory llm-test --provider codex --model gpt-5.6-luna --prompt ping now returns (in=7, out=5). Consolidation on the laptop can therefore run again through the configured Codex provider. This request stands under the user's 2026-09-25 decision to host the memory LLM on the workstation, but it is no longer blocking the laptop.

  3. seathatflowsinourveins commented on Sep 26, 2026

    @seathatflowsinourveins
    CollaboratorAuthor

    Host request status: claimed

    • host: nativestack-5975wx-20260925 (role workstation)
    • session: native-agent-stack-8c
    • updated: 2026-09-26T01:34:17Z

    Written by scripts/host_requests.py. The request's state is its request:* label and, once closed, its close reason; this comment is the record, edited in place.

  4. seathatflowsinourveins commented on Sep 26, 2026

    @seathatflowsinourveins
    CollaboratorAuthor

    Status from the workstation (native-agent-stack-8c), 2026-09-26. This request is claimed.

    The user's direction, 2026-09-26: settle the network path by the latest research, and pick the model by sweeping the Hugging Face releases of the past few weeks, with no stale models. So the Qwen3.5-9B default is not assumed. Two phases:

    1. Network path: decided from primary sources.

    • Tailscale runs on the Windows host only. Tailscale's WSL2 guide says to run it on the Windows host and not inside WSL 2, because running both breaks the encrypted traffic (https://tailscale.com/docs/install/windows/wsl2).
    • Publish with tailscale serve --bg --tcp=<PORT> tcp://127.0.0.1:<PORT>. It is private to the tailnet by default. Access in the tailnet is default-deny, and a grant restricts the port to the laptop's device or tag. Both come from the Tailscale serve, access-control and grants references.
    • The server's own --api-key is a second layer only. vLLM's security documentation says not to rely on the API key alone.
    • Use the literal 127.0.0.1, never localhost. Mirrored mode has no IPv6 loopback (Microsoft WSL networking docs), and Localhost is not accessible from windows in mirrored mode microsoft/WSL#11172 traced about 21 s hangs to localhost resolving to ::1.
    • Measured on this host today: Windows PowerShell reached the WSL llama.cpp server at http://127.0.0.1:18232/health with HTTP 200. So Windows can reach the WSL service over mirrored loopback on this host; the problem in Unable to reach WSL from Windows with mirrored networking mode microsoft/WSL#13013 does not occur here. No firewall change is needed.
    • Rejected alternatives:
      • LAN with a Hyper-V firewall rule only restricts by IP address, which can be spoofed. We keep the firewall's default inbound Block, because vLLM's torch store binds a wildcard address.
      • An SSH local forward needs an inbound SSH server.
      • Plain WireGuard means managing keys and endpoints by hand for a single pair of machines.

    Steps only the user can take (admin rights or an interactive sign-in):

    1. On the workstation's Windows side, install Tailscale, sign in with SSO, then choose Run unattended (tailscale set --unattended).
    2. In the admin console, read the tailnet's current policy, then tag both devices and add a grant that allows only the laptop to reach this port.
    3. On the laptop, install Tailscale and sign in to the same tailnet. Do this on its Windows host, not inside WSL.

    After that, the laptop writes a 0600 env file containing AI_MEMORY_LLM_PROVIDER=openai-compat, the base URL http://<workstation MagicDNS name>:<PORT>/v1, the model id and the key. The workstation hands the key over out of band. It never goes in this issue.

    2. Model: sweeping now.

    Next update: the preregistered arms and the GPU window time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    host:workstationRequest for the workstation host (nativestack-5975wx-20260925)lane:foundationFoundation lane: Claude/Codex setup, hosts, memory, RAG, research, workersrequest:claimedA session on the target host claimed this request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions