vault / earendil-pi / v1.1.0
earendil-pi @ v1.1.0
integrity
- size
- 8.4 MiB
- downloaded
- last checked
source https://github.com/earendil-works/pi · temporary_down
release notes
New Features
- Program status reporting: terminals and agent dashboards that support OSC 7501 see whether Pi is working, blocked on a dialog or login, done, or failed. See Program status.
- Claude Haiku 5.5:
anthropic/claude-haiku-5-5, with adaptive thinking up toxhigh/maxeffort. - Adjust default tools with
+name/-name:--toolsentries likepi -t +codemode,-writechange the default selection instead of replacing it. See Tools. - GPT-6 Luna and image classification: OpenAI's GPT-6 Luna is available as a classifier model through the Decisions API, and codemode's
models.classify()accepts images for classifiers that support them. See Use classifier models. - Native llama.cpp decision models: Julia-1, Laya, Kev, lev, and OpenJev served by llama.cpp 0.6.0 or later run natively as classifiers through
/v1/systemone. See Classification.
Added
- Added
+nameand-nameentries to--tools, which change the default tool selection instead of replacing it, for examplepi -t +codemode - Added
durationMsto the tool render context and totool_execution_endextension events: the recorded execution time of a final tool result (#10549) - Added
outputPadto the tool render context (#10557 by @rwachtler) - Added OpenAI's GPT-6 Luna as a classifier model through the Decisions API, available with
OPENAI_API_KEY(see Use classifier models) - Added
imagesto codemode'smodels.classify()context, so classifiers that accept images, such as GPT-6 Luna, can judge them - Added program status reporting with OSC 7501: terminals and agent dashboards that support it see whether Pi is working, blocked on a dialog or login, done, or failed.
PI_PROGRAM_STATUS=1|0overrides detection (see Terminal setup) (#10607) - Added
abortedtoagent_settledsession, extension, and JSON events, so integrations can tell a cancelled run from a finished one (#10607) - Added Claude Haiku 5.5 (
anthropic/claude-haiku-5-5), with adaptive thinking up toxhigh/maxeffort and prompt caching on Bedrock - Added native llama.cpp decision models: Julia-1, Laya, Kev, lev, and OpenJev served by llama.cpp 0.6.0 or later are listed only as classifiers through
/v1/systemoneinstead of as chat models (see Classification) (#10382)
Changed
- Changed
outputPadto also apply to!command output, tool output, and summary blocks (#9946, #10557 by @rwachtler) - Changed
pi mcp login --timeoutto limit the whole sign-in, including requests to the authorization server, instead of only the wait for the browser (#10565)
Fixed
- Fixed bash and PowerShell results losing
Tookafter reloading a session, and the liveTookincluding wall-clock steps; both now show the recorded execution time (#10549) - Fixed managed installs keeping every old release;
pi updatenow keeps only the new release and the one it updated from (#10392, #10511 by @davidbrai) - Fixed standalone binaries loading
.env,.env.local, and.env.developmentfrom the launch directory into Pi's environment (#10473) - Fixed
!!command headers losing their dim color once output arrives (#10557 by @rwachtler) - Fixed the codemode description not marking
searchTools(),describeTool(), anddescribeNamespace()as async, which led models to serialize the unawaited promise as{}(#10555) - Fixed codemode output items running together, so models could not tell where one
text()orconsole.log()output ended and the next began. With several text items, each now starts with a==> text N/M <==line, andconsolecalls follow the other output in one<console_output>block with one line per call - Fixed
/mcpwaiting for all servers to connect before opening; the manager now updates live and remains usable while enabling, reconnecting, or disabling servers (#10562) - Fixed images being dropped as "could not be resized" when running under
node --watchon Node 24.19+ and 26.x, where Node posts its own messages on the image resize worker channel (#10527) - Fixed clipboard paste doing nothing in Termux, and failed copies there omitting the Termux:API install hint (#10391)
- Fixed
!and RPCbashoutput keeping fragments of color codes, such as a straym, when a code was split across output chunks (#10504) - Fixed MCP OAuth sign-ins that could not be cancelled while waiting on the authorization server and kept running after the session ended. The sign-in screen now cancels with Esc at every step, session shutdown aborts a running sign-in, and each request to the authorization server times out after 15 seconds (#10565)
- Fixed shutdown waiting up to 15 seconds to refresh an MCP OAuth token that was about to expire, only to close the server's session (#10565)
- Fixed the fullscreen text selection surviving session switches and other transcript rebuilds, which highlighted unrelated text in the new transcript (#9311, #10567 by @christianklotz)
- Fixed OpenAI models on Bedrock ignoring the thinking level and always running at Bedrock's default reasoning effort (#9331, #10142 by @jsanter27)
- Fixed model
headersinmodels.jsonnot overriding theoriginatorandUser-Agentheaders of Codex requests (#10429 by @lucasmeijer) - Fixed
server_busyandservers are currently busyprovider errors ending the turn instead of being retried (#10543) - Fixed Mistral responses that end with
finish_reason: "error"not being retried (#10487) - Reduced context-limit request failures by estimating input at 3.5 characters per token instead of 4 when calculating output limits (#10497)
- Fixed Radius models disabled by an organization owner still being listed
- Fixed Anthropic browser login failing with "localhost refused to connect" when port 53692 is reserved or in use, for example by Hyper-V/WSL port exclusions on Windows: login now falls back to a free loopback port (#10571)
- Fixed session costs undercounting long prompts on models with prompt-length pricing tiers, such as Claude Haiku 5.5, Gemini 3.1 Pro, and GPT-5.4, through OpenCode, OpenCode Go, OpenRouter, Vercel AI Gateway, Google, MiniMax, and other providers
- Fixed Markdown links not being clickable in Herdr (#10573)
download
unix · zip
curl -fL -o v1.1.0.zip https://ratatoskr.space/pkg/earendil-pi/v1.1.0.zip
printf '%s %s\n' '75ddd3fcb65d78c3899a181b08369f88c07e8a66fca8244708b914b0cae3fae9' 'v1.1.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/earendil-pi/v1.1.0.zip"
$out = "v1.1.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "75ddd3fcb65d78c3899a181b08369f88c07e8a66fca8244708b914b0cae3fae9") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.1.0.tar.gz https://ratatoskr.space/pkg/earendil-pi/v1.1.0.tar.gz
printf '%s %s\n' '4083a9a51559c51954e48cba461640a635ca1bd50b11b666fbd826fb98374eb4' 'v1.1.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/earendil-pi/v1.1.0.tar.gz"
$out = "v1.1.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "4083a9a51559c51954e48cba461640a635ca1bd50b11b666fbd826fb98374eb4") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1.1.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.zip
printf '%s %s\n' '75ddd3fcb65d78c3899a181b08369f88c07e8a66fca8244708b914b0cae3fae9' 'v1.1.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.zip"
$out = "v1.1.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "75ddd3fcb65d78c3899a181b08369f88c07e8a66fca8244708b914b0cae3fae9") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.1.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.tar.gz
printf '%s %s\n' '4083a9a51559c51954e48cba461640a635ca1bd50b11b666fbd826fb98374eb4' 'v1.1.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.tar.gz"
$out = "v1.1.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "4083a9a51559c51954e48cba461640a635ca1bd50b11b666fbd826fb98374eb4") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1.1.0.zip | zip | 8.5 MiB |
blake3-24 32f2d38cb2b072bc5602a493f67121dc739a8096f8da5b3f
sha256 75ddd3fcb65d78c3899a181b08369f88c07e8a66fca8244708b914b0cae3fae9
sha1 03328ae5180da11427739b9c67342357b727fa24
|
| v1.1.0.tar.gz | tar.gz | 7.4 MiB |
blake3-24 a3671bc544efe480fceb0091e8fa8112a00324a5a2c318d2
sha256 4083a9a51559c51954e48cba461640a635ca1bd50b11b666fbd826fb98374eb4
sha1 91a524002e131d6f0770cd75bf45bbb363ebb971
|
install
bazel
http_archive(
name = "earendil-pi",
urls = ["https://ratatoskr.space/pkg/earendil-pi/v1.1.0.tar.gz"],
integrity = "sha256-QIOppRVZxRlU5Iy6RhZApjXKG9ULEbZm+9gm+5g3TrQ=",
strip_prefix = "earendil-pi-v1.1.0",
)
zig
.url = "https://ratatoskr.space/pkg/earendil-pi/v1.1.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "earendil-pi",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.tar.gz"],
integrity = "sha256-QIOppRVZxRlU5Iy6RhZApjXKG9ULEbZm+9gm+5g3TrQ=",
strip_prefix = "earendil-pi-v1.1.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.1.0.tar.gz",