MENU

Turning the Community-Built Inference Engine “Strata” into a Single-GPU Inference Appliance

Illustration of a single GPU with three glowing tiered memory layers rising above it, titled “Strata: One GPU, One Giant Model”
Contents
Launch a GPU in seconds. Root SSH. Per-hour billing.

Introduction

Qwen3.8-Flash-Next is a model that delivers response quality good enough that I’d almost call it a next-generation model that has already reached a certain level of completion. Because of that, quite a few people want to get their hands on it — popular enough that some people have gone out of their way to buy up multiple used NVIDIA Tesla V100 32GB cards just to run it.[1]

Figure 1: Architecture diagram of Qwen3.8-Flash-Next Figure 1: Architecture diagram of Qwen3.8-Flash-Next

This model’s parameter count comes out to 125B + 51B (n-gram) + 4B (MTP) – A6B — a fairly large model. (Of that, the 51B n-gram portion, roughly 27GB, runs out of main memory.) When I evaluated it myself, my own environment couldn’t handle it at all, so I borrowed a machine with an NVIDIA A100 from Highreso to run the evaluation. Then, right around early October, I heard that this model could be run with far fewer resources, and still run fast.

My first reaction was, “No way that’s real — it’s probably just some trick that fakes a speed boost,” but…

What I’m introducing this time is Strata, an inference engine that actually pulls this off.

How to read this article This article walks through how Strata works and shares measured results covering KV/Expert cache behavior. If you’d like to read it in order, just keep going. If you just want the numbers, feel free to skip ahead to “What’s It Actually Like to Use?”

About Strata

Strata is an inference engine built on top of llama.cpp, packed with various tricks that let it run quantized versions of Qwen3.8-Flash-Next in low-resource environments. It can expose basically the same interface as llama.cpp, and it runs models from GGUF files. As a minimum setup, it needs:

  • At least 48GB of free main memory

  • At least 12GB of free VRAM

  • At least 100GB of SSD space

— and with that, remarkably, it can run Qwen3.8-Flash-Next.

It’s created by Niko Veit (https://x.com/coldniko), built together with a group of volunteers. As of this writing, the latest version is v0.2.2.[2]

Let me walk through each of the ideas built into it.

The 3-Tier Resource Structure

Rather than placing everything on the GPU, Strata lays resources out across a 3-tier structure, built to take good advantage of Qwen3.8-Flash-Next’s MoE architecture and its n-gram Embedding.

Figure 2: The 3-tier resource hierarchy Figure 2: The 3-tier resource hierarchy

Only the parts that are absolutely required stay fixed on the GPU, while all non-shared Experts are placed in main memory. Frequently used Experts are then pulled into an “Expert Cache” as needed, so that only the highest-frequency Experts occupy the fast tier.

The KV Cache is likewise split across two tiers.

To squeeze out context length more efficiently, Strata adopted the Elastic KV approach (--kv-grow) starting in v0.1.40. Previously, the KV cache was a fixed size, overflowing into pinned host memory as a fallback when needed. With Elastic KV, the mechanism changed so that memory can be handed over from the cold Expert Cache to the KV cache first, when needed — allowing it to keep responding quickly even when longer context sizes are requested.

The n-gram Retriever, which Qwen3.8-Flash-Next originally keeps in main memory, gets shifted onto the SSD instead. In a sense, this is closer to the original intended use of PLE, and since that data is read directly from the GGUF file, it’s designed to avoid adding SSD overhead — a genuinely helpful touch in a resource-constrained environment.

Not Just a llama.cpp Wrapper

The engine that Strata runs on is built on top of ggml-org/llama.cpp, but it’s really a hybrid engine — a derivative engine with its own extensions — that adds substantial custom implementation on top for things like MoE offloading, speculative decoding, and custom kernels.

Automatic Tuning

At the end of the install process, Strata runs automatic tuning and sets reasonably optimal parameters for your environment. That means you can get solid performance without fine-tuning parameters by hand after installation, cutting down the time it takes to go from setup to production.

MTP Is On by Default

As a way to boost generation speed, the MTP (speculative token prediction) feature is on by default. This allows very fast token generation, especially in multi-turn scenarios, letting you fit more inference work into a limited amount of time.

The Load on the SSD Is Almost Entirely Read Load

Since Strata also uses the SSD, I was initially worried that something like an SSD cache might wear down the NAND through heavy rewriting. In practice, though, most of what occupies that space is n-gram Embedding. The data making up the n-gram Embedding is static knowledge data, so it never gets rewritten — it simply gets read as needed.

So the risk of the SSD degrading rapidly and becoming unusable because of Strata is expected to be extremely low.

A GPU Profile That Fits the Bill Perfectly

For this evaluation I used an easy-to-rent, NVIDIA RTX A4000-equipped GPU cloud instance.

It’s a container-based instance I’ve used often for evaluating things in an isolated environment, and for testing models an RTX 3060 can’t handle, before I eventually bought my own Intel ARC Pro B70.

ItemSpecification
GPUNVIDIA RTX A4000
GPU memoryGDDR6 16GiB
GPU memory bandwidth448.0 GB/s
FP32 compute19.17 TFLOPS
BF16 compute38.34 TFLOPS
INT8 compute153.4 TOPS
INT4 compute306.7 TOPS
vCPU11 Core
System memory62.5 GiB [3]
StoragePersistent 100 GiB
CUDA version13.2
NVIDIA Driver Ver.580
OSUbuntu 24.04 Server

Table 1: Specs of the NVIDIA RTX A4000 GPU instance used in this testing

Right as I was about to evaluate Strata, I looked at this machine’s specs and noticed they lined up almost perfectly with what Strata needs. So I decided to see whether I could turn this RTX A4000 instance into a proper appliance for running Qwen3.8-Flash-Next.

Running Strata

Starting Strata

To start Strata, run the launch command with the path you specified during installation. The first run went through the install process, but once a configuration already exists, startup proceeds according to that configuration.

$ /home/user/.local/bin/strata launch

The screen below appears; select the model name shown at the top and press Enter to start the engine. Strata launch screen listing the model to select and start (Screen 1)

Note that the engine takes roughly 480 seconds to start up. During that time it’s loading and placing various things from disk into memory, so it’s worth being aware that this puts a fair amount of load on disk I/O.

Stopping Strata

To stop Strata, press Ctrl+C to terminate the process. Doing so brings up a screen like the one below.

Strata stop confirmation screen with options to keep or stop serving in the background (Screen 1)

Selecting Stop serving in the background stops it.

You can also just detach from the foreground and keep the engine running in the background — in that case, select Keep serving in the background.

Updating Strata

Strata has an update command that lets you update to the latest version. Below is an example run — you can see the engine and the control plane each getting updated.

$ strata update
Strata update (https://github.com/Niko1221/Strata/releases/latest/download)
Reading the signed update feed
downloading engine 0.1.48 linux-x86_64-cuda-cuda13: 100% (578 of 578 MiB)
Unpacking 0.1.48 linux-x86_64-cuda-cuda13
Checking the package signature and every file
Test-starting engine 0.1.48 linux-x86_64-cuda-cuda13 before switching to it
Switching to engine 0.1.48 linux-x86_64-cuda-cuda13
Engine 0.1.48 is installed and will be used on the next start
downloading Control 0.1.49.1: 100% (94 of 94 MiB)
Unpacking Control 0.1.49.1
Test-starting Control 0.1.49.1
Feed sequence 111, signed by 5d1bc23abbeffd0d
Engine 0.1.47 -> 0.1.48 updated (tested: started, answered one token, stopped)
Control 0.1.47 -> 0.1.49.1 updated. The next `strata` command already runs it; the app switches on its next start
Saved tuning presets: marked for the short re-check (nothing was deleted).
The previous engine version is kept; `strata components rollback` returns to it.

It looks like a functional test runs whenever the engine gets swapped out, so updates tend to take a while.

Configuring Strata

This is one of Strata’s weak points: there’s no proper reference documentation for its configuration. Also, the spec seems to differ slightly between the v0.1.x and v0.2.x series.

The configuration file lives at the following location.

/home/user/.config/strata/launch-presets/iq3_xxs-128k.json

In my case, the configuration file looked like this.

{
"access": "lan",
"api_key": "XXXXXXXXXXXXXXXXXXXXXXX",
"context": 131072,
"created": "2026-10-23 13:54:09.666900",
"data_dir": null,
"extra": {
"STRATA_PIN_BY_NEED": "on"
},
"family": "qwen",
"gpu_roles": null,
"gpus": null,
"kv": null,
"last_used": "2026-10-23 15:28:25.785562",
"model": "IQ3_XXS",
"model_path": null,
"mtp": null,
"name": "IQ3_XXS 128K",
"no_key": true,
"parallel": null,
"port": 8080,
"schema": "strata.launch/1",
"tune": "quick",
"tune_allow_small": false,
"tuned_at": "2026-10-23",
"tuned_preset": "4082656e867d420899b7348cd4987f74",
"vision": "cpu"
}

As for what each of these settings changes, here’s a table covering the fields that are actually present.

KeyYour valueMeaning
schemastrata.launch/1Version identifier for the preset format — the SCHEMA constant itself
nameIQ3_XXS 128KPreset name. The filename iq3_xxs-128k.json is a slugified form of this name (lowercased, symbols replaced with -)
familyqwenThe catalog “family” (qwen / swift / coder / unsloth / gyro / nvfp4 …). qwen is the original Qwen3.8-Flash-Next quantization
modelIQ3_XXSThe catalog size (quantization strength). The recommended tier for the 48GB generation
model_pathnullThe “use your own .gguf / folder” path is not used
data_dirnullModel storage location is Strata’s default folder
gpusnullGPU selection is left to the engine (uses all available cards)
gpu_rolesnullPer-card roles (main / helper / off) follow the recommendation. Only meaningful with multiple cards
context131072128K tokens. parse_context normalizes 128k / 131072 alike to the same value. Default options range from 8K to 512K
kvnullK/V cache quantization. Follows the same default as setup: “use int8 above 8K” (choices: int8 / q4_0 / k8v4 / fp16)
visioncpuRun the image reader on CPU. Choices: off / on / gpu / cpu
parallelnullNumber of simultaneous requests. Default is “match the card” (VRAM 12GB→1, 20→2, 24→3, 32GB+→4). Valid range 1–8
mtpnullDraft layer kept “as installed” (on)
tunequickAuto-tuning method. quick (~20 min) / thorough (up to 2 hours) / skip
tune_allow_smallfalseCheckbox for “accept that answers may change slightly.” Default off. Only when true does --allow-small-differences get added to the launch command
accesslanExposure scope: local / lan / cloudflare / tailscale. lan means “my own local network”
port8080Server port (default value). OpenAI-compatible endpoint is http://<IP>:8080/v1
api_key(configured)Secret key. “Never shown in full; stored only in the private preset file”
no_keytrueThe --no-api-key flag for “intentionally exposing without a key to other machines.” Produces a warning, not a refusal
extra{“STRATA_PIN_BY_NEED”: “on”}Advanced settings — a bag for engine-side flags / STRATA_* environment variables set via --set key=value
tuned_preset(omitted)ID of the tuning preset saved by the tuner (also visible from the app via strata presets)
tuned_at2026-10-23Date tuning was performed. If either tuned_preset or tuned_at is present, it’s considered “already tuned” and won’t be re-measured going forward
created / last_used2026-10-23Creation time / last-used time (runtime info updated on every launch)

Table 3: Configuration fields and their details

Other launch-time arguments are covered in the appendix at the end of this article.

How Strata Works Internally

Running the strata command appears to kick off the surrounding processes in roughly the following flow.

Figure 4: The chain of components the strata command sets in motion Figure 4: The chain of components the strata command sets in motion

The strata command acts as a wrapper around ~/.local/share/strata/terminal/0.1.47/strata.py, which runs through a Python 3.12 build prepared specifically for Strata. strata.py then runs ~/.local/share/strata/terminal/0.1.47/setup.py, the launch command for the strata-terminal subcomponent.

As it happens, this same setup.py was originally the strata-engine launch command back in the v0.1.x series. The strata command introduced in v0.2.x is, in essence, a version with expanded management commands layered on top.

From there, setup.py launches a subcomponent called strata-engine, tailored to the environment, which runs as the actual engine itself. Tracing how the command changes at each step makes it easy to see exactly what configuration it ends up launching with.

Example: the input command

strata launch
--preset IQ3_XXS 128K
--no-tui

What gets launched first

/home/user/.local/share/strata/terminal/0.1.47/python/bin/python3.12 /home/user/.local/share/strata/terminal/0.1.47/strata.py launch
--preset IQ3_XXS 128K
--no-tui

What gets launched next

/home/user/.local/share/strata/terminal/0.1.47/python/bin/python3.12 /home/user/.local/share/strata/terminal/0.1.47/setup.py
--yes
--no-start
--family qwen
--model IQ3_XXS
--context 262144
--vision cpu
--experimental-speed-projection off
--data-dir /home/user/Strata-data

What gets launched last

/home/user/.local/share/strata/components/engine/0.1.47-linux-x86_64-cuda-cuda13/strata
--serve
--pack /home/user/Strata-data/packs/iq3_xxs
--native /home/user/Strata-data/models/IQ3_XXS/Qwen3.8-Flash-Next-GSQ-RCO-IQ3_XXS-00001-of-00002.gguf
--ple-gguf /home/user/Strata-data/models/IQ3_XXS/Qwen3.8-Flash-Next-GSQ-RCO-IQ3_XXS-00002-of-00002.gguf
--expert-profile /home/user/.local/share/strata/terminal/0.1.47/data/expert-profile.bin
--expert-cache auto --prefill auto
--spec 4
--spec-min-p 0.5
--mtp /home/user/Strata-data/mtp/rt
--max-context 262144
--kv int8
--vision

The Structure of the Strata-data Directory

You probably noticed on screen that a Strata-data directory gets created during installation. What’s actually stored in there? Here’s what it looks like.

It holds everything related to the model — the model itself, the tokenizer, and so on. A profile gets created based on the model name chosen at install time, and everything is stored according to that profile.

Figure 5: Layout of the Strata-data directory Figure 5: Layout of the Strata-data directory

Strata doesn’t simply reconstitute the model straight from the GGUF file — the data actually goes through the process shown below before it’s stored.

Data categoryHow it’s readNotes
Dense layer dataConverted into a proprietary format and placed on disk beforehand, then read by the engineStored as data such as dense.bin
Expert layer dataRead directly from GGUF; in principle all Experts are first loaded into main memory, then moved to VRAM based on a separately-determined Expert placement planSince it’s read from GGUF, no separate file is placed
N-gram Embedding dataRead from GGUF on demand, as neededSince it’s read from GGUF, no separate file is placed

Table 4: How data is read in, depending on category

Strata’s Web Frontend

llama.cpp comes with a web frontend, where hitting the URL directly shows a chat screen — and Strata has something similar built in too.

Strata's web frontend chat screen Figure 6: Strata’s web frontend

What really stands out is the monitoring screen, which you get to by clicking “Monitor” in the upper left of the screen.

The menu-switching area of Strata's web frontend Figure 7: The menu-switching area

This screen shows real-time status, and the “Model State” view in particular lets you see exactly what the model currently loaded on Strata is doing at any given moment.

You can even track whether the GPU or the CPU is doing the processing, down to hybrid states between the two.

Top half of Strata's monitoring screen showing real-time statuses Figure 8: The top half of the monitoring screen shows a range of real-time statuses

The bottom half of the monitor screen is laid out to show how much of the context is in use and how many Experts are resident in VRAM. On the right side, you’ll find a record of the inference work carried out so far.

Bottom half of Strata's monitor screen showing context usage and recent requests Figure 9: The bottom half of the monitor screen

Note that if you have the API enabled, these features require you to properly set an API key.

Strata web frontend showing "API key needed" in the upper right (Screen 1)

Looking at the upper right of the screen, you’ll see it says “API key needed.”

In that case, scroll down a bit on the About screen, where you’ll find a field for entering the API key — set it there.

Strata web frontend About screen with the API key entry field (Screen 2)

Once the display in the upper right changes to idle, authentication succeeded.

What’s It Actually Like to Use?

How Much Resource Does It Consume?

Comparing resource consumption across each tier gave the following results.

TierUsageImpression
GPU VRAM15,639 MiBNearly full
Main memory (Shard 1)41.0 GiBAbout as expected
SSD (Shard 2)81.0 GiBAbout as expected

Table 5: Summary of resource consumption. Because a 3-bit quantization was used, the footprint stayed relatively small.

That left roughly 23,000 MiB of free memory and about 17 GiB of free storage, so running any additional tools on top of this might be a bit of a stretch. That said, if you’re running this as a dedicated appliance, I don’t think that constraint matters all that much.

For example, I think a setup like the one below would work well for using this inference environment across a workgroup or within an organization.

Figure 10: A configuration envisioned for enterprise use Figure 10: A configuration envisioned for enterprise use

How Good Is the Performance?

Here are the actual results from interacting with the model through a Dify Agent.

TimePromptReusedOutputPrefill t/sDecode t/sVRAM hit rateDuration
16:18:2250,58246,6506,76071968.384.10%104.4
16:17:4146,65538,3491,29066565.684.40%32.2
16:17:0438,35414,6949661,54869.783.30%29.1
16:16:4814,69913,66134348577.580.40%6.6
16:16:4013,66613,02424044375.179.20%4.7
16:16:3013,02912,85848322569.584.30%7.7
15:55:1527,25612,8586,0281,5297881.50%86.7
15:51:3884,78776,6917,0704217382.30%116.1
15:50:3976,69658,1142,1377526782.00%56.6
15:50:1558,11950,64763762169.579.90%21.2
15:49:5450,65244,92174489670.980.60%16.9
15:49:2044,92618,6465071,40969.880.20%25.9
15:49:0318,65112,9393011,26876.975.30%8.4
15:48:3212,94412,8581,80317869.387.50%26.5
15:47:4917,78912,93921090886.776.50%7.8
15:47:3112,94412,85869214566.183.40%11.1
15:38:2538,66138,4774,37524174.381.80%59.7
15:38:1138,48237,5956713426379.90%13.3
15:38:0137,60035,63320339168.181.10%8
15:37:3635,63825,12025654071.278.30%23.1
15:36:2925,125099455665.579.40%60.4
Average36,06028,0731,74868071.1981.21%34.59

Table 6: Performance measurements from running Qwen3.8-Flash-Next on Strata

Honestly, the prefill speed isn’t all that fast. Prefill performance heavily reflects the raw speed of the GPU processor itself, and here the NVIDIA RTX A4000’s relative weakness shows through. The KV cache also isn’t held entirely in VRAM — not even at the 128k I configured here, let alone the model’s maximum of 256k. Only a fixed amount is kept in VRAM, with whatever doesn’t fit spilling into pinned main memory by design, which may have introduced some overhead there. That said, Strata’s prompt cache absorbs most of that, so the perceived speed doesn’t come across as especially slow.

What’s really surprising is just how high the hit rate is on the VRAM Expert cache. This ties into both the Expert and KV caches, and it’s precisely because that hit rate is so high that actual throughput comes out as high as it does, I’d guess.

As for the output speed itself — when I evaluated Qwen3.8-Flash-Next on an A100 instance a while back, llama.cpp’s output speed came out to roughly 50–60 tok/s, so seeing numbers beat that here was genuinely surprising.

Conclusion: Remember, This Is a Specialized Inference Engine

That said, because this setup — built around Qwen3.8-Flash-Next — is a specialized inference engine, trying to use it for inference with other models runs into some real strain.

  • It only pays off when MoE and n-gram Embedding work together. This engine achieves its performance through a very finely structured, large-scale set of Experts, combined with shifting the n-gram Embedding — which would normally sit in main memory — onto the SSD via PLE. That means running something like a Dense model on it would be a real stretch. Move the Dense layer into main memory and output speed collapses into single-digit tok/s, dragged down by that throughput; move it into VRAM instead and you defeat the whole point.

    On top of that, Qwen3.8-Flash-Next is a model that uses N-gram Embedding to fill in the knowledge gap that would otherwise remain if it were built purely out of MoE. It’s not an exaggeration to say the whole scheme only works because that gets shifted onto the SSD via PLE. It might be implementable with a standard MoE architecture too, but MoE itself tends to lag behind Dense models on answer quality, so it hasn’t been widely adopted elsewhere — and applying Strata to other MoE models honestly feels like it would be more complexity than it’s worth.

  • It still leans heavily toward individual use. The design assumes a prompt cache is in play, so disabling it is likely to hurt prefill performance. It’s also still early in development and, if anything, feels reminiscent of older versions of llama.cpp. My honest impression is that it’s still got a fair number of rough edges before it’s ready for concentrated enterprise use.

    That said, settings to turn Prompt Cache off and to configure Parallel have since been added, tying in with some of llama.cpp’s own features to make it hold up better for enterprise use — and wasted processing is steadily being trimmed away, making it run noticeably faster.

This isn’t limited to what I’ve covered here — it’ll all depend on the details of whatever models come next — but if Strata ever manages to absorb models other than Qwen3.8-Flash-Next into main memory this cleanly, it would overturn a lot of assumptions we currently take for granted. In that sense, I’m looking forward to seeing where this goes.

Personally, I get the sense this product was built with exactly that kind of foresight in mind, and I’m excited to see what comes next.

Notes

  1. By the time this article is published, Qwen4.0 may already be out — but even accounting for that, Qwen3.8-Flash-Next remains a remarkably capable model. ↩︎
  2. Development is moving very fast, so the actual version may well be further ahead by the time you read this. Thanks for your understanding. ↩︎
  3. The advertised spec said 50GB, but the top command showed 64,044.5 MiB. My guess is the advertised figure was actually showing remaining memory. ↩︎

References

Appendix: strata launch Help (English reference)

Usage (as in the original)

usage: strata launch [-h] [--preset NAME] [--model NAME] [--family NAME]
[--model-path PATH] [--data-dir DIR] [--move-data]
[--context SIZE] [--kv FORMAT] [--vision off|on|gpu|cpu]
[--parallel N] [--mtp on|off] [--gpu LIST]
[--gpu-roles LIST] [--tune quick|thorough|skip] [--tune-allow-small]
[--set KEY=VALUE] [--pool-cores LIST]
[--access local|lan|cloudflare|tailscale] [--port N] [--api-key KEY]
[--api-key-env NAME] [--new-key] [--no-api-key]
[--save-preset NAME] [--retune] [--no-tui] [--open] [--yes] [--plan]
[--feed URL|DIR] [--output {human,json}][--list-presets]
[--delete-preset NAME] [--status] [--stop]
[--show-key]

Overview

Brings model setup, tuning, starting the serve, and monitoring together in one place.

Run it without any flags and a guided screen opens. You can choose to start from a saved preset or set up from scratch. Each screen asks you to decide just one thing.

Add flags and it does the same thing without asking questions, then opens the monitor. Add --no-tui and it prints the address and exits instead.

Presets are shared with the Strata app’s profiles and tuning presets.

Common

OptionArgumentMeaningSource label
-h, –helpnoneShow this usage and exitoptions

Table 7: Common options

What to Run

OptionArgumentMeaningDefault / notes
–preset NAMEnameStart from a saved preset. Combine with other flags to change just this runNo default
–model NAMEnameModel size. E.g. iq3_xxs, q2_0, ud-q4_k_xl. Case-insensitive—
–family NAMEnameSpecify the family when the same size is offered under multiple model families (qwen, swift, coder, etc.)—
–model-path PATHpathUse a model file you already have — a folder containing shards, or a single .gguf file—
–data-dir DIRdirectoryWhere to store downloaded model filesStrata’s data folder
–move-datanoneUsed together with –data-dir to move a model you already have into the new folder. Without this flag nothing is moved — existing models stay usable where they are, and the new folder becomes the destination for future downloadsNot moved
–context SIZEsizeAmount of text that can be remembered at once: 32k, 64k, 128k, 256k, or a token count—
–kv FORMATformatConversation memory (KV cache) format: int8, q4_0 (half the memory), k8v4, fp16Default int8
–vision off|on|gpu|cpu4 choicesLet the model read images. “on” picks the reader based on video memory (CPU reader under 24GB, GPU reader at 24GB+, regardless of vendor). gpu/cpu select explicitly; off disables image supportDefault: on, if the model can read images and the engine has an image reader
–parallel N1–8Number of requests served simultaneouslyDefault: value matched to the graphics card
–mtp on|offon/offDraft layer that speeds up responses. off starts without it, saving about 1GB of video memory and some RAM, but responses are slower. Useful when the engine fails to start on smaller cards or machines with less RAMDefault on
–gpu LISTnumbersWhich graphics cards to use, e.g. 0, 0,1Default: engine’s choice
–gpu-roles LISTrole listAssign a role to each card: main, helper, off. E.g. 1=main,0=helper. Unspecified cards are off. main runs the final step of each response; helper holds part of the model—
–tune quick|thorough|skip3 choicesSearch for the fastest settings firstDefault here: skip. The guided screen suggests quick on first run
–tune-allow-smallnoneLet the tuner also try settings that may change answers very slightlyDefault: not tried
–set KEY=VALUEKEY=VALUESet one advanced engine setting or STRATA_* variable, e.g. prefill=65536. Can be repeated. Unknown names only produce a warning, not a rejection—
–pool-cores LIST (experimental)listPin CPU workers to specific logical processors, e.g. 2,4,6,8 or 2-14:2 (numbers as shown by Task Manager or lscpu)Default: one worker per physical core (shown in the engine’s startup line). Two entries on the same core are kept, with a warning

Table 8: Arguments needed for basic configuration

Who Can Use It

OptionArgumentMeaningDefault / notes
–access local|lan|cloudflare|tailscale4 choiceslocal: this computer only. lan: your own network. cloudflare: a quick tunnel. tailscale: your own tailnet—
–port NnumberPort numberDefault 8080
–api-key KEYkeyKey clients must send. Auto-generated if shared outside this computer—
–api-key-env NAMEenv var nameRead the key from this environment variable—
–new-keynoneCreate a new API key—
–no-api-keynoneShare outside this computer without an API key. A warning is shown, but it isn’t refused—

Table 9: Access-related settings

Running / Saving

OptionArgumentMeaningDefault / notes
–save-preset NAMEnameSave this selection under this name—
–retunenoneCombine with –tune (uses quick if –tune isn’t given) to re-measure even on a computer that’s already been tunedDefault: reuse the saved tuning result and skip measurement
–no-tuinoneDon’t open the screen — serve, print the address, and exit—
–opennoneOpen the server’s web page in a browser when serving starts. Without this flag, no browser is openedDefault: don’t open
–yesnoneDon’t ask questions — e.g., whether to download a model on a computer without the engine installedDefault: ask
–plannoneShow what would happen and exit. Nothing is changed—
–feed URL|DIRURL
or directory
Location of the signed update feed (where the engine is downloaded from)Default: STRATA_UPDATE_FEED, or the project’s default (the original text cuts off its own explanation here)
–output {human,json}human / jsonOutput format. Not documented in the sourceNot documented in the source

Table 10: Options related to execution and saving settings

Manage

OptionArgumentMeaning
–list-presetsnoneList saved presets
–delete-preset NAMEnameDelete a saved preset
–statusnoneShow what this command is currently serving
–stopnoneStop what this command started. Combine with –preset NAME to stop just that one preset
–show-keynoneShow the API key for –preset NAME (or the currently running launch)

Table 11: Management options

Examples (commands kept as in the original)

Open the guided screen

(From the list of saved presets, or set up from scratch.)

strata launch

Start a saved preset and open the monitor.

strata launch --preset "IQ3_XXS 128K"

Specify everything on the command line, serve, and print the address.

strata launch --model iq3_xxs --context 128k --parallel 4 --vision off --tune quick \
--access lan --port 8080 --save-preset "Office" --no-tui

Use a model file you already have (a folder, or a single .gguf).

strata launch --model-path /data/models/IQ3_XXS --no-tui

Change just one advanced setting for this particular launch.

strata launch --preset Office --set prefill=65536 --set STRATA_PIN_BY_NEED=1 --no-tui

Change nothing — just show what would happen.

strata launch --plan --model q2_0

Manage presets and running state.

strata launch --list-presets | --delete-preset NAME | --status | --stop [--preset NAME]

List the apps Strata can connect to (the connect subcommand, not launch).

strata connect

Write OpenCode configuration for the running server (a backup is kept).

strata connect opencode --write

Appendix: List of Selectable Models

Table of models selectable in the installer and the resources they require Table 12: Models selectable in the installer and the resources they require

Share

About the author

AI watcher and researcher with a particular interest in local LLMs and model architecture. Shares technical insights from a perspective distinct from that of developers and researchers.

Supervised by

Hibiki Tamura

SEO Consultant / Content Director

Hibiki Tamura is an SEO consultant who plans and supervises content for B2B companies, from keyword research and article structure to editorial review and ongoing improvement after publication. Hibiki has led SEO content projects in technical fields such as GPU cloud and generative AI, as well as in construction and education. At Hypha, Hibiki reviews articles for search intent, structure, and the reliability of sources so that readers get clear, accurate answers.

Contents