Pi-Bolt 1.0.7 is a performance release for long sessions and long answers: in a long session a request costs about a quarter
less with OpenAI's APIs (10-25% with Anthropic, under 10% with Google) and Pi keeps about a third less memory, and a long
answer no longer costs more per chunk the longer it gets. Starting is about 1-2% cheaper. Pi behaves as in 1.0.6. Everything else is 1.0.6.
Changed
- Requests in a long session (#202): a request no longer converts the
whole history again. Each message's converted form, and its bytes in the request, are reused while the message is unchanged
and in the same place; what depends on position, such as cache markers on the last messages, is still made for every
request. The request bodies are byte for byte the same. This applies to OpenAI (Chat Completions and Responses), Anthropic
and Google, while only Pi's own extensions are loaded; with any other extension Pi converts every request as 1.0.6 did,
since an extension could change a message it was given. The first request after opening a session costs about the same
as before. In pi-ai it is off unless the caller setsimmutableMessages. - Memory in a long session (#197): the messages of a transcript no
longer each keep what they need only while they stream, and the regular screen no longer keeps a second copy of every line. - Long answers (#199): the check for Mermaid diagrams no longer reads
the whole answer at each chunk, which copied it in memory each time. A chunk now costs the same at 300,000 characters as at
20,000. - Startup (#198,
#203): the text segmenters, the Markdown parsers and the keybinding
checker are made when first used, Bun's built-in modules share their embedded source text instead of copying it, and the
event loop's date is computed without loading the time zone data.
With the default settings Pi draws the same screens and sends the same requests as 1.0.6. The release archives,
1.0.6 / 1.0.7: Linux and Windows on GitHub's runners (Linux pinned to one CPU), the M5 in instructions:
| Linux x86-64 | Linux ARM64 | Apple M5 | Windows x64 | |
|---|---|---|---|---|
| Ready to type | 29 / 29 ms | 34 / 33 ms | 153.7 / 152.5 M | 77 / 77 ms |
pi -p, CPU
| 42 / 41 ms | 49 / 48 ms | 205.9 / 202.7 M | 72 / 70 ms |
pi --version, CPU
| 7 / 7 ms | 6 / 6 ms | 53.8 / 52.9 M | 12 / 12 ms |
-jit build, pi --version CPU
| 9 / 9 ms | 6 / 6 ms | 57.1 / 55.8 M | 15 / 15 ms |
| 60,000-character answer | 1.75 / 1.51 s (-jit) | 2.24 / 2.11 s | 3,445 / 3,251 M | 2.12 / 1.96 s |
| 150,000-character answer | 3.46 / 2.53 s | 10,330 / 8,521 M | ||
| Memory after opening a 10,000-entry session | 510 / 331 MB | |||
| 10 turns in a 10,000-entry session, CPU | 2.11 / 1.38 s | |||
| A request at 10,000 entries, CPU (OpenAI / Anthropic) | 33 / 25 ms, 24 / 21 ms | |||
| Idle, CPU per second | 0.029 / 0.019 ms | 0.040 / 0.036 ms |
The 60,000-character row on Linux x86-64 is the -jit build's: the default build's times varied as much between two copies
of 1.0.6 as between the releases on that runner. On Windows a 60,000-character answer also peaks 20 MB lower (103 / 82 MB).
Pi is 1.4.0. The runtimes are new: Bun's patch adds #203.
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-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-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-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; 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.