Repository navigation
Pi-Bolt 0.9.5
Pi-Bolt 0.9.5 does less work per turn and per prompt, on every platform: up to 20% less CPU per prompt in a long session,
up to 9% less in an interactive session, and on Windows 9% fewer file operations. It also fixes compiled-in extensions that
lost their skills and prompts, plugins built from a checkout that used a second copy of Pi, and a miscompile in the -jit
builds. Pi is 1.3.0, with four fixes from Pi's next release. Everything else is 0.9.4.
Measured on GitHub's runners, 0.9.4 as released against 0.9.5, with the same local fake model (Linux pinned to one CPU):
| CPU | Linux x86-64 | Linux ARM64 | macOS | Windows |
|---|---|---|---|---|
| A headless prompt (5 model turns) | 46 → 45 ms | 61 → 59 ms | 60 → 55 ms | 117 → 117 ms |
| An interactive session (5 prompts) | 144 → 131 ms | 200 → 187 ms | 218 → 210 ms | 364 → 333 ms |
| A prompt at 20 prompts into a session | 29.8 → 26.0 ms | 38.3 → 35.5 ms | 45.1 → 38.4 ms | |
| A prompt at 40 prompts (9 MB requests) | 64.3 → 61.7 ms | 75.7 → 75.1 ms | 79.1 → 63.5 ms |
Startup, streaming and idle are unchanged. On Windows an interactive session makes 1,534 file operations instead of 1,689, and
in the ConPTY check the prompt is ready after 99.7 ms instead of 110.6 ms.
Performance
- Long sessions: every request sends the whole conversation again, and serializing it was the cost that grew with the
session. The serialized form of each long string (a tool result, an answer) is now kept from the request before and copied
as it is, so each one is escaped once. The bytes sent are the same. - Streaming events pass from the provider to the agent directly instead of through three streams that each read every
event again. - Start: the models are refreshed once instead of twice when an extension registers a provider,
models.jsonis read and
checked once instead of three times, andmodels-store.jsonis no longer rewritten when nothing in it changed. - Windows:
fdis no longer looked for asfdfind(Debian's name) in every PATH folder: a third of the PATH checks at
start.
Fixes
- Compiled-in extensions find the files beside their modules again: an extension that registers
skills/,prompts/or
themes fromimport.meta.urllost them whenpi-bolt compileput it into the executable
(#53). The script that prepares them also no longer exits without
output when it is run through a symbolic link. - Plugins built from a checkout (
scripts/build-pi.sh --plugins) use the coding agent the executable runs, not a second
copy of it, so a plugin that patches one of its classes takes effect
(#52, #51 by
@Shrub24). -jitbuilds: anArray#sortwith a comparator that does arithmetic on whole numbers, once compiled by the JIT, could
return them out of order (oven-sh/WebKit#792). The default builds were not affected; a new test guards them.- From Pi's next release: automatic retry also for
request to ... failederrors and more gateway errors, tool output
that is only whitespace is sent as empty (some providers answered 400), and summaries for compaction and branches are no
longer limited to a fixed number of output tokens.
Engine
All four runtimes are new, built by the runtime workflow on GitHub's runners (run 39165966034): 0.9.4's engine with
oven-sh/WebKit#792. From the engine trees that patches/webkit.patch and patches/bun.patch make on the pinned sources
(git rev-parse HEAD^{tree}): WebKit 896a83cc16b1723e89f11dfcbd923f54241671e5, Bun
397b79f57365fa286a7092dc31145e64890d9d8c.
| Runtime | Built on | bun.exe / bun SHA-256 |
|---|---|---|
| Linux x86-64 | GitHub's ubuntu-24.04 runner, glibc 2.17 sysroot |
18d383df649ccda99e580777a4b55c59616370bc45aee69553a695a018b513be |
| Linux ARM64 | GitHub's ubuntu-24.04-arm runner, glibc 2.17 sysroot |
43da546ce44501764f7d6513f49b7830b94efbedb6a40579fdc8affb176b7a31 |
| macOS arm64 | GitHub's macos-15 runner |
5be410e9e74e976a71da9dc08fa699ae51f6abb5313b905c1871de9150286c81 |
| Windows x64 | GitHub's windows-2025 runner |
e7922421c09545381673857d18c1ae1d6b93f6ba505078326b5e4de72cb32416 |
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.
| 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. |
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.