Install this version:
emerge -a =dev-util/pi-1.0.4
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-util/pi-1.0.4
Or alternatively:
emerge --autounmask-write -a =dev-util/pi-1.0.4
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Generated from package-lock.json by scripts/npm-deps.py
NPM_PKGS="
@anthropic-ai/sandbox-runtime@0.0.26
@anthropic-ai/sdk@0.129.0
@anthropic-ai/sdk@0.52.0
@anthropic-ai/sdk@0.91.1
@aws-sdk/client-bedrock-runtime@3.1127.0
@aws-sdk/core@3.977.9
@aws-sdk/credential-provider-env@3.972.70
@aws-sdk/credential-provider-http@3.972.72
@aws-sdk/credential-provider-ini@3.973.15
@aws-sdk/credential-provider-login@3.972.77
@aws-sdk/credential-provider-node@3.972.82
@aws-sdk/credential-provider-process@3.972.70
@aws-sdk/credential-provider-sso@3.973.14
@aws-sdk/credential-provider-web-identity@3.972.76
@aws-sdk/eventstream-handler-node@3.972.34
@aws-sdk/middleware-eventstream@3.972.29
@aws-sdk/middleware-websocket@3.972.52
@aws-sdk/nested-clients@3.997.44
@aws-sdk/signature-v4-multi-region@3.996.46
@aws-sdk/token-providers@3.1116.0
@aws-sdk/token-providers@3.1127.0
@aws-sdk/types@3.974.5
@aws-sdk/xml-builder@3.972.40
@aws/lambda-invoke-store@0.3.0
@babel/runtime@7.29.2
@biomejs/biome@2.3.5
@biomejs/cli-linux-arm64@2.3.5|arm64
@biomejs/cli-linux-arm64-musl@2.3.5|arm64
@biomejs/cli-linux-x64@2.3.5|amd64
@biomejs/cli-linux-x64-musl@2.3.5|amd64
@cto.af/wtf8@0.0.5
@earendil-works/gondolin@0.12.0
@earendil-works/gondolin-krun-runner-linux-x64@0.12.0|amd64
@esbuild/linux-arm64@0.28.2|arm64
@esbuild/linux-x64@0.28.2|amd64
@google/genai@2.21.0
@jridgewell/sourcemap-codec@1.5.5
@napi-rs/wasm-runtime@1.1.5
@nodelib/fs.scandir@2.1.5
@nodelib/fs.stat@2.0.5
@nodelib/fs.walk@1.2.8
@oxc-project/types@0.133.0
@pondwader/socks5-server@1.0.10
@protobufjs/aspromise@1.1.2
@protobufjs/base64@1.1.2
@protobufjs/codegen@2.0.5
@protobufjs/eventemitter@1.1.1
@protobufjs/fetch@1.1.1
@protobufjs/float@1.0.2
@protobufjs/path@1.1.2
@protobufjs/pool@1.1.0
@protobufjs/utf8@1.1.1
@rolldown/binding-linux-arm64-gnu@1.0.3|arm64
@rolldown/binding-linux-arm64-musl@1.0.3|arm64
@rolldown/binding-linux-x64-gnu@1.0.3|amd64
@rolldown/binding-linux-x64-musl@1.0.3|amd64
@rolldown/pluginutils@1.0.1
@silvia-odwyer/photon-node@0.3.4
@smithy/core@3.33.3
@smithy/credential-provider-imds@4.5.2
@smithy/fetch-http-handler@5.8.0
@smithy/node-http-handler@4.12.1
@smithy/signature-v4@5.7.3
@smithy/types@4.18.0
@stablelib/base64@1.0.1
@standard-schema/spec@1.1.0
@tybys/wasm-util@0.10.2
@types/chai@5.2.3
@types/cross-spawn@6.0.6
@types/deep-eql@4.0.2
@types/estree@1.0.9
@types/hosted-git-info@3.0.5
@types/lodash@4.17.24
@types/lodash-es@4.17.12
@types/ms@2.1.0
@types/node@22.19.19
@types/proper-lockfile@4.1.4
@types/retry@0.12.0
@types/retry@0.12.5
@types/semver@7.7.1
@typescript/typescript-linux-arm64@7.0.2|arm64
@typescript/typescript-linux-x64@7.0.2|amd64
@vitest-evals/core@0.15.0
@vitest-evals/report-ui@0.15.0
@vitest/expect@4.1.11
@vitest/mocker@4.1.11
@vitest/pretty-format@4.1.11
@vitest/runner@4.1.11
@vitest/snapshot@4.1.11
@vitest/spy@4.1.11
@vitest/utils@4.1.11
@xterm/headless@5.5.0
agent-base@7.1.4
agent-base@9.0.0
ajv@8.20.0
argparse@2.0.1
asn1@0.2.6
assertion-error@2.0.1
autoevals@0.3.0
balanced-match@4.0.4
base64-js@1.5.1
bcrypt-pbkdf@1.0.2
bignumber.js@9.3.1
binary-search@1.3.6
bl@4.1.0
bowser@2.14.1
brace-expansion@5.0.12
braces@3.0.3
buffer@5.7.1
buffer-equal-constant-time@1.0.1
buildcheck@0.0.7
canvas@3.2.3
cbor2@2.3.0
chai@6.2.2
chalk@6.0.0
cheminfo-types@1.16.0
chownr@1.1.4
commander@12.1.0
compute-cosine-similarity@1.1.0
compute-dot@1.1.0
compute-l2norm@1.1.0
convert-source-map@2.0.0
cpu-features@0.0.10
cross-spawn@6.0.6
cross-spawn@7.0.6
data-uri-to-buffer@4.0.1
debug@4.4.3
decompress-response@6.0.0
deep-extend@0.6.0
detect-libc@2.1.2
diff@8.0.4
ecdsa-sig-formatter@1.0.11
end-of-stream@1.4.5
es-errors@1.3.0
es-module-lexer@2.3.1
esbuild@0.28.2
estree-walker@3.0.3
execa@1.0.0
expand-template@2.0.3
expect-type@1.3.0
extend@3.0.2
fast-deep-equal@3.1.3
fast-glob@3.3.3
fast-sha256@1.3.0
fast-uri@3.1.8
fastq@1.20.1
fdir@6.5.0
fetch-blob@3.2.0
fft.js@4.0.4
fill-range@7.1.1
formdata-polyfill@4.0.10
fs-constants@1.0.0
function-bind@1.1.2
gaxios@7.1.4
gcp-metadata@8.1.2
get-east-asian-width@1.6.0
get-stream@4.1.0
github-from-package@0.0.0
glob-parent@5.1.2
google-auth-library@10.6.2
google-logging-utils@1.1.3
graceful-fs@4.2.11
grok-mermaid@0.2.3
hasown@2.0.3
highlight.js@10.7.3
hosted-git-info@9.0.3
http-proxy-agent@9.1.0
https-proxy-agent@7.0.6
https-proxy-agent@9.1.0
husky@9.1.7
ieee754@1.2.1
ignore@7.0.8
inherits@2.0.4
ini@1.3.8
interpret@1.4.0
is-any-array@3.0.0
is-core-module@2.16.2
is-extglob@2.1.1
is-glob@4.0.3
is-number@7.0.0
is-stream@1.1.0
isexe@2.0.0
jiti@2.7.0
js-levenshtein@1.1.6
js-yaml@4.3.2
json-bigint@1.0.0
json-schema-to-ts@3.1.1
json-schema-traverse@1.0.0
jwa@2.0.1
jws@4.0.1
lightningcss@1.32.0
lightningcss-linux-arm64-gnu@1.32.0|arm64
lightningcss-linux-arm64-musl@1.32.0|arm64
lightningcss-linux-x64-gnu@1.32.0|amd64
lightningcss-linux-x64-musl@1.32.0|amd64
linear-sum-assignment@1.0.9
lodash-es@4.18.1
long@5.3.2
lru-cache@11.4.0
magic-string@0.30.21
marked@18.0.11
merge2@1.4.1
micromatch@4.0.8
mimic-response@3.1.0
minimatch@10.2.6
minimist@1.2.8
mkdirp-classic@0.5.3
ml-array-max@2.0.0
ml-array-min@2.0.0
ml-array-rescale@2.0.0
ml-matrix@6.15.0
ml-spectra-processing@14.35.1
ml-xsadd@3.0.1
ms@2.1.3
mustache@4.2.0
nan@2.27.0
nanoid@3.3.18
napi-build-utils@2.0.0
nice-try@1.0.5
node-abi@3.92.0
node-addon-api@7.1.1
node-domexception@1.0.0
node-fetch@3.3.2
node-forge@1.4.0
npm-run-path@2.0.2
obug@2.1.3
once@1.4.0
openai@6.40.0
openai@7.19.0
p-finally@1.0.0
p-retry@4.6.2
partial-json@0.1.7
path-key@2.0.1
path-key@3.1.1
path-parse@1.0.7
pathe@2.0.3
picocolors@1.1.1
picomatch@2.3.2
picomatch@4.0.4
picomatch@4.0.5
postcss@8.5.24
prebuild-install@7.1.3
proper-lockfile@4.1.2
protobufjs@7.6.6
proxy-agent-negotiate@1.1.0
pump@3.0.4
queue-microtask@1.2.3
quickjs-wasi@3.6.2
rc@1.2.8
readable-stream@3.6.2
rechoir@0.6.2
require-from-string@2.0.2
resolve@1.22.12
retry@0.12.0
retry@0.13.1
reusify@1.1.0
rolldown@1.0.3
run-parallel@1.2.0
safe-buffer@5.2.1
safer-buffer@2.1.2
semver@5.7.2
semver@7.8.5
shebang-command@1.2.0
shebang-command@2.0.0
shebang-regex@1.0.0
shebang-regex@3.0.0
shell-quote@1.10.0
shelljs@0.9.2
shx@0.4.0
siginfo@2.0.0
signal-exit@3.0.7
simple-concat@1.0.1
simple-get@4.0.1
source-map-js@1.2.1
ssh2@1.17.0
stackback@0.0.2
standardwebhooks@1.1.1
std-env@4.2.0
string_decoder@1.3.0
strip-eof@1.0.0
strip-json-comments@2.0.1
supports-preserve-symlinks-flag@1.0.0
tar-fs@2.1.4
tar-stream@2.2.0
tinybench@2.9.0
tinyexec@1.2.4
tinyglobby@0.2.17
tinyrainbow@3.1.0
to-regex-range@5.0.1
ts-algebra@2.0.0
tslib@2.8.1
tunnel-agent@0.6.0
tweetnacl@0.14.5
typebox@1.1.38
typebox@1.3.27
typescript@7.0.2
undici@6.29.0
undici@8.10.2
undici-types@6.21.0
util-deprecate@1.0.2
validate.io-array@1.0.6
validate.io-function@1.0.2
vite@8.0.16
vitest@4.1.11
vitest-evals@0.15.0
web-streams-polyfill@3.3.3
which@1.3.1
which@2.0.2
why-is-node-running@2.3.0
wrappy@1.0.2
ws@8.21.0
yaml@2.9.0
zod@3.25.76
zod-to-json-schema@3.25.0
"
NPM_STUB_PKGS="
@biomejs/cli-darwin-arm64@2.3.5
@biomejs/cli-darwin-x64@2.3.5
@biomejs/cli-win32-arm64@2.3.5
@biomejs/cli-win32-x64@2.3.5
@earendil-works/gondolin-krun-runner-darwin-arm64@0.12.0
@esbuild/aix-ppc64@0.28.2
@esbuild/android-arm64@0.28.2
@esbuild/android-arm@0.28.2
@esbuild/android-x64@0.28.2
@esbuild/darwin-arm64@0.28.2
@esbuild/darwin-x64@0.28.2
@esbuild/freebsd-arm64@0.28.2
@esbuild/freebsd-x64@0.28.2
@esbuild/linux-arm@0.28.2
@esbuild/linux-ia32@0.28.2
@esbuild/linux-loong64@0.28.2
@esbuild/linux-mips64el@0.28.2
@esbuild/linux-ppc64@0.28.2
@esbuild/linux-riscv64@0.28.2
@esbuild/linux-s390x@0.28.2
@esbuild/netbsd-arm64@0.28.2
@esbuild/netbsd-x64@0.28.2
@esbuild/openbsd-arm64@0.28.2
@esbuild/openbsd-x64@0.28.2
@esbuild/openharmony-arm64@0.28.2
@esbuild/sunos-x64@0.28.2
@esbuild/win32-arm64@0.28.2
@esbuild/win32-ia32@0.28.2
@esbuild/win32-x64@0.28.2
@rolldown/binding-android-arm64@1.0.3
@rolldown/binding-darwin-arm64@1.0.3
@rolldown/binding-darwin-x64@1.0.3
@rolldown/binding-freebsd-x64@1.0.3
@rolldown/binding-linux-arm-gnueabihf@1.0.3
@rolldown/binding-linux-ppc64-gnu@1.0.3
@rolldown/binding-linux-s390x-gnu@1.0.3
@rolldown/binding-openharmony-arm64@1.0.3
@rolldown/binding-wasm32-wasi@1.0.3
@rolldown/binding-win32-arm64-msvc@1.0.3
@rolldown/binding-win32-x64-msvc@1.0.3
@typescript/typescript-aix-ppc64@7.0.2
@typescript/typescript-darwin-arm64@7.0.2
@typescript/typescript-darwin-x64@7.0.2
@typescript/typescript-freebsd-arm64@7.0.2
@typescript/typescript-freebsd-x64@7.0.2
@typescript/typescript-linux-arm@7.0.2
@typescript/typescript-linux-loong64@7.0.2
@typescript/typescript-linux-mips64el@7.0.2
@typescript/typescript-linux-ppc64@7.0.2
@typescript/typescript-linux-riscv64@7.0.2
@typescript/typescript-linux-s390x@7.0.2
@typescript/typescript-netbsd-arm64@7.0.2
@typescript/typescript-netbsd-x64@7.0.2
@typescript/typescript-openbsd-arm64@7.0.2
@typescript/typescript-openbsd-x64@7.0.2
@typescript/typescript-sunos-x64@7.0.2
@typescript/typescript-win32-arm64@7.0.2
@typescript/typescript-win32-x64@7.0.2
fsevents@2.3.3
lightningcss-android-arm64@1.32.0
lightningcss-darwin-arm64@1.32.0
lightningcss-darwin-x64@1.32.0
lightningcss-freebsd-x64@1.32.0
lightningcss-linux-arm-gnueabihf@1.32.0
lightningcss-win32-arm64-msvc@1.32.0
lightningcss-win32-x64-msvc@1.32.0
"
inherit edo npm optfeature
DESCRIPTION="AI agent toolkit and interactive coding agent CLI"
HOMEPAGE="https://pi.dev https://github.com/earendil-works/pi"
SRC_URI="
https://github.com/earendil-works/pi/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz
https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-${PV}.tgz -> ${P}-model-data.tgz
${NPM_PKG_URIS}
"
LICENSE="MIT"
# Dependent npm package licenses
LICENSE+="
0BSD Apache-2.0 BlueOak-1.0.0 BSD BSD-2 ISC MIT MPL-2.0 Unlicense
|| ( MIT WTFPL-2 ) || ( BSD GPL-2 )
"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
RESTRICT="mirror"
# pi's bundled esbuild API refuses a binary of any other version
ESBUILD_SLOT="0.28.2"
RDEPEND="
>=net-libs/nodejs-22.19.0
dev-util/esbuild:${ESBUILD_SLOT}
dev-vcs/git
sys-apps/fd
sys-apps/ripgrep
"
BDEPEND="
${NPM_NODE_DEPEND}
dev-util/esbuild:${ESBUILD_SLOT}
"
# Workspace packages published alongside the CLI
PI_WORKSPACES=( chord tui telemetry codemode mcp ai agent coding-agent )
src_prepare() {
default
# The model catalogue is generated from provider APIs before publishing
# and is not in git. Take it from the published pi-ai package.
mkdir -p packages/ai/src/providers || die
cp -r "${WORKDIR}"/package/dist/providers/data packages/ai/src/providers/ || die
}
src_configure() {
export ESBUILD_BINARY_PATH="${BROOT}/usr/bin/esbuild-${ESBUILD_SLOT}"
npm_with_registry npm ci
}
src_compile() {
# build:offline uses the model data in the source tree instead of
# fetching it
edo npm run build:offline
# The install lockfile ships generated in the release tarball; verify
# it matches the root lockfile.
edo node scripts/generate-coding-agent-install-lock.mjs --check
local ws
mkdir -p "${T}/packs" || die
for ws in "${PI_WORKSPACES[@]}"; do
edo npm pack --ignore-scripts --pack-destination "${T}/packs" \
--workspace "packages/${ws}"
done
}
src_install() {
# Install the way upstream publishes it, resolving dependencies from
# the offline registry. The install lockfile pins the exact tree;
# esbuild comes from dev-util/esbuild instead of the npm package's
# platform binaries, and clipboard access falls back to wl-paste or xclip.
npm_registry_add "${T}"/packs/*.tgz
mkdir -p "${T}/install" || die
cp packages/coding-agent/install-lock/package.json \
packages/coding-agent/install-lock/package-lock.json \
"${T}/install/" || die
npm_with_registry npm ci --prefix "${T}/install" \
--omit=dev --omit=optional --install-links
mkdir -p "${ED}/usr/lib" || die
mv "${T}/install/node_modules" "${ED}/usr/lib/node_modules" || die
newbin - pi <<-EOT
#!/bin/sh
export ESBUILD_BINARY_PATH="\${ESBUILD_BINARY_PATH:-${EPREFIX}/usr/bin/esbuild-${ESBUILD_SLOT}}"
export PI_SKIP_VERSION_CHECK=1
exec node "${EPREFIX}/usr/lib/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js" "\$@"
EOT
dodoc README.md
}
pkg_postinst() {
optfeature_header "Optional clipboard image support:"
optfeature "Wayland" gui-apps/wl-clipboard
optfeature "X11" x11-misc/xclip
}
>=net-libs/nodejs-22.19.0 dev-util/esbuild:0.28.2 dev-vcs/git sys-apps/fd sys-apps/ripgrep
dev-util/esbuild:0.28.2
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | pi-1.0.4-model-data.tgz | 774842 bytes | https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.4.tgz |
| DIST | pi-1.0.4.gh.tar.gz | 7690758 bytes | https://github.com/earendil-works/pi/archive/refs/tags/v1.0.4.tar.gz |