Post History

Current version by Nick Antonaccio

Current VersionOct 11, 2026 at 19:02
<em>This post has been deleted.</em>
Previous Versions
Version 1Oct 11, 2026 at 18:57

Below is a prompt to set up Pi on a remote machine, to use models served by Strata on your locally hosted server as the LLM provider. I run Cloudflared on my servers to tunnel connections to my servers, so having that set up for your server machine(s) is a prerequisite (unless you want to forward ports, or simply use your servers inside a closed local area network). See https://aibynick.com/thread/42 to understand how I set up Cloudflared tunnels.


   Connect this machine to a remote Strata inference server (Qwen3.8-Flash-Next, 125B MoE) exposed
   through a Cloudflare tunnel.

     BASE_URL = https://3080tistrata.101compute.com
     API_KEY  = BrpHjVUnPVT7SYQH4uf7xM6qd3ZHui5dA1RR7KqHXr8

   It is an OpenAI-compatible API; app base URL is BASE_URL + "/v1".
   An Anthropic-compatible endpoint is at BASE_URL + "/v1/messages".
   The browser UI is at BASE_URL (enter the key under About > Settings).

   === MODEL NAME: SET IT ONCE, NEVER CHANGE IT ===
   The server IGNORES the model name entirely. It always serves whatever model the host machine
   currently has loaded. Send a fixed constant such as "strata" for every request and leave it
   permanently. Do NOT try to select a model by name, and do NOT reconfigure this client when the
   host changes models — nothing on this side needs to change.

   === SWITCHING MODELS HAPPENS ON THE HOST, NOT HERE ===
   The host operator switches between three sizes (IQ2_XS, IQ3_XXS, IQ3_S). They all share the same
   URL, port and key. Your configuration is stable across every switch.

   The ONLY thing that changes for you is the usable context window, because the host's available
   context differs per model:
       IQ2_XS   -> 262,144 tokens
       IQ3_XXS  ->  65,536 tokens
       IQ3_S    ->  65,536 tokens
   If you send more than the current ceiling the server REFUSES the request (it never silently
   truncates). Handle this gracefully: on such an error, trim or summarise your context and retry,
   and tell me the model appears to have changed. Query BASE_URL/v1/models to see which model is
   currently loaded — treat its "id" as informational only, never as something to route on.

   Also expect 30-90 seconds where requests FAIL whenever the host switches models.

   === SETUP AND VERIFICATION ===
   1. Confirm auth is enforced:
        curl -s -o /dev/null -w "%{http_code}\n" BASE_URL/v1/models                            # expect 401
        curl -s -H "Authorization: Bearer $API_KEY" BASE_URL/v1/models                          # expect 200
   2. Confirm inference works; report timings.predicted_per_second and the reported model id:
        curl -s BASE_URL/v1/chat/completions -H "Authorization: Bearer $API_KEY" \
          -H "Content-Type: application/json" \
          -d '{"model":"strata","messages":[{"role":"user","content":"Say hello in five words."}],"max_tokens":64,"reasoning_effort":"none"}'
   3. Ask me which client to configure (OpenAI SDK, Continue, Cline, aider, Claude Code, plain
      script) before installing anything, then set base URL BASE_URL + "/v1" and the API key.
   4. Use reasoning_effort "none" or "low" unless I need deep reasoning — "high" is the default
      and is substantially slower.

   === THINGS TO EXPECT AND TELL ME ABOUT ===
   - The server handles ONE request at a time; concurrent agents serialise. Don't fan out in parallel.
   - Prefill is slow for large first prompts (~1 minute per 30K tokens). Short chat is fine; dumping
     a large codebase as context will feel slow.
   - A home GPU behind a tunnel: expect variable latency (measured 27-34 tokens/s decode).
   - 403 "Host is not allowed" means the tunnel hostname is untrusted — report it, don't work around it.
   - Do not send secrets you would not share with the host machine.