Pi-Bolt 1.2.0 is 1.1.7 with faster starts, quicker turns, cheaper streaming of long lists, tables and code
blocks, a resumed long session that shows its end at once, cheaper Codex requests, and remote control off by default.
Pi is still 1.5.0. The engine is unchanged, so the runtimes are 1.1.7's.
Added
pi-bolt remote-control enable,disableandstatus, and a "Remote control" toggle in/settings. They set
remoteControl.enabledin your global settings; a project's settings cannot turn it on.pi-bolt service restartrestarts the background service if it runs, so that it runs the installed version. The
installers andpi-bolt updaterun it after an update. It never starts a service that does not run.bench/benchmark.py --home-extensions DIR[,DIR]adds Pi packages to the typical home of--home realistic, to
measure a start with extensions installed.
Changed
-
Remote control is off by default. While it is off,
/remote-controlis not listed and only says how to turn it
on, andpi-bolt service installandpi-bolt service pairrefuse. Turn it on withpi-bolt remote-control enable.- A paired phone: run
pi-bolt remote-control enableonce after updating. Paired phones stay paired. - The background service: after an update with the installer or
pi-bolt updateit does not serve. After an
update through npm, Homebrew, Scoop or mise, or on Windows from 1.1.7, the service of the earlier version runs until
you log out: runpi-bolt service restartonce. To use it again, runpi-bolt remote-control enable, then
pi-bolt service install; to remove it, runpi-bolt service uninstall.
- A paired phone: run
-
The
pibolt-mobile-uiskill is not part of Pi-Bolt. It is in
skills/pibolt-mobile-uiin this repository, with the steps to add it to your own
Pi. -
Faster starts. Instructions until Pi is ready to type, 1.1.7 / 1.2.0:
- a blank home: 161.6 / 143.1 M (-11%);
- a typical home (43 prompt templates, 8 skills, a model store,
AGENTS.mdfiles, a git project): 270.5 /
163.4 M (-40%); - the same home with
opensec-pi-subagentsandopensec-pi-todoinstalled: 501.3 / 390.0 M (-22%).
Prompt templates are read after the first frame, the model list is built once, the git watcher starts after the first
frame, settings and tool schemas are checked by generated code, and modules the start does not need (Markdown, colours,
hashing, version parsing) load when first used.pi -ptakes 9% fewer instructions in a blank home, 31% in a typical
home and 17% with the two extensions. -
Quicker turns. The end of a reply is drawn at once instead of on the next frame: five prompts in the interactive
benchmark take 83 ms instead of 120 ms. -
Cheaper streaming of long lists, tables and code blocks. A streaming reply lays out again only its last block. Per
frame, 1.1.7 / 1.2.0: a 300-item list 16.6 / 1.1 M instructions, a 150-row table 10.2 / 1.4 M; memory while a
long list streams 38 / 21 MB. -
Code blocks are highlighted again only where they grew, for TypeScript, JavaScript, Python, Bash, JSON, Rust, Go,
C, C++, Java, HTML, CSS, YAML, diff and SQL blocks of 256 characters or more; other languages and shorter blocks are
highlighted in full, as before. Per frame: a 150-line TypeScript block 28.7 / 2.3 M instructions, a 400-line one
74.6 / 2.5 M, a 150-line Python block 12.2 / 1.4 M. -
Resuming a long session (
pi -c, fullscreen) draws the end of the transcript first and the rest after it: the
first frame of a 2,292-entry session is on screen after 41 ms instead of 295 ms. -
Codex requests no longer serialize the whole conversation several times: a request after a prompt in a 9 MB
conversation takes 8.5 M instructions instead of 179 M (default transport), 112 M instead of 164 M over SSE. -
Known: resuming a 2,292-entry session in regular mode (not fullscreen) peaks at 90 MB instead of 83 MB. The cause is
not found yet.
Measured on macOS on Apple silicon (an M5), 1.1.7 / 1.2.0, medians of 11 runs (21 for the interactive session),
builds interleaved:
| Instructions | CPU | Peak memory | |
|---|---|---|---|
pi --version
| 55.5 / 55.5 M | 4.5 / 4.6 ms | 5.6 / 5.6 MB |
pi -p (5 model turns), blank home
| 206 / 188 M | 18.7 / 17.4 ms | 21.8 / 20.2 MB |
pi -p, typical home
| 296 / 205 M | 23.8 / 18.5 ms | 24.6 / 21.0 MB |
pi -p, typical home with the two extensions
| 586 / 487 M | 53.4 / 47.9 ms | 35.6 / 33.8 MB |
| Interactive, 5 prompts | 576 / 553 M | 80 / 77 ms | 28.7 / 27.0 MB |
| 60,000-character answer | 3,083 / 2,997 M | ||
| 40-prompt session, CPU per prompt at prompt 40 | 14.6 / 14.1 ms |
Peak memory is the physical footprint. The answer row streams at 1,200 characters a second (bench/long_answer.py).
Also since 1.1.7, outside the release archives:
- Android app: its on-device engine is 1.1.7, and an open package page keeps its engine when the phone is short of
memory.
Install
curl -fsSL https://pi-bolt.opensec.in/install.sh | shirm https://pi-bolt.opensec.in/install.ps1 | iexpowershell -c "irm https://pi-bolt.opensec.in/install.ps1 | iex"or pi-bolt update, or npm install -g --allow-scripts=pi-bolt pi-bolt, or bun add -g --trust pi-bolt, or:
- Homebrew (macOS on Apple silicon, Linux):
brew install opensec-git/tap/pi-bolt - Scoop (Windows):
scoop bucket add opensec-git https://github.com/opensec-git/scoop-bucket, thenscoop install opensec-git/pi-bolt - mise:
github:opensec-git/Pi-Boltwith the options in the installation guide
The installer checks the release signature with OpenSSL 3, ssh-keygen (OpenSSH 8.1 or later), or an installed Pi-Bolt.
Every archive also has a GitHub build attestation: gh attestation verify <file> -R opensec-git/Pi-Bolt.
| Asset | For |
|---|---|
pi-bolt-linux-x64.tar.xz / .tar.gz
| Recommended on Linux x86-64. CPUs with AVX2 (Intel Haswell 2013+, AMD Zen+). |
pi-bolt-linux-x64-baseline.tar.xz / .tar.gz
| Any x86-64 CPU with SSE4.2. |
pi-bolt-linux-x64-jit.tar.xz / .tar.gz
| JIT also on, for plugins loaded at run time. |
pi-bolt-linux-x64-musl.tar.xz / .tar.gz
| Alpine Linux and other musl systems on x86-64 (AVX2). Needs libstdc++.
|
pi-bolt-linux-x64-musl-baseline.tar.xz / .tar.gz
| musl on any x86-64 CPU with SSE4.2. |
pi-bolt-linux-x64-musl-jit.tar.xz / .tar.gz
| musl, JIT also on. |
pi-bolt-linux-arm64.tar.xz / .tar.gz
| Linux on ARM64, any 64-bit ARM CPU; Android in Termux, with the installer. |
pi-bolt-linux-arm64-jit.tar.xz / .tar.gz
| Linux on ARM64, JIT also on. |
pi-bolt-darwin-arm64.tar.xz / .tar.gz
| macOS. Macs with Apple silicon, macOS 13 or later. |
pi-bolt-darwin-arm64-jit.tar.xz / .tar.gz
| macOS, JIT also on. |
pi-bolt-win32-x64.zip
| Windows. Windows 10 (1809) or 11 on x64; compiled code on AVX2 CPUs, bytecode on others. |
pi-bolt-win32-x64-jit.zip
| Windows, JIT also on. |
pi-bolt-runtime-linux-x64.tar.gz, pi-bolt-runtime-linux-x64-musl.tar.gz, pi-bolt-runtime-linux-arm64.tar.gz, pi-bolt-runtime-darwin-arm64.tar.gz, pi-bolt-runtime-win32-x64.zip
| The Pi-Bolt Bun runtime, for compiling plugins in. |
pi-bolt-kit-linux-x64.tar.gz, pi-bolt-kit-linux-x64-musl.tar.gz, pi-bolt-kit-linux-arm64.tar.gz, pi-bolt-kit-darwin-arm64.tar.gz
| What pi-bolt compile builds with, besides the runtime.
|
install.sh, install.ps1
| The installers, listed in the signed SHA256SUMS: pi-bolt update runs them only after checking them.
|
Linux x86-64 or ARM64 with glibc 2.17 or later; Alpine and other musl Linux on x86-64; Android 7 or later on 64-bit ARM, in Termux; macOS 13 or later on Apple silicon;
Windows 10 1809 or later, or Windows 11, on x64.