pi-bolt
v1.0.8
Published
Pi, the coding agent, compiled ahead of time to native code: one executable for Linux x86-64 and ARM64 (Android too, in Termux), macOS on Apple silicon and Windows x64, starts 2-3x sooner than Pi on Bun and uses about a third of its CPU over a session
Maintainers
Readme
pi-bolt
Pi, the coding agent, compiled ahead of time to native code. Pi-Bolt is one executable, for Linux on x86-64, macOS on Apple silicon and Windows on x64, that starts two to three times sooner than Pi on Bun and uses about a third of its CPU over a session, with no JIT. (Measured on one Linux server, one Mac and one Windows laptop; the times on your machine will differ, the ratios less so.)
Install
npm install -g --allow-scripts=pi-bolt pi-boltWith other package managers:
bun add -g --trust pi-bolt
pnpm add -g pi-bolt
yarn global add pi-boltOn Windows the package's install script puts the executable in place, so the package manager has to run it. npm does (npm
11 warns that it is not in allowScripts; npm install -g --allow-scripts=pi-bolt pi-bolt allows it by name), while pnpm
and Bun run install scripts only for the packages you allow to. If it did not run (pi-bolt then fails to start: "not
compatible with the version of Windows" or "not a valid application"), run it yourself, from the package's folder
(npm root -g says where npm's global packages are):
node "$(npm root -g)\pi-bolt\install.cjs"Without a package manager:
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"Usage
Start Pi-Bolt in the directory where you want it to work:
cd /path/to/project
pi-boltPi-Bolt is Pi. It uses your Pi configuration in ~/.pi/agent, so your providers, settings, sessions and extensions are
already there. If you are new to Pi, run /login inside it to connect a provider, then give it a task. Everything in
Pi's documentation applies:
pi-bolt -p "summarize this repository" # one prompt, print the answer
pi-bolt --helpHow the package works
This package does not contain the executable, and has no dependencies. Its pi-bolt command is bin/pi-bolt.exe, a
placeholder that the package's install script (install.cjs, plain Node.js) replaces.
On Linux and macOS the install script puts a small shell script there:
- On the first run, it downloads the Pi-Bolt build that matches the package version, from the npm registry or, failing
that, from the GitHub release. It checks the download against the
release's SHA-256 checksums and their signature (checked with OpenSSL 3 where there is one), then keeps it in
~/.pi-bolt/npm/<version>and removes the versions installed before it. - On every run, it replaces itself with that native executable (
exec). No Node.js or Bun process stays in between, and startup is the same as running the executable directly.
Where the package manager does not run install scripts (Bun, pnpm, --ignore-scripts), the placeholder starts the same
shell script, so nothing changes there.
On Windows the install script installs the native executable while the package is installed: the Windows build that
matches the package version, from the npm registry or, failing that, from the GitHub release. Before anything is unpacked it
checks the release's checksums against their Ed25519 signature (by the key in the repository's keys/release.pub), that they
are the checksums of this version, and the download against them; if any of that fails, nothing is installed. It then puts
pi-bolt.exe and the files it needs in the package's bin folder, where npm's pi-bolt command starts it directly, with no
Node.js process in between.
Extensions
Pi extensions and Pi packages work as they do in Pi. Install them with Pi-Bolt itself, which needs neither npm nor Bun to do it:
pi-bolt install npm:<package>OpenSec maintains three for Pi-Bolt, prebuilt for Bun so that they load without being transpiled (open source):
| Package | What it does |
|---|---|
| opensec-pi-subagents | Specialized agents in separate sessions that inherit the parent's model and thinking level |
| opensec-pi-todo | A todo list for the model, shown as a live panel above the editor |
| opensec-pi-fff | pi-fff's fast fuzzy find, grep and @-mentions, at full speed without the JIT |
Configuration
| Variable | Default | Effect |
|---|---|---|
| PIBOLT_HOME | ~/.pi-bolt | Where downloaded executables are kept (Linux and macOS; on Windows they are in the package) |
| PIBOLT_VARIANT | the standard build for your CPU | x64-baseline for an x86-64 CPU without AVX2 (picked automatically). Advanced: x64-jit or arm64-jit also JIT-compile plugins loaded at run time. On Windows it is read when the package is installed |
Update and uninstall
npm update -g pi-bolt # Linux and macOS: the next run downloads the new version; Windows: while it updates
npm uninstall -g pi-bolt
rm -rf ~/.pi-bolt/npm # Linux and macOS: downloaded executablesOn Windows the executable is in the package's folder, and is removed with it.
Requirements
- Linux on x86-64, glibc 2.17 or later: Ubuntu 20.04+, Debian 11+, Rocky Linux 8+, CentOS 7, Amazon Linux 2 and others. Alpine and other musl-based systems are not supported.
- Or macOS 13 or later on Apple silicon (M1 or later).
curlorwget,tarandsha256sum(or, on macOS,shasum) for the first run.- Or Windows 10 version 1809 or later, or Windows 11, on x64 (Windows on ARM runs it under its x64 emulation), and Node.js 18 or later for the install script.
Links
- Source, documentation and benchmarks: github.com/opensec-git/Pi-Bolt
- Compiling Pi extensions into the executable: docs/PLUGINS.md
- Problems: troubleshooting and issues
Pi-Bolt is a fork of Pi by an independent team, not affiliated with Pi's authors.
License
MIT
