smolbox agent

VM model folder
console — the same VM the model is using

Not a second sandbox: these commands go down the same session, so they queue behind whatever the agent is running, and a cd here moves the working directory its next command inherits. :get <path> downloads a file out of the VM.

settings

system prompt

The system turn, rendered into every prompt. It counts against the prompt budget below, so a long one costs context on every single turn.

sampling

These follow the selected checkpoint until you change one; a knob you set keeps its value across model switches and is marked. Greedy (sample off) makes a run reproducible, and is wrong for some checkpoints — Gemma 4 at temperature 0 answers the first turn and then emits nothing but <eos>.

loop

How far the agent may go on one message, and how much of the prompt it may spend. max new tokens and prompt budget also follow the selected checkpoint until you change them.

tools

Each tool you expose is prompt text the model re-reads every turn — run_terminal_command alone is ~2.3 KB — so narrow tools are off by default. Whether they help a small model is an open question.

cached weights

Weights are kept in IndexedDB, in chunks, because a checkpoint is far too large for either the HTTP cache or Cache Storage to hold. Clearing this means the next load downloads everything again.

A local model on WebGPU drives a Linux VM through one run_terminal_command tool. The folder you pick is mounted read-only at /mnt/host; the guest has busybox, coreutils, rg, tree and python3. Weights load from dist/models after make model, else from the Hugging Face CDN. The VM-only page is one level up.