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.
cost queue time, not VRAM
| 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.
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.
One command, and what it does not touch
It pulls, builds, migrates, restarts and proves the service answers, then prints whether it worked.
cd /opt/cinderella && sudo bash deploy.sh
DEPLOY OK — cinderella live at rev <sha>
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 in the window is answered after it, not dropped