Local AI Server Guide

Run WaxFrame hive sessions against AI models on your own machine — no cloud API keys, no per-token cost, your data never leaves your network. This guide covers choosing a model server, assessing your hardware, installing and configuring Ollama, Open WebUI, and LM Studio on Windows, and the results of real-world model testing on consumer hardware.

Your Server Options

Three server applications can serve local AI models to WaxFrame. Pick the one that fits your situation — or use more than one.

Ollama + Open WebUI — the power setup

Ollama is a lightweight model server that runs on your machine and serves AI models over a local API. Open WebUI is a free, self-hosted web interface that sits in front of Ollama via Docker, handles cross-origin requests, and gives you a full model management UI.

Use this when: you want fine-grained control over model configuration (custom Modelfiles, context-size tuning, environment variables), need the Docker container to handle CORS for waxframe.com access, or want to run headless on a server. This is the setup used for all the model testing documented below.

LM Studio — the quick-start alternative

LM Studio(opens in a new tab) is a standalone desktop application that downloads, manages, and serves local AI models — similar to the Ollama + Open WebUI combination but packaged as a single install with a GUI. No Docker, no terminal commands. It has its own built-in model browser, a chat interface, and an OpenAI-compatible API server you can point WaxFrame at.

Use this when: you want the simplest possible path to a working local hive. Good for getting started quickly or for users who prefer a GUI.

You can use both at the same time

LM Studio and Ollama use different default ports (LM Studio: 1234, Ollama: 11434). They can coexist on the same machine and serve different models. WaxFrame's Import from Model Server has Quick Add presets for both.

↑ Back to top

Assessing Your Hardware

Check your GPU capabilities before choosing models — VRAM determines what you can run and how many models fit simultaneously.

Check your GPU and memory

Local AI models run on your graphics card (GPU), not your CPU. The critical resource is VRAM — the memory available to your GPU. The more you have, the larger and smarter the models you can run, and the more models you can load simultaneously for a WaxFrame hive session.

Windows (NVIDIA GPU):

  1. Task Manager: Press Ctrl+Shift+Esc → Performance tab → GPU. Look for Dedicated GPU memory — that is your VRAM.
  2. PowerShell:
    nvidia-smi
    This shows your GPU name, total VRAM, and current usage.

Mac (Apple Silicon):

  1. About This Mac: Apple menu → About This Mac. Look for Memory — on Apple Silicon, this is your total unified memory (shared between CPU and GPU).
  2. Terminal:
    sysctl hw.memsize
    This shows total system memory in bytes. Divide by 1,073,741,824 to get GB.

Either platform (Ollama installed):

ollama ps

This shows which models are currently loaded, how much memory each uses, and whether they are running on GPU or CPU.

Apple Silicon — unified memory is different

NVIDIA GPUs have their own dedicated VRAM, separate from system RAM. Apple Silicon (M1, M2, M3, M4) uses unified memory — the CPU and GPU share the same pool of RAM. There is no separate "VRAM" number.

This is actually an advantage for local AI: models do not need to be copied from system RAM into GPU memory. They load once and both the CPU and GPU can access them directly. The tradeoff is that your AI models, your operating system, your browser, and everything else are all drawing from the same pool.

Rule of thumb: reserve at least 8 GB for macOS and your apps. Whatever is left is your effective model budget. On a 16 GB Mac, that means ~8 GB for models. On a 24 GB Mac, ~16 GB. On a 36 GB or higher machine, you have serious headroom.

VRAM budgeting — the key concept

Think of VRAM like seats on a bus. Each AI model you load takes up a certain number of seats. Once the bus is full, the next model either waits for a seat to open up or spills onto your system RAM (CPU), which is dramatically slower — sometimes 10-50x slower.

The number you see on a model's download page (e.g. "1.9 GB") is the file size on disk, not the VRAM it uses when loaded. A model's actual VRAM footprint depends on two things:

  • The model's parameter count — a 3B (3 billion parameter) model uses less VRAM than a 7B model, which uses less than a 14B model.
  • The context window — how much text the model can "see" at once, measured in tokens. A larger context window means the model allocates more memory for its working space (called the KV cache). Ollama defaults to 2048 tokens but WaxFrame sessions often need 8K-32K to hold the full document plus worker feedback.

The practical effect: a model that shows as 1.9 GB on disk might use 3.4 GB of VRAM when loaded with a 32K context window, or 6.0 GB with a larger parameter count at the same context size.

How many models can you run simultaneously?

WaxFrame's hive needs multiple AIs running at the same time — at minimum two (one worker and one Builder), ideally three or more. Each loaded model occupies memory until it is unloaded. Here is a rough guide:

NVIDIA GPUs (Windows/Linux):

VRAMExample GPUsWhat fits
8 GBRTX 4060, RTX 3070One 3B model at a time. Not enough for a multi-model hive — models will swap in and out of VRAM between turns, adding 10-30 seconds of cold-load time per response.
12 GBRTX 4070, RTX 3060 12GBTwo 3B models simultaneously, or one 7B model alone. Tight but workable for a 2-model hive with small models.
16 GBRTX 4080 SUPER, RTX 5070 TiTwo to three 3B models simultaneously, or one 7B + one 3B. The sweet spot for consumer hardware — enough for a functional hive, though model quality is the limiting factor (see Model Testing Results below).
24 GBRTX 4090, RTX 5080Three 7B models, or two 7B + one 3B, or one 14B + one 3B. Enough headroom for models that can genuinely handle WaxFrame's Builder protocol.
48+ GBRTX A6000, dual-GPU setupsMultiple 14B-70B models. Enterprise/work-server territory — models at this size start approaching cloud-AI quality for document refinement.

Apple Silicon Macs (unified memory):

Total RAMExample MacsEffective model budgetWhat fits
8 GBMacBook Air M1/M2 (base)~4 GB after macOSOne 3B model — barely. Expect swapping. Not practical for a hive.
16 GBMacBook Air/Pro M2/M3/M4~8 GB for modelsOne or two 3B models. Comparable to an 8 GB NVIDIA GPU. Workable for a minimal 2-model hive.
24 GBMacBook Pro M3/M4 Pro~16 GB for modelsTwo to three 3B models, or one 7B + one 3B. Comparable to a 16 GB NVIDIA card — the consumer sweet spot.
36-48 GBMacBook Pro M3/M4 Max~28-40 GB for modelsMultiple 7B models or one 14B+ model with room to spare. This is where Apple Silicon starts to shine — unified memory means zero copy overhead.
64+ GBMac Studio M4 Ultra, Mac Pro~56+ GB for modelsMultiple 14B-70B models. Genuine alternative to a multi-GPU workstation for local AI work.

OLLAMA_MAX_LOADED_MODELS — controlling simultaneous models

By default, Ollama loads one model at a time and unloads the previous one. For a WaxFrame hive you need multiple models loaded simultaneously. Set this environment variable to tell Ollama how many to keep in memory:

Windows (PowerShell):

[Environment]::SetEnvironmentVariable("OLLAMA_MAX_LOADED_MODELS", "3", "User")

Verify with:

[Environment]::GetEnvironmentVariable("OLLAMA_MAX_LOADED_MODELS", "User")

Mac/Linux (Terminal):

launchctl setenv OLLAMA_MAX_LOADED_MODELS 3

To make it persist across reboots on Mac, add this line to your ~/.zshrc (or ~/.bashrc on Linux):

export OLLAMA_MAX_LOADED_MODELS=3

After setting the variable on either platform, restart Ollama (quit from the system tray / menu bar and reopen it).

Set this to however many models you want loaded at once. For 16 GB of available model memory, 3 is a reasonable starting point with 3B-class models. If you set it higher than your memory can handle, Ollama will spill models to swap and performance will drop dramatically.

↑ Back to top

Ollama + Open WebUI — Before You Start

Confirm your prerequisites before installing Open WebUI.

Confirm Ollama is working

Open PowerShell and check that Ollama is installed and has models available:

ollama --version

Then list your installed models:

ollama list

You should see the models you already installed. Test the API:

Invoke-RestMethod http://localhost:11434/api/tags

If that returns model information, Ollama is good.

Check whether Docker Desktop is installed

Run:

docker --version

If you get something like Docker version 28.x.x, skip ahead to Install and Start Open WebUI.

If PowerShell says docker isn't recognized, install Docker Desktop next.

↑ Back to top

Install Docker Desktop

Docker is required for Open WebUI. Skip this if Docker is already installed.

Install Docker Desktop

Using Winget:

winget install -e --id Docker.DockerDesktop

After installation:

  1. Launch Docker Desktop.
  2. Let it finish starting.
  3. Accept the WSL2 backend if prompted.
  4. Wait until Docker Desktop says the engine is running.

Then open a fresh PowerShell window and run:

docker version

You should see both a Client and Server section.

↑ Back to top

Install and Start Open WebUI

Pull the Docker image and get Open WebUI running.

Install Open WebUI

Run this as one PowerShell command:

docker run -d `
  -p 3000:8080 `
  --add-host=host.docker.internal:host-gateway `
  -v open-webui:/app/backend/data `
  -e CORS_ALLOW_ORIGIN=https://waxframe.com `
  --name open-webui `
  --restart always `
  ghcr.io/open-webui/open-webui:main

The CORS_ALLOW_ORIGIN line is what lets waxframe.com talk to your local Open WebUI. Without it, your browser blocks the cross-origin request.

The first launch will download the Open WebUI Docker image, so you'll see some image layers being pulled.

Verify the container started

Run:

docker ps

You should see something similar to:

CONTAINER ID   IMAGE                               PORTS
xxxxxxxxxxxx   ghcr.io/open-webui/open-webui:main  0.0.0.0:3000->8080/tcp

Open Open WebUI

In your browser, open:

http://localhost:3000

You should get the Open WebUI setup screen.

Create your Open WebUI account

The first account you create becomes the administrator for that Open WebUI installation.

This account exists locally inside Open WebUI. You are not signing up for some external Open WebUI cloud account.

Your data is stored in the Docker volume open-webui. That is why removing/recreating the container won't normally wipe your chats or settings.

↑ Back to top

Connect Ollama to Open WebUI

Verify that Open WebUI can see your Ollama models.

Check whether Open WebUI sees Ollama

Once logged in, look at the model selector near the top. Your existing Ollama models should appear.

Open WebUI talks to Ollama through:

http://host.docker.internal:11434

Docker's host.docker.internal hostname represents your Windows host from inside the container. This is the important part because localhost inside the Open WebUI container refers to the container itself, not Windows.

If your Ollama models do NOT appear

Go into: Admin Panel → Settings → Connections

Find Ollama. Set the Ollama URL to:

http://host.docker.internal:11434

Save it, then refresh Open WebUI.

Do not use http://localhost:11434 from inside the Docker container — localhost inside Docker points to the container, not your Windows machine.

Start chatting

Pick one of your Ollama models from the model dropdown and enter a normal prompt.

Ollama does the model inference; Open WebUI is the interface, conversation manager, knowledge/document system, tool layer, and provider manager sitting in front of it.

↑ Back to top

Architecture & Bundled Ollama

How the pieces fit together — and why you should NOT use the bundled Ollama image.

Keep your existing Ollama install

Open WebUI also provides an image containing both Open WebUI and Ollama. Do not use it if you already have Ollama installed on Windows.

You already have Windows Ollama configured, downloaded models, GPU support working, and you've been tuning its context size and models. Running another Ollama inside Docker would give you two separate Ollama instances with separate model stores and potentially separate GPU configuration. That's pointless duplication.

Your architecture should simply be:

waxframe.com (your browser)
  |
  v
http://localhost:3000
  |
  v
Open WebUI (Docker container)
  |
  v
host.docker.internal:11434
  |
  v
Ollama for Windows
  |
  v
Your GPU

Everything runs on your machine. WaxFrame sends requests to localhost, Open WebUI forwards them to Ollama, Ollama runs inference on your GPU. No data leaves your network.

↑ Back to top

Connect WaxFrame to Open WebUI

Generate an API key and import your local models into WaxFrame.

Get your Open WebUI API key

Open WebUI requires authentication for API access. You need to generate a persistent API key from your Open WebUI instance.

  1. Go to http://localhost:3000 in your browser and make sure you're logged in.
  2. Open the browser console: press F12, then click the Console tab.
  3. Paste this command and press Enter:
    fetch('/api/v1/auths/api_key', {method:'POST', headers:{'Authorization':'Bearer '+localStorage.getItem('token'),'Content-Type':'application/json'}}).then(r=>r.json()).then(d=>console.log(d))
  4. The console will print your API key — a long string starting with sk-. Copy it. If you see an object with an api_key field, copy the value of that field.

This key does not expire. You only need to do this once.

Import your Open WebUI models into WaxFrame

Go back to waxframe.com. On the Worker Bees screen, switch to Server Based AI mode if you haven't already — the Import from Model Server modal will open automatically.

  1. Under Quick Add, select Open WebUI. This pre-fills both endpoint fields:
    • Chat Endpoint: http://localhost:3000/api/chat/completions
    • Models Endpoint: http://localhost:3000/api/models
    If your Open WebUI runs on a different port or address, adjust both URLs to match.
  2. Paste the API key into the API Key field.
  3. Click Fetch Models.

WaxFrame will pull the full model list from your local Open WebUI (which includes every model Ollama has). Select the ones you want and click Add to Hive.

This works because the CORS_ALLOW_ORIGIN flag you set during installation tells Open WebUI to accept requests from waxframe.com, and modern browsers treat localhost as a secure context — so the http://localhost request from an https:// page goes through without being blocked.

Verify the connection

After adding models, you should see them in your Worker Bees grid. Click Test All Keys — each imported model should show a green connectivity pill.

If a model shows red, check:

  1. Docker Desktop is running and the open-webui container is started (docker ps).
  2. Ollama is running — open a terminal and run ollama list.
  3. You entered the right addresshttp://localhost:3000 (not https, not 8080).
  4. CORS is configured — if you see a CORS error in your browser console (F12 → Console), your container may not have the CORS_ALLOW_ORIGIN flag. Recreate it using the install command above.
  5. API key rejected (401) — regenerate using the console command above. Make sure you copy the key without any surrounding quotes.

Once your models are green, you're running hive sessions from waxframe.com against your local AI stack — no cloud API keys, no per-token costs, your data never leaves your machine.

↑ Back to top

Day-to-Day Management

Starting, stopping, updating, and monitoring your Open WebUI container.

Starting Open WebUI later

You normally don't have to manually start it. We used --restart always, so Docker will restart the Open WebUI container automatically.

If needed:

docker start open-webui

To stop it:

docker stop open-webui

To restart it:

docker restart open-webui

To check its status:

docker ps -a

View Open WebUI logs

If something breaks:

docker logs open-webui

Or watch them live:

docker logs -f open-webui

Press Ctrl+C to stop watching.

Update Open WebUI later

Open WebUI's documented Docker update procedure: remove the old container, pull the current image, and recreate it while retaining the persistent volume.

docker rm -f open-webui

Then:

docker pull ghcr.io/open-webui/open-webui:main

Then recreate it with the same flags as your original install:

docker run -d `
  -p 3000:8080 `
  --add-host=host.docker.internal:host-gateway `
  -v open-webui:/app/backend/data `
  -e CORS_ALLOW_ORIGIN=https://waxframe.com `
  --name open-webui `
  --restart always `
  ghcr.io/open-webui/open-webui:main

Your persistent Open WebUI data remains in the open-webui volume because that Docker volume wasn't deleted.

↑ Back to top

Setting Up LM Studio

A Docker-free alternative — download, install, and connect to WaxFrame in minutes.

Connecting LM Studio to WaxFrame

  1. Download and install LM Studio(opens in a new tab) and download a model from the built-in browser.
  2. Load the model and click the Local Server tab (or the server icon in the sidebar).
  3. Start the server — by default it runs on http://localhost:1234.
  4. In WaxFrame, go to Setup → Import from Model Server. Use the LM Studio (local) Quick Add preset, which fills in:
    • Chat Endpoint: http://localhost:1234/v1/chat/completions
    • Models Endpoint: http://localhost:1234/v1/models
  5. Leave the API Key blank (LM Studio's local server does not require one by default).
  6. Click Fetch Models → select → Add to Hive.
↑ Back to top

Model Configuration & Warm-Starting

Tune context windows, pre-load models before a hive session, and swap models in and out of VRAM.

Custom Modelfiles — tuning context size

Ollama's default context window (2048 tokens) is too small for most WaxFrame sessions. You can create a custom model variant with a larger context window using a Modelfile.

Create a text file (e.g. Modelfile.mymodel) with this content:

FROM qwen2.5:3b
PARAMETER num_ctx 16384

Then build it:

ollama create my-qwen25-16k -f Modelfile.mymodel

This creates a new model variant called my-qwen25-16k that uses qwen2.5:3b as its base but with a 16K context window. The variant is a thin wrapper — it does not re-download the model weights.

Context size vs. VRAM tradeoff: A larger context window means the model can see more of your document and the worker feedback at once, which is important for Builder quality. But it also uses more VRAM. 16384 (16K) is a good balance for consumer GPUs. Going to 32768 (32K) uses noticeably more VRAM — check with ollama ps after loading to see the actual impact.

Warm-starting models before a hive session

When Ollama loads a model from disk into VRAM, there is a one-time delay (5-30 seconds depending on model size and your disk speed). During a hive session, WaxFrame sends requests to each AI in sequence — if a model is not already loaded, the first request triggers a cold load and the user waits.

To avoid this, warm-start your models before launching a hive session. Open PowerShell and send a trivial prompt to each model:

ollama run cogito:3b "hi"
ollama run qwen2.5:3b "hi"
ollama run smollm3-slim "hi"

Each command loads the model into VRAM (if not already loaded), generates a short response, and returns. After running all three, verify they are loaded:

ollama ps

You should see all your models listed with their VRAM usage and 100% GPU (meaning none of the model has spilled to CPU). If any model shows a CPU/GPU split (e.g. 7%/93%), it does not fully fit in your remaining VRAM.

Swapping models

To replace a loaded model with a different one, just run the new model — Ollama will unload the least-recently-used model if VRAM is full:

ollama run qwen2.5:7b "hi"

Then update WaxFrame: go to Setup → Import from Model Server → Fetch Models and add the new model to your hive. Remove the old one from your Worker Bees list if you no longer want it.

To check what is currently loaded at any time:

ollama ps
↑ Back to top

Model Testing Results

Three days of real-world testing on an RTX 4080 SUPER — every model, every combination, what worked and what didn't.

What we tested and why it matters

We spent three days testing every viable open-source model combination on an NVIDIA RTX 4080 SUPER (16 GB VRAM) to find out which models can actually handle WaxFrame's hive protocol — specifically, the Builder role. The Builder has strict requirements: it must wrap the updated document in %%DOCUMENT_START%% / %%DOCUMENT_END%% delimiters, it must include a %%CONFLICTS_START%% section (or report NO CONFLICTS), it must not echo back prompt metadata or instructions, and it must synthesize worker feedback into a coherent revision rather than just concatenating suggestions.

Cloud AIs (ChatGPT, Claude, Gemini) handle all of this easily — they have enough intelligence and instruction-following ability to understand the protocol and produce clean output. Local models at the 3B-7B parameter range struggle significantly. The table below shows every model and combination we tested, what went right, and what went wrong.

Every model tested — full results

Test document: a chocolate chip cookie recipe (~400 words). All tests run on an RTX 4080 SUPER (16 GB VRAM), Windows 11, Ollama, with OLLAMA_MAX_LOADED_MODELS=3.

ModelRole testedVRAM (loaded)SpeedBuilder qualityKey issue
qwen3:4b Worker + Builder ~10 GB (w/ 32K ctx) 52-144s Best tested — only model to achieve convergence and report real conflicts Hidden "thinking" burns 4,000-14,000 invisible tokens per response, making it extremely slow and expensive on token budget
qwen2.5:7b Worker + Builder 4.7 GB 1.1-6.3s 5/10 — protocol compliant (correct delimiters) but rubber-stamps everything No critical evaluation: applied every worker suggestion including bad ones (e.g. adding water to cookies, dropping butter measurement). Fast but no synthesis ability.
qwen2.5:3b Worker + Builder 3.4 GB 0.8-12.6s 1/10 — metadata echo, word explosion As Builder: exploded to 868 words in Round 2, mixed raw edit instructions ("Line 28: Replace...") into the document body. As worker: inserted [INSERT DATE] placeholders.
qwen2.5:14b Builder (solo test) 15 GB (7% CPU / 93% GPU) Not tested in hive N/A — too large Fills nearly all 16 GB VRAM by itself. No room for a second model. Dead end for 2-model setup on 16 GB hardware.
cogito:3b Worker + Builder 6.0 GB 1.4-11s 2/10 — echoes entire prompt structure into document As Builder: output included "WAXFRAME — RECIPE", "Round 1 · Phase 1 · Draft", "SEND TO ALL AIs" from the prompt. As worker: sometimes fast (1.4s), sometimes hallucinated (suggested adding water to cookies).
cogito-3b-slim Worker + Builder 4.1 GB 1.6-12.3s 2/10 — same issues as cogito:3b Dropped the %%DOCUMENT_START%% delimiter entirely on first Builder attempt. Echoed metadata on second attempt. Slim variant saves VRAM but does not fix the underlying model limitations.
SmolLM3 (Q4_K_M) Worker + Builder 4.6 GB 7.1-12.7s 6/10 — cleanest 3B-class Builder, no metadata echo A "thinking" model — includes a hidden chain-of-thought that scales with prompt complexity. In later rounds, thinking overhead grew to 55:1 ratio (1,483 tokens for 27 words of visible output). As worker: slow (23-58s).
llama3.2:3b Builder ~2 GB 7.2-39.7s 3/10 — included %%CONFLICTS_START%% but concatenated instead of synthesizing Word count explosion: 771 → 2,739 words over rounds. Document degraded badly. Concatenated worker suggestions verbatim rather than synthesizing them.
qwen3.5:4b Worker + Builder ~2.5 GB 92-125s Failed — ALL CAPS output, metadata echo Hidden thinking burned 8,310-13,043 completion tokens. Output was ALL CAPS with prompt metadata echoed into the document.
gemma3:4b Previously eliminated Tested before the documented session; eliminated for poor instruction following.
phi4-mini Previously eliminated Tested before the documented session; eliminated for poor Builder output.
granite Previously eliminated Tested before the documented session; eliminated early.

Best working combinations found

Out of every combination tested, two configurations loaded and ran successfully on 16 GB VRAM with 100% GPU (no CPU spill) and sub-15-second response times:

ComboModelsTotal VRAMSpeedNotes
2-model cogito:3b (worker) + qwen2.5:7b (Builder) 10.7 GB 1-6 seconds per response Fastest combo. Protocol compliant — correct delimiters, correct structure. But the Builder rubber-stamps all worker suggestions without critical evaluation. No convergence achieved.
3-model cogito:3b (worker) + qwen2.5:3b (worker) + SmolLM3 (Builder) 14.0 GB 7-13 seconds per response All three at 100% GPU, zero CPU spill. SmolLM3 was the cleanest Builder of any 3B model — no metadata echo, correct delimiters. But thinking overhead grew over rounds and no convergence achieved.

Both combinations functioned correctly — WaxFrame ran hive sessions against them, rounds completed, documents were updated. The limiting factor was not speed or protocol compliance but model intelligence: 3B-7B models do not have enough reasoning capacity to synthesize worker feedback critically, evaluate conflicting suggestions, or achieve convergence (workers saying "no changes needed").

↑ Back to top

Understanding Local Model Limitations

Why local 3B-7B models can't match cloud AI quality — and when each option makes sense.

Why local models behave differently from cloud AIs

Cloud AIs like ChatGPT, Claude, and Gemini have hundreds of billions of parameters and run on datacenter-grade hardware with hundreds of gigabytes of VRAM. The models you can run on a consumer GPU are 10-100x smaller. That size difference is not just about speed — it directly affects intelligence:

  • Instruction following: Cloud AIs reliably follow complex multi-step instructions (like WaxFrame's Builder protocol). Small local models frequently ignore parts of the prompt, echo metadata, or produce structurally incorrect output.
  • Synthesis ability: The Builder role requires reading multiple worker critiques, evaluating which suggestions are good and which are bad, and producing a single coherent revision. At 3B-7B parameters, models tend to either rubber-stamp everything (accepting all suggestions including bad ones) or ignore the feedback entirely.
  • Convergence: In a cloud-AI hive, workers eventually say "no changes needed" because the document has been refined to a point where the AIs agree it is good. Local models at 3B-7B do not demonstrate this behavior — they keep suggesting changes indefinitely, often contradicting themselves across rounds.
  • Critical evaluation: A good Builder rejects bad worker suggestions. In our testing, qwen2.5:7b accepted a worker's suggestion to add water to a cookie recipe and dropped the butter measurement — a cloud-AI Builder would have caught both errors.

"Thinking" models — hidden token costs

Some models (qwen3, qwen3.5, SmolLM3) include a hidden chain-of-thought step before generating their visible response. The model "thinks" internally — you do not see this text, but it consumes tokens and time. In our testing:

  • qwen3:4b burned 4,000-14,000 invisible tokens per response. It was the only model to achieve convergence and report real conflicts, but each response took 52-144 seconds — too slow for practical use.
  • SmolLM3 thought more cheaply than qwen3, but the overhead scaled with prompt complexity. By Round 11, it produced 1,483 tokens for just 27 words of visible output (a 55:1 ratio).
  • qwen2.5 (the generation before qwen3) has zero thinking overhead. Its responses are fast but it lacks the reasoning depth that thinking provides.

If you see a model responding slowly despite showing 100% GPU, check whether it is a thinking model. You cannot disable the thinking in most cases — it is baked into the model architecture.

The bottom line — when local AI hives make sense

Local models work for the mechanics — WaxFrame connects, rounds execute, documents update, responses come back fast. On a 16 GB GPU, you can run 2-3 models simultaneously with sub-15-second response times and zero API cost.

Local models struggle with the intelligence — at 3B-7B parameters, no model we tested could match what a cloud AI does as Builder. No convergence, no meaningful conflict detection, no critical evaluation of worker suggestions. The hive runs but the output quality does not match what you get from a ChatGPT/Claude/Gemini hive.

Where local hives shine today:

  • Air-gapped environments where cloud access is not an option (defense, healthcare, classified networks). A larger GPU or a proper AI server with 48+ GB VRAM running 14B-70B models will produce substantially better results.
  • Learning and experimentation — understanding how WaxFrame works, testing setup flows, building familiarity before committing API spend.
  • Style and tone refinement on short documents where the content is opinion-driven rather than factually anchored — the intelligence gap matters less when there is no "right answer" to converge on.

Where cloud hives are still the right choice: anything where convergence, critical evaluation, or document quality matters. Cloud AI costs pennies per round — a full 10-round hive session with five cloud AIs typically costs $0.10-$0.50 depending on document length and provider.

As local model quality improves (and it is improving fast), this gap will narrow. The infrastructure you set up today — Ollama, your model server, your WaxFrame configuration — will run better models tomorrow without changing anything.

↑ Back to top

WaxFrame

About

Version
LicenseAGPL-3.0 — open source, free to use and modify with attribution. Read license(opens in a new tab)
AuthorR David Paine III — weirdave.com(opens in a new tab)
TestingCandy
StackVanilla HTML, CSS, JavaScript — no framework or install required; no account or document database.

Built with ❤️ by WeirDave and Claude.

WaxFrame Pro

Enter your license key to continue.

Don't have a key? Buy WaxFrame Pro(opens in a new tab)

Manage License

Your WaxFrame Pro license is active.

••••••••-••••••••-••••••••-••••••••