What it costs

The smallest machine that works

Measured on one card, with the measurement beside the number, because a figure from one box is not a constant.

With a GPU, and without

For deterministic replies, no GPU at all. For AI, the sizing is measured rather than estimated, on one card, and the measurement is beside the number.

A 12 GB card runs the shipped model at the small window and a 16 GB card runs it at the served one, with headroom. The larger model needs the whole 24 GB card and leaves under a gigabyte free.

What a second bot costs 1 lines · 25 characters
cost queue time, not VRAM
Source site material Block 5 section 1 · what an operator needs, gathered 2026-08-30 in a read-only session
Value Figure How to reproduce Gathered
24,576 tokens in the served context window SERVED_CONTEXT_TOKENS, src/interaction/reasoning.ts:147 (D-231, measured) · host OLLAMA_CONTEXT_LENGTH 2026-08-30 · main @ 5044c83
13.19 GB VRAM for qwen3:14b at the served window, zero CPU spill CONTEXT_MEASUREMENTS, src/interaction/reasoning.ts:106-126 · measured on the 24 GB card (D-231) 2026-08-30 · main @ 5044c83

System RAM per bot is not measured, and is not stated here as if it were. What is recorded is that bots share one loaded model.

Day to day

Everything is off until you turn it on

Twice, in the case of the model. That is the posture the whole product is arranged around.

AI is opt-in twice: the environment flag ships false, and the console setting has to be turned on as well. Without it the bot answers deterministically rather than failing, which is why a missing model shows up as a quieter bot rather than an error.

Every plugin is a switch, and the switch is per bot. Capture ships on; search, music and the rest ship off. Nothing reaches a model that is off for that bot, and nothing reaches the public web until a member asks for it.

The update

One command, and what it does not touch

It pulls, builds, migrates, restarts and proves the service answers, then prints whether it worked.

The update, in one line 1 lines · 41 characters
cd /opt/cinderella && sudo bash deploy.sh
Source site material Block 5 section 2 · the runbook condensed, the first things after it, and the update
What it prints when it worked 1 lines · 40 characters
DEPLOY OK — cinderella live at rev <sha>
Source site material Block 5 section 2 · the runbook condensed, the first things after it, and the update

Survives the restart

  • Everything in Postgres: archive, consent, settings, the rule registry and its history, audit, passkeys
  • Admin sessions, so the restart does not log the operator out
  • The durable job queue, which picks its work back up
  • The SimpleX core own state on disk, which is the bot identity, so back it up
  • All media trees, including cached music encodes

Resets

  • The in-memory diagnostics buffers
  • The room index, rebuilt at boot
  • Caches, reloaded from the database
  • About a 10 second window in which the bot receives and archives but does not reply until the core settles
A question asked during the restart 1 lines · 64 characters
a question asked in the window is answered after it, not dropped
Source site material Block 5 section 2 · the runbook condensed, the first things after it, and the update