Repository navigation
chore(release): Pi-Bolt 0.9.1 #39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
0a45fb7
feat(engine): Linux executables with RELRO and immediate binding
opensec-intelligence c56ea74
docs(readme): the community AUR package
opensec-intelligence 793588e
chore(release): Pi-Bolt 0.9.1: compile, rollback, built-in search, do…
opensec-intelligence 2659d79
Merge remote-tracking branch 'origin/pi-bolt' into release-0.9.1
opensec-intelligence 8a363fc
Merge remote-tracking branch 'origin/pi-bolt' into release-0.9.1
opensec-intelligence File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| 0.9.0 | ||
| 0.9.1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,111 @@ | ||
| Pi-Bolt 0.9.1 adds `pi-bolt compile`, `pi-bolt update --rollback` and a beta channel, built-in `grep` and `find`, `pi-bolt | ||
| doctor`, Pi as an MCP server (`pi-bolt --mcp`), more of the Agent Client Protocol for editors, Pi's package list shared with Pi, | ||
| and Linux executables linked with RELRO. Everything else is [0.9.0](0.9.0.md). | ||
|
|
||
| ### `pi-bolt compile` | ||
|
|
||
| Compiles the extensions installed on this machine into the installed Pi-Bolt, on Linux and macOS, with no checkout or tools: a | ||
| new release asset per platform, `pi-bolt-kit-<platform>.tar.gz` (about 7 MB), holds what the release build read, and is checked | ||
| against the signed `SHA256SUMS` like the runtime. `pi-bolt update` compiles the same extensions into each new release. A | ||
| compiled-in extension loads in under a millisecond instead of 10-90 ms; one changed since loads from its files, with a warning. | ||
|
|
||
| ### Updates | ||
|
|
||
| - `pi-bolt update --rollback` puts back the build the last update replaced, without downloading anything; again goes forward. | ||
| - `pi-bolt update --channel beta` also takes pre-releases (`--channel stable` goes back). Signatures are checked as before. | ||
|
|
||
| ### `grep` and `find` built in | ||
|
|
||
| Pi-Bolt's `grep` and `find` tools search in-process, with the same parameters and output and nothing to install or start: no | ||
| ripgrep or fd. They follow ripgrep's and fd's rules as Pi runs them (`.gitignore`, `.ignore`, global excludes, hidden and binary | ||
| files, `--glob`). With `opensec-pi-fff` or `@ff-labs/pi-fff` loaded, its search tools are used instead. | ||
|
|
||
| ### `pi-bolt doctor` | ||
|
|
||
| - **A report to paste into an issue.** It covers: | ||
| - the build: version, Pi version, platform, JIT on or off, the runtime it was built with, and whether its compiled code is used; | ||
| - how and where Pi-Bolt is installed, and every `pi-bolt` on `PATH`; | ||
| - whether the release's signature verifies, and the latest version; | ||
| - extensions: compiled in, run at run time, or failing to load, and which use `bun:ffi`; | ||
| - how Pi's `packages` and Pi-Bolt's `piBolt.packages` differ; | ||
| - the Herdr and editor (ACP) setup, and the problems it finds, such as another `pi-bolt` earlier on `PATH`. | ||
|
|
||
| It prints no keys or tokens, and shows the home folder as `~`. `--offline` leaves out the signature and version checks. | ||
| - **Extensions that need the JIT say so.** On the default build, "bun:ffi requires the JIT" now names the extension and gives the | ||
| command that installs the JIT build, for the installer or npm: | ||
| `pi-foo needs Pi-Bolt's JIT build (bun:ffi); switch with: curl -fsSL https://pi-bolt.opensec.in/install.sh | PIBOLT_VARIANT=arm64-jit sh`. | ||
| The extension is named when it fails to load, when one of its handlers fails, and in a notice it shows itself. | ||
|
|
||
| ### Pi as an MCP server | ||
|
|
||
| `pi-bolt --mcp` serves Pi to other agents and MCP clients (Claude Code, Codex, Cursor, ...) over stdio: | ||
|
|
||
| - `prompt` runs a prompt in a Pi session (with `cwd`, `sessionId`, `model`, `thinking`) and returns Pi's answer and the session's | ||
| id; a later call continues the session, in the same process or a later one. `list_sessions` lists them. | ||
| - Progress while Pi works: each tool, the first line of each message, a running command's latest line, and a heartbeat. | ||
| - Cancelling stops the turn. Up to eight sessions stay open; prompts to one session run in order, different sessions at once. | ||
| - Extension dialogs reach the client as elicitation forms when it offers them. | ||
|
|
||
| [docs/MCP.md](https://github.com/opensec-git/Pi-Bolt/blob/pi-bolt/docs/MCP.md) has the setup for each client. | ||
|
|
||
| ### Editors (ACP) | ||
|
|
||
| - **Modes:** Default and Read-only (the model gets only `read`, `grep`, `find` and `ls`), as modes and as a config option. | ||
| - **Sessions:** delete and fork; compactions shown live and in a loaded session's history. | ||
| - **Commands** that need no terminal: `/model`, `/thinking`, `/session`, `/export`, `/reload`, besides `/compact` and `/name`. | ||
|
|
||
| ### Packages shared with Pi | ||
|
|
||
| Pi-Bolt uses Pi's `packages` list: `pi-bolt install` and `pi-bolt remove` change it, as `pi install` does, and Pi and Pi-Bolt load | ||
| the same extensions. `--pi-bolt` changes `piBolt.packages` instead, which adds to Pi's list, replaces an entry of it, or leaves | ||
| one out (`-<source>`) for Pi-Bolt only. A copied list from an earlier Pi-Bolt is turned into that once, so what Pi-Bolt loaded | ||
| stays the same. (Thanks to @boonlai, #30.) | ||
|
|
||
| ### Linux | ||
|
|
||
| - **RELRO:** the Linux executables are linked with `-z relro -z now`, so the loader's tables are read-only once it is done. They | ||
| stay at a fixed address, which the prebuilt heap needs. | ||
| - **Arch Linux:** the community package `pi-bolt-avx2-bin-release-git` in the AUR, in the README. | ||
|
|
||
| ### npm on Windows | ||
|
|
||
| The Windows builds are published to npm as `@kushalkhemka/pi-bolt-win32-x64` and `-jit`, where `npm install -g pi-bolt` on Windows | ||
| now gets them; it used to fall back to GitHub. | ||
|
|
||
| ### Engine | ||
|
|
||
| All four runtimes are new, built by the `runtime` workflow on GitHub's runners: the Linux link flags above, and the runtime's | ||
| stamp next to it, which `pi-bolt doctor` reports. | ||
|
|
||
| ### Install | ||
|
|
||
| ```bash | ||
| curl -fsSL https://pi-bolt.opensec.in/install.sh | sh | ||
| ``` | ||
|
|
||
| ```powershell | ||
| irm https://pi-bolt.opensec.in/install.ps1 | iex | ||
| ``` | ||
|
|
||
| ```bat | ||
| powershell -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. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.