Demo script: Velocity
This page is for creators who show Exponential Velocity, the application server that "boots once and keeps a pool of workers alive" (Velocity). Speed is the topic where videos most often say more than the sources do. This script shows how Velocity works and quotes only the documented figures, with their method. It runs about eight minutes, in a terminal and a browser.
Velocity arrived in the 6.0.15 line (./console exp:velocity), the current release line; the engine package has its own
version numbers (Exponential Velocity 0.0.4.x). Say both on camera.
Contents
Off camera: install and prepare
The engine is required by Exponential's composer.json, so composer install brings it; from its release 0.0.4.54 it
needs PHP 8.0 or later, and the sockets extension (Serving the site, 8.3.1):
composer install # brings the engine the kernel's composer.json requires
php bin/php/console exp:velocity ext check # missing PHP extensions, with the install command
php bin/php/console exp:velocity config set --apply ServerSettings Engine qbixRead the version from the require block of the kernel's composer.json: on 29 October 2026 it was ~0.0.4.57, as
the README and the installation book show. The tilde accepts every later 0.0.4.x.
The shipped default engine is php (PHP's built-in server, for development only); qbix is the recommended engine
and FrankenPHP the production-ready alternative. Shipped ports: qbix 8088 (HTTP) and 8080 (HTTPS), frankenphp 8089
and 8444, php 8087. Start it once off camera and set the control panel password from the command line, so the
password never appears on screen (Velocity control panel).
The script
| Time | On screen | Do | Say |
|---|---|---|---|
| 0:00 | Title card | Disclosure. "Exponential Velocity, the application server for Exponential, on my own test machine." | |
| 0:20 | Terminal | "Classic PHP hosting starts the application for every request and tears it down after. Velocity loads it once and keeps workers alive between requests." | |
| 1:00 | Terminal | ./console exp:velocity start | "One command starts the server and shows its status." |
| 1:30 | Terminal | ./console exp:velocity status | "It lists every address to open, the HTTPS address beside the plain one, and whether the caches get shared memory." |
| 2:15 | Browser | Open the site's HTTPS address | "HTTPS from the first start: a self-signed certificate is made for me; my own certificates are used when I name them." Accept the browser warning off camera if you can |
| 3:00 | Browser developer tools, Network | Reload the front page twice | "The first answer is rendered; the second has X-Cache: HIT: answered from the server's response cache." (Velocity response cache) |
| 4:00 | Browser | Open /Q/dashboard (signed in to the panel) | "The server's own dashboard: live requests, workers, memory, status codes, top paths, without a refresh." |
| 5:00 | Terminal | ./console exp:velocity graceful | "Workers reload one at a time; the port keeps answering." |
| 5:45 | Terminal | ./console exp:velocity cache clear --apply | "After a template or stylesheet change, this clears every cache." |
| 6:30 | Title card | Speed, as below. Then: "The commands and the method are linked below." |
./console is a shortcut you create with ln -s bin/php/console console; without it, type php bin/php/console.
Talking about speed
Say only what the README documents, and say how it was measured:
"The README documents 0.36 milliseconds of server work per cached page, measured as a median over hundreds of
requests, and 8,941 requests per second sustained on a 12-core machine serving a real page, with zero errors up to
384 connections. It says these are reproducible with scripts that ship with the project. Most of the speed came from
fixing Exponential and its caches, which helps wherever it runs."- To measure yourself:
./console exp:benchmark --allow-root-user, or two servers back to back with--compare=<first address>,<second address>(Benchmarking). - The guide warns: "One run on a busy machine proves little." A measurement during a recording on a laptop is a demonstration, not a result. Say that on camera if you show one.
- Never turn the figures into "N times faster than <another product>": no published comparison supports it (Comparisons done fairly explains why).
What never to show
| Never on screen | Why |
|---|---|
The control panel password, the documented default key, qbixctl panel:password output | It signs in to the server |
A dashboard address with ?token=... | The token opens the dashboard |
Certificate private keys, var/vc/ contents, /etc/vc/ or /etc/qbix/ files | Keys and configuration |
settings/override/ | Database credentials |
| Public IP addresses or host names of a real server | Use localhost on a demo machine |
Recovering on camera
| What happens | What to do |
|---|---|
The start refuses: no process isolation or no openssl | Run exp:velocity ext check off camera; it prints the install command |
| A change does not show | Workers keep the application in memory: exp:velocity restart, or deploy for a PHP change |
./console exp:vc says the command was not found | Use exp:velocity; the documentation records that the alias is not found on this tree |
| The dashboard answers 403 | Sign in to the panel first, off camera |
Related pages
- Velocity
- Talking points: speed and Velocity
- Benchmarking
- Demo script: install from zero
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.