pig

package module
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2026 License: MIT Imports: 1 Imported by: 0

README

PiG

CI CodeQL OpenSSF Scorecard OpenSSF Best Practices REUSE status Go Reference Minimum Go version Latest release Pi pin 1.0.3 Pi port progress Follow PiG on X Join r/PiGCodingAgent

PiG is Pi, the minimal and extensible coding agent for the terminal, rebuilt in Go as one native binary. It starts quickly, needs no Node.js, and runs Pi's TypeScript extensions unchanged. You can also write extensions in Go, Rust, or Python, and bundle extensions, skills, and prompts into a Piglet: one named agent you can share or build into its own executable.

PiG is a pre-stable 0.x release. Core paths are ported and checked against Pi 1.0.3 with paired parity scenarios; edge cases are still hardening. See the port status and file map for current scope and evidence.

If PiG behaves differently from Pi, that is either a bug or a documented divergence. Windows support is a preview.

Install

On macOS, Linux, or Android with Termux (arm64):

curl -fsSL https://pi-in-go.dev/install.sh | sh

On Windows, in PowerShell:

irm https://pi-in-go.dev/install.ps1 | iex

With npm, on any supported platform:

npm install -g @pi-in-go/pig

With Go:

go install github.com/MichaelKinsy/PiG/cmd/pig@latest

You can also download an archive from GitHub Releases or build from source. pi-in-go.dev/install covers every method, including updates and uninstalling.

Quick start

Start PiG in the directory where you want it to work, run /login to connect a subscription or set your provider's API key (for example OPENAI_API_KEY), then ask it something:

cd /path/to/project
pig

Interactive /login masks secret input by default. Turn off Mask secret input in /settings to restore Pi's plain-text typing and submitted input (D80). See login privacy.

The documentation covers everything else, starting with the quickstart. You can also ask PiG to explain itself.

Upstream Pi

Pi is the reference implementation. PiG follows Pi's behavior and design unless a Go constraint or an approved product-neutral requirement makes a difference necessary.

Use the upstream project for Pi itself:

PiG is not an official Pi release. The Pi maintainers do not endorse PiG.

Origins

Michael Kinsy created PiG working at Hewlett Packard Enterprise.

PiG is maintained as an independent open-source project. Project decisions, issues, and contributions belong in this repository. See docs/project/GOVERNANCE.md and docs/project/MAINTAINERS.md.

Compatibility philosophy

PiG adds a Go implementation to the Pi ecosystem and follows the Pi reference implementation.

  • Preserve observable compatibility with Pi.
  • Treat the pinned Pi release as the reference behavior.
  • Minimize unnecessary divergence.
  • Record each intentional user-visible or interoperability difference.
  • Prefer changes that reduce the cost of the next upstream sync.
  • Share generally useful findings with the broader ecosystem when the contribution route permits it.

The pinned Pi release is 0.99.1 at commit d86654abb8862e201933517d6f1fce9f88dd117f. The pin names the behavior oracle. It does not claim that every upstream change is already ported: test/parity/coverage.md reports verified behavior, and the upgrade ledgers under test/parity/upstream-sync/ list each upstream change and its disposition.

PiG's current package scope covers Pi's agent, AI, coding-agent, and TUI packages. It does not implement Pi's experimental remote Session packages or its standalone telemetry and evaluation packages. See docs/parity/PORT_MAP.md for the exact boundary.

Project facts

  • Binary: pig
  • Go module: github.com/MichaelKinsy/PiG
  • Configuration root: ~/.pig/, or PIG_HOME
  • Agent directory: ~/.pig/agent, or PIG_CODING_AGENT_DIR
  • Pi version pin: internal/coding/pigversion/pigversion.go
  • Local upstream mirror: .upstream/current/
  • Main verification gate: make check
  • Full verification and coverage refresh: make verify

pig --version prints PiG's version as <PiG release>+<Pi release>, for example 0.3.0+0.99.1 (D63): the Pi release is semver build metadata, so the version sorts as the PiG release. pig version prints the PiG release and the pinned Pi release as separate fields. Neither command reads user configuration.

Repository map

Path Responsibility
agent/ Pi-compatible Agent loop, messages, and harness Session state.
ai/ Pi-compatible providers, model catalog, authentication, and streaming types.
coding/ Public coding-agent SDK, extension contracts, Package support, and Piglet support.
tui/ Public terminal components, rendering, input, and terminal lifecycle.
cmd/pig/ Stock PiG command-line application and RPC process surface.
internal/ Private implementation used by Stock PiG. External modules cannot import it.
extensions/ Go, Rust, Python, and declaration-only TypeScript extension SDKs.
piglets/ Explicit agent compositions such as PiG Standard and Pig Porter.
test/parity/ Pinned Pi correspondence, scenarios, inventories, and generated evidence.
test/ Integration, extension-conformance, clean-repository, and upstream-contract tests.
docs/ Maintainer references and the static public documentation site.
examples/ Small extension and embedding examples.
automation/ Build, generation, CI, release, layout, and maintainer tooling.

PiG aligns public package boundaries with Pi's agent, ai, coding-agent, and tui packages. Go files within a package follow cohesive implementation responsibilities instead of mirroring TypeScript file mechanics. docs/parity/PORT_MAP.md records every source correspondence.

Stock PiG and compositions

Stock PiG is the product-neutral binary built from this repository. It does not activate PiG Standard Resources, product authentication, product APIs, or deployment-specific behavior.

A Piglet explicitly selects Resources, tools, discovery, defaults, and environment requirements for one agent. A Package distributes Resources. A Package never owns or activates a Piglet. A Piglet Binary is a direct executable build output for one pinned Piglet composition.

PiG Standard is the explicit Piglet at piglets/standard/pig-standard.yaml. It currently selects the extension-provided PiG login, sprite catalogue, and PiG Runner. Run it from source with:

pig --piglet piglets/standard/pig-standard.yaml

Stock PiG never selects this composition implicitly. A Package can distribute its Resources, but a Package cannot own or activate the Piglet.

See CONTEXT.md and docs/README.md for the project terms and documentation map.

Security boundary

PiG runs with the permissions of the user who starts it. PiG does not provide a security sandbox for model output, tools, extensions, skills, hooks, or shell commands.

Use a container, virtual machine, or another operating-system boundary when you need isolation. Load extensions and project instructions only from sources you trust. See .github/SECURITY.md.

Install with npm

Install the command with npm (Node.js 18 or newer):

npm install -g @pi-in-go/pig
pig --version

Or run it once without installing:

npx @pi-in-go/pig --version

pig itself is the native binary: npm installs the matching platform package (@pi-in-go/pig-<os>-<cpu>, for macOS, Linux and Windows on x64 and arm64, and Android on arm64 for Termux) as an optional dependency, and Node.js runs only a small launcher. Do not install with --omit=optional or --no-optional, which leaves the binary out. Update with npm update -g @pi-in-go/pig and uninstall with npm uninstall -g @pi-in-go/pig. pig update does not replace an npm-installed binary; update through npm.

Install with Go

Install the command without a source checkout with Go 1.26 or newer:

go install github.com/MichaelKinsy/PiG/cmd/pig@latest

Go writes the pig executable to GOBIN, or to the bin directory of the first GOPATH entry when GOBIN is unset: $(go env GOPATH)/bin, which is ~/go/bin by default (%USERPROFILE%\go\bin on Windows). Add that directory to PATH. With an older Go 1.21 or later and the default GOTOOLCHAIN=auto, Go downloads a new enough toolchain automatically. Release binaries are built with Go 1.27.1.

Use an exact release such as @v0.2.0 when reproducibility matters. Update a Go installation by running go install again. Each release tags the root module (v0.2.0) and the Go extension SDK module (extensions/sdk/v0.2.0) on the same commit; go install needs both.

Build from source

PiG currently supports source builds on Linux, macOS, and Windows. Do not treat a platform as release-supported until its native release verification passes.

Requirements:

  • Go 1.27.1
  • Git
  • macOS 13 or later for native macOS builds
  • Node.js 24.19.0 and npm 12.1.0 for parity tooling
  • Python 3.12 for Python SDK tests
  • Rust 1.97.1 for Rust SDK tests
  • tmux for terminal parity tests on Unix

Build the binary:

go build -o bin/pig ./cmd/pig
./bin/pig --version

Prepare the exact Pi comparator and source mirror:

make upstream-mirror

Run the main local gate:

make check

The upstream-mirror target installs the lockfile-pinned Pi package. It retrieves the exact tagged Pi source and verifies its commit against internal/coding/pigversion/pigversion.go.

Contract model

A ported row means that code exists. It does not prove behavioral compatibility. A non-deferred scenario must exercise and assert the mapped behavior.

Extensions

PiG supports Go, Rust, Python, and Node extension factories through its public extension host. Extensions can register tools, commands, event handlers, flags, shortcuts, providers, and user-interface contributions.

Node extensions use Pi's TypeScript extension API. PiG supplies compatible runtime modules. The declaration-only package in extensions/sdk-ts adds types for PiG-only extension capabilities without replacing Pi's TypeScript runtime.

Start with:

Use pig extension init <directory> to scaffold an extension. Use pig install <path> --validate-only --json to validate it.

Supply-chain evidence

PiG treats scanner output as evidence input, not as proof by itself. Release preparation builds a validated dependency inventory and artifact-specific SPDX SBOMs. Reviewers reconcile scanner findings with Go modules, npm locks, Python metadata, Rust locks, embedded assets, generated data, and release contents.

See docs/supply-chain.md for the inventory, SBOM, vulnerability, license, signing, and provenance requirements.

Project policies

Acknowledgements

PiG would not exist without Pi and the work of its maintainers and contributors. Their design and open-source work provide the reference that PiG follows.

Thank you to everyone who contributes to Pi and PiG. Maintainers are listed in docs/project/MAINTAINERS.md, every contributor appears on GitHub's contributors page, and the changelog credits each fix to the person who reported or contributed it.

Star History

Star History Chart

Documentation

Overview

Package pig exposes build-time-embedded resources for the pig binary.

This is the only file at module root; runtime code lives in cmd/, internal/, coding/. Its sole purpose is to host `//go:embed` directives that need access to files at the repo root (Go embed cannot traverse to parent directories from a sub-package).

Currently embeds: - CHANGELOG.md, surfaced via the `/changelog` slash command.

Index

Constants

This section is empty.

Variables

View Source
var Changelog string

Changelog is the bundled CHANGELOG.md, embedded at build time. Read by internal/codingagent's `/changelog` slash handler. Empty when the file is missing at build time (which would fail the embed and the build).

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package agent provides the core agent loop and message types.
Package agent provides the core agent loop and message types.
Package ai provides provider abstractions, model definitions, and auth storage for pig.
Package ai provides provider abstractions, model definitions, and auth storage for pig.
automation
ci/divguard command
Command divguard fails CI on hidden, arbitrary divergences from Pi: invented limits, timeouts and defaults, silent exits, swallowed errors and dropped events that no docs/parity/DIVERGENCES.md entry records.
Command divguard fails CI on hidden, arbitrary divergences from Pi: invented limits, timeouts and defaults, silent exits, swallowed errors and dropped events that no docs/parity/DIVERGENCES.md entry records.
ci/slopmetrics command
Command slopmetrics measures two code-quality signals from SlopCodeBench (arXiv:2603.24755) over the repository's hand-written Go code:
Command slopmetrics measures two code-quality signals from SlopCodeBench (arXiv:2603.24755) over the repository's hand-written Go code:
layout/scan command
Command scan parses tracked Go files without evaluating build constraints.
Command scan parses tracked Go files without evaluating build constraints.
release/modulehash
Package modulehash computes the Go publication hashes of tracked module files.
Package modulehash computes the Go publication hashes of tracked module files.
release/set-version command
Set-version synchronizes repository release pins without publishing anything.
Set-version synchronizes repository release pins without publishing anything.
Package chord ports the parts of Pi's @earendil-works/chord application runtime that the durable packages consume: strict JSON copies and the publication-only replicated state attached to an authoritative source.
Package chord ports the parts of Pi's @earendil-works/chord application runtime that the durable packages consume: strict JSON copies and the publication-only replicated state attached to an authoritative source.
delta
Package delta produces immutable JSON revisions and exact operation batches for ordered replicas.
Package delta produces immutable JSON revisions and exact operation batches for ordered replicas.
cmd
check-model-data command
Command check-model-data validates a hydrated upstream model catalog before generation.
Command check-model-data validates a hydrated upstream model catalog before generation.
gen-classifier-models command
Command gen-classifier-models imports the CLASSIFIER_MODELS export of a published Pi models.generated.js and emits ai/classifier_models_generated.go.
Command gen-classifier-models imports the CLASSIFIER_MODELS export of a published Pi models.generated.js and emits ai/classifier_models_generated.go.
gen-models command
Command gen-models reads upstream pi's catalog and emits ai/models_generated.go.
Command gen-models reads upstream pi's catalog and emits ai/models_generated.go.
pig command
Command pig provides the PiG coding agent CLI.
Command pig provides the PiG coding agent CLI.
Package codemode runs a model-written JavaScript script against a table of host tools and globals.
Package codemode runs a model-written JavaScript script against a table of host tools and globals.
Package coding is the public SDK for embedding the pig coding agent as a Go library.
Package coding is the public SDK for embedding the pig coding agent as a Go library.
extension
Package extension defines the contract every pig extension speaks.
Package extension defines the contract every pig extension speaks.
extension/builtin
Package builtin is the registry of upstream's built-in extensions that PiG implements natively: the `builtin:<name>` extension paths of codemode and tool-search (docs/specs/builtin-codemode-tool-search.md).
Package builtin is the registry of upstream's built-in extensions that PiG implements natively: the `builtin:<name>` extension paths of codemode and tool-search (docs/specs/builtin-codemode-tool-search.md).
extension/builtin/codemode
Package codemode is the built-in `codemode` extension: the tool that lets the model write JavaScript that calls other tools.
Package codemode is the built-in `codemode` extension: the tool that lets the model write JavaScript that calls other tools.
extension/builtin/toolsearch
Package toolsearch is the built-in `tool_search` extension: tool discovery with a BM25 ranker over tool metadata, shared by `searchTools()` in codemode scripts and the optional `tool_search` tool.
Package toolsearch is the built-in `tool_search` extension: tool discovery with a BM25 ranker over tool metadata, shared by `searchTools()` in codemode scripts and the optional `tool_search` tool.
extension/extensiontest
Package extensiontest provides test doubles for the extension.API surface.
Package extensiontest provides test doubles for the extension.API surface.
extension/host/cellpack
Package cellpack is the Piglet-Binary-side counterpart to the host's prebuilt-cell seam (runtimecell.PrebuiltResolver).
Package cellpack is the Piglet-Binary-side counterpart to the host's prebuilt-cell seam (runtimecell.PrebuiltResolver).
extension/host/fusepack
Package fusepack holds Go extensions fused into a Piglet Binary.
Package fusepack holds Go extensions fused into a Piglet Binary.
extension/host/inproc
Package inproc implements the in-process Go dispatch runner for extensions.
Package inproc implements the in-process Go dispatch runner for extensions.
extension/host/runtimecell
Package runtimecell builds and resolves packed extension runtime cells.
Package runtimecell builds and resolves packed extension runtime cells.
extension/host/subprocess
Package subprocess implements pig's out-of-process extension transport: extensions communicate over a local stream socket with length-prefixed JSON framing.
Package subprocess implements pig's out-of-process extension transport: extensions communicate over a local stream socket with length-prefixed JSON framing.
extension/host/subprocess/internal/noderuntimegen command
Command noderuntimegen packages the Node runtime and its content identity reproducibly.
Command noderuntimegen packages the Node runtime and its content identity reproducibly.
extension/installresolver
Package installresolver is Pig's product-neutral seam for contributed package-source behavior.
Package installresolver is Pig's product-neutral seam for contributed package-source behavior.
extension/pigsdk
Package pigsdk stages Pig's extension SDKs (Go, Python, and Rust) into the config root so out-of-tree extension builds and packed runtime cells can use the API that matches the running binary.
Package pigsdk stages Pig's extension SDKs (Go, Python, and Rust) into the config root so out-of-tree extension builds and packed runtime cells can use the API that matches the running binary.
extension/source
Package source resolves an authorized extension path into one conventional factory or exact isolated standalone definition.
Package source resolves an authorized extension path into one conventional factory or exact isolated standalone definition.
hookconfig
Package hookconfig parses and validates command hook files shared by Package validation and the runtime hook bridge.
Package hookconfig parses and validates command hook files shared by Package validation and the runtime hook bridge.
mcpext
Package mcpext is the built-in MCP integration (`builtin:mcp`).
Package mcpext is the built-in MCP integration (`builtin:mcp`).
packagecontent
Ports packages/coding-agent/src/core/package-manager.ts.
Ports packages/coding-agent/src/core/package-manager.ts.
piglet
Package piglet provides piglet-based capability scoping for pig sessions.
Package piglet provides piglet-based capability scoping for pig sessions.
piglet/artifact
Package artifact defines executable Piglet component plans and artifact records.
Package artifact defines executable Piglet component plans and artifact records.
piglet/release
Package release verifies and installs signed Piglet Binary releases.
Package release verifies and installs signed Piglet Binary releases.
piglet/signature
Package signature signs and verifies Piglet Binaries.
Package signature signs and verifies Piglet Binaries.
pigletbuild
Package pigletbuild validates Piglet closure and builds source or binary Piglet artifacts.
Package pigletbuild validates Piglet closure and builds source or binary Piglet artifacts.
pigletbuild/binarypiglet
Package binarypiglet holds the Piglet and resolution record embedded in a Piglet Binary.
Package binarypiglet holds the Piglet and resolution record embedded in a Piglet Binary.
piglogin
Package piglogin is PiG's built-in sprite login: the sprite's 16-by-14 pig, which the startup header shows in Pi's logo slot, the full login art (the 12-pixel "PiG." hero wordmark with its drop shadow beside that pig) that /sprite preview shows, the sprites `/sprite` chooses from, and the selection kept under $PIG_HOME/state/pig-standard/login.json.
Package piglogin is PiG's built-in sprite login: the sprite's 16-by-14 pig, which the startup header shows in Pi's logo slot, the full login art (the 12-pixel "PiG." hero wordmark with its drop shadow beside that pig) that /sprite preview shows, the sprites `/sprite` chooses from, and the selection kept under $PIG_HOME/state/pig-standard/login.json.
rpcclient
Ports packages/coding-agent/src/modes/rpc/jsonl.ts
Ports packages/coding-agent/src/modes/rpc/jsonl.ts
secretresolver
Package secretresolver provides the product-neutral resolver seam for typed Piglet secret refs.
Package secretresolver provides the product-neutral resolver seam for typed Piglet secret refs.
source
Package source parses the source-reference vocabulary shared by package installation and Pig piglet resource origins.
Package source parses the source-reference vocabulary shared by package installation and Pig piglet resource origins.
Package durable ports the root module of Pi's @earendil-works/pi-durable: the durable conversation, task, and document runtime types, the ID kinds, the errors, the built-in entry kinds, document and task definitions, and the tool-output truncation helpers.
Package durable ports the root module of Pi's @earendil-works/pi-durable: the durable conversation, task, and document runtime types, the ID kinds, the errors, the built-in entry kinds, document and task definitions, and the tool-output truncation helpers.
durabletest
Package durabletest holds runner-independent conformance cases and benchmark workloads for durable.Storage implementations.
Package durabletest holds runner-independent conformance cases and benchmark workloads for durable.Storage implementations.
env
Package env declares the portable execution environment of pi-durable: a file system and a shell that tools and prompt sections use through a conversation's environment.
Package env declares the portable execution environment of pi-durable: a file system and a shell that tools and prompt sections use through a conversation's environment.
env/node
Package node is the local execution environment of pi-durable: NodeExecutionEnv runs on the host file system and shell.
Package node is the local execution environment of pi-durable: NodeExecutionEnv runs on the host file system and shell.
session
Package session ports the pi-durable Session kernel: one mutation line, the loaded document tracker cache, transactions, document forks, and committed publication and observation.
Package session ports the pi-durable Session kernel: one mutation line, the loaded document tracker cache, transactions, document forks, and committed publication and observation.
session/sessiontest
Package sessiontest holds the shared Session test support: a controlled memory storage and an opened Session kernel with its publications.
Package sessiontest holds the shared Session test support: a controlled memory storage and an opened Session kernel with its publications.
storage
Package storage holds the in-memory reference implementation of the durable Storage contract.
Package storage holds the in-memory reference implementation of the durable Storage contract.
storage/internal/ops
Package ops replays stored Chord operation batches for the storage backends.
Package ops replays stored Chord operation batches for the storage backends.
storage/internal/writes
Package writes normalizes durable storage writes for the storage backends.
Package writes normalizes durable storage writes for the storage backends.
storage/jsonl
Package jsonl is the portable JSONL implementation of the durable Storage contract: one main commit log and per-document and per-task sidecar logs in one directory, accessed through a file system capability.
Package jsonl is the portable JSONL implementation of the durable Storage contract: one main commit log and per-document and per-task sidecar logs in one directory, accessed through a file system capability.
storage/jsonl/node
Package node opens JSONL durable storage on the local file system, the Go counterpart of Pi's Node JSONL adapter.
Package node opens JSONL durable storage on the local file system, the Go counterpart of Pi's Node JSONL adapter.
storage/sqlite
Package sqlite is the portable SQLite storage core of pi-durable: the database facade, the schema migrations, and SqliteStorage.
Package sqlite is the portable SQLite storage core of pi-durable: the database facade, the schema migrations, and SqliteStorage.
storage/sqlite/node
Package node adapts a native SQLite connection to the portable durable SQLite facade.
Package node adapts a native SQLite connection to the portable durable SQLite facade.
tools
Package tools is the coding tools of pi-durable: read, write, edit and bash over an execution environment.
Package tools is the coding tools of pi-durable: read, write, edit and bash over an execution environment.
examples
sdk command
Command sdk-example is a minimal demonstration of embedding the pig coding agent as a Go library via the public `coding` package.
Command sdk-example is a minimal demonstration of embedding the pig coding agent as a Go library via the public `coding` package.
extensions
sdk-py
Package pysdk carries the Python extension SDK sources so an installed pig can stage a buildable copy to disk.
Package pysdk carries the Python extension SDK sources so an installed pig can stage a buildable copy to disk.
sdk-rs
Package rssdk carries the Rust extension SDK sources so an installed pig can stage a buildable copy to disk.
Package rssdk carries the Rust extension SDK sources so an installed pig can stage a buildable copy to disk.
sdk module
internal
bodyreadhook
Package bodyreadhook lets a test fixture synchronize with a provider's HTTP connection reads.
Package bodyreadhook lets a test fixture synchronize with a provider's HTTP connection reads.
bodyreadhook/readbarrier
Package readbarrier synchronizes a test fixture server with the owned provider transport's socket reads.
Package readbarrier synchronizes a test fixture server with the owned provider transport's socket reads.
buildprogress
Package buildprogress reports product-neutral diagnostics for explicit builds.
Package buildprogress reports product-neutral diagnostics for explicit builds.
bytesize
Package bytesize parses the byte sizes PiG commands accept, such as 5GiB.
Package bytesize parses the byte sizes PiG commands accept, such as 5GiB.
childwait
Waiting for a child's output pipes after it exits.
Waiting for a child's output pipes after it exits.
chord
Package chord ports Pi 1.0.0's packages/chord: replicated state, the remote service provider and its endpoint, the operation-stream replica binding, facet hosts and JSON-copy transports.
Package chord ports Pi 1.0.0's packages/chord: replicated state, the remote service provider and its endpoint, the operation-stream replica binding, facet hosts and JSON-copy transports.
chord/chordctx
Package chordctx ports packages/chord/src/context/index.ts onto context.Context.
Package chordctx ports packages/chord/src/context/index.ts onto context.Context.
chord/chordjson
Package chordjson ports packages/chord/src/json.ts: strict-JSON checking and alias-free copying.
Package chordjson ports packages/chord/src/json.ts: strict-JSON checking and alias-free copying.
chord/delta
Package delta ports @earendil-works/chord/delta (packages/chord/src/delta): immutable JSON revisions, exact operation batches for ordered replicas, the operation applier, the path-interning wire codec, revision diffing, and the revision tracker.
Package delta ports @earendil-works/chord/delta (packages/chord/src/delta): immutable JSON revisions, exact operation batches for ordered replicas, the operation applier, the path-interning wire codec, revision diffing, and the revision tracker.
coding/pigidentity
Package pigidentity holds the product identity PiG sends to services in place of Pi's.
Package pigidentity holds the product identity PiG sends to services in place of Pi's.
coding/pigversion
Package pigversion provides PiG and upstream Pi version pins to packages that cannot import coding.
Package pigversion provides PiG and upstream Pi version pins to packages that cannot import coding.
codingagent
Model picker auth-filter scope toggle.
Model picker auth-filter scope toggle.
codingagent/compaction
Ports packages/coding-agent/src/core/compaction/branch-summarization.ts Branch summarization for tree navigation.
Ports packages/coding-agent/src/core/compaction/branch-summarization.ts Branch summarization for tree navigation.
codingagent/export
Ports packages/coding-agent/src/core/export-html/ansi-to-html.ts
Ports packages/coding-agent/src/core/export-html/ansi-to-html.ts
codingagent/frontmatter
Ports packages/coding-agent/src/utils/frontmatter.ts.
Ports packages/coding-agent/src/utils/frontmatter.ts.
codingagent/llama
Package llama ports Pi's built-in llama.cpp extension (packages/coding-agent/src/extensions/llama/): the router HTTP/SSE client, Hugging Face search and download, the dynamic provider, the manager UI, and the /llama command.
Package llama ports Pi's built-in llama.cpp extension (packages/coding-agent/src/extensions/llama/): the router HTTP/SSE client, Hugging Face search and download, the dynamic provider, the manager UI, and the /llama command.
codingagent/prompts
Package prompts builds the default coding-agent system prompt.
Package prompts builds the default coding-agent system prompt.
codingagent/tools
tools/bash_executor.go: user bash execution (!cmd, RPC bash, SDK ExecuteBash).
tools/bash_executor.go: user bash execution (!cmd, RPC bash, SDK ExecuteBash).
configvalue
Package configvalue mirrors upstream pi's packages/coding-agent/src/core/resolve-config-value.ts (v0.78.1).
Package configvalue mirrors upstream pi's packages/coding-agent/src/core/resolve-config-value.ts (v0.78.1).
crossspawn
Package crossspawn starts a program the way upstream's spawnProcess does (coding-agent utils/child-process.ts): Node's spawn on Unix, and on Windows the cross-spawn package, which checks shebang interpreters before selecting direct execution or escaped cmd.exe execution for command shims.
Package crossspawn starts a program the way upstream's spawnProcess does (coding-agent utils/child-process.ts): Node's spawn on Unix, and on Windows the cross-spawn package, which checks shebang interpreters before selecting direct execution or escaped cmd.exe execution for command shims.
ctxowner
Package ctxowner joins the lifetime of one context with the request values of another.
Package ctxowner joins the lifetime of one context with the request values of another.
ecmascript
Package ecmascript preserves JavaScript JSON and string semantics at native boundaries.
Package ecmascript preserves JavaScript JSON and string semantics at native boundaries.
evals
Package evals ports Pi's documentation eval tooling: the task plan, the paired comparison report, the harness's prompt and environment helpers, and the fixtures the evals use.
Package evals ports Pi's documentation eval tooling: the task plan, the paired comparison report, the harness's prompt and environment helpers, and the fixtures the evals use.
experimental
Ports packages/coding-agent/src/experimental/client-tui.ts.
Ports packages/coding-agent/src/experimental/client-tui.ts.
experimental/client
Package client implements the experimental Pi client over ordered byte transports.
Package client implements the experimental Pi client over ordered byte transports.
experimental/durableadapter
Package durableadapter adapts the pi-durable Harness (durable/harness) to the consumer-owned boundaries of the experimental worker services.
Package durableadapter adapts the pi-durable Harness (durable/harness) to the consumer-owned boundaries of the experimental worker services.
experimental/durableagent
Package durableagent holds the pi setup of a coding agent over the pi-durable Harness: the coding registry, the Harness settings, the execution environments, the HTTP setup and the initial model.
Package durableagent holds the pi setup of a coding agent over the pi-durable Harness: the coding registry, the Harness settings, the execution environments, the HTTP setup and the initial model.
experimental/durableagent/main command
Command main runs the durable coding agent: pi's coding tools on the pi-durable Harness, with its own TUI.
Command main runs the durable coding agent: pi's coding tools on the pi-durable Harness, with its own TUI.
experimental/durabletest
Package durabletest opens pi-durable Harnesses for the experimental tests: an in-memory one over the faux provider (packages/coding-agent/test/experimental-durable-support.ts openFauxConversation), and a file-backed SQLite one for worker processes.
Package durabletest opens pi-durable Harnesses for the experimental tests: an in-memory one over the faux provider (packages/coding-agent/test/experimental-durable-support.ts openFauxConversation), and a file-backed SQLite one for worker processes.
experimental/protocol
Package protocol implements the framed experimental Pi wire contract.
Package protocol implements the framed experimental Pi wire contract.
experimental/routing
Package routing hosts contract-agnostic experimental server and client routing.
Package routing hosts contract-agnostic experimental server and client routing.
experimental/routing/routingtest
Package routingtest ports the server package's testing subpath (packages/server/src/testing): a scripted Session host, a protocol test client, and an unstarted test server for transport and routing conformance tests.
Package routingtest ports the server package's testing subpath (packages/server/src/testing): a scripted Session host, a protocol test client, and an unstarted test server for transport and routing conformance tests.
experimental/services
Package services contains the opt-in experimental presentation service contracts.
Package services contains the opt-in experimental presentation service contracts.
experimental/vacation
Package vacation is a durable vacation planning agent on the pi-durable Harness: the coding agent of internal/experimental/durableagent with the coding tools and pi's coding prompt replaced by a vacation planner.
Package vacation is a durable vacation planning agent on the pi-durable Harness: the coding agent of internal/experimental/durableagent with the coding tools and pi's coding prompt replaced by a vacation planner.
experimental/vacation/main command
Command main runs the durable vacation planner: a research subagent that reports back, on the pi-durable Harness, with the durable agent's TUI.
Command main runs the durable vacation planner: a research subagent that reports back, on the pi-durable Harness, with the durable agent's TUI.
ignorerules
Package ignorerules applies .gitignore, .ignore, and .fdignore files the way upstream Pi's package manager does when it discovers package resources.
Package ignorerules applies .gitignore, .ignore, and .fdignore files the way upstream Pi's package manager does when it discovers package resources.
imageprocessing
Image resize + re-encode policy for CLI/LLM image attachments, plus the EXIF orientation reader (upstream exif-orientation.ts).
Image resize + re-encode policy for CLI/LLM image attachments, plus the EXIF orientation reader (upstream exif-orientation.ts).
installchange
Package installchange tells a running pig that the files it runs from changed on disk.
Package installchange tells a running pig that the files it runs from changed on disk.
jsarray
Package jsarray implements JavaScript Array semantics that ported code observes.
Package jsarray implements JavaScript Array semantics that ported code observes.
jsnumber
Package jsnumber implements ECMAScript numeric conversion and serialization for values that arrive as JSON.
Package jsnumber implements ECMAScript numeric conversion and serialization for values that arrive as JSON.
jsonparse
Package jsonparse reports ECMAScript JSON.parse syntax errors for rejected JSON text.
Package jsonparse reports ECMAScript JSON.parse syntax errors for rejected JSON text.
jsonstringify
Package jsonstringify implements ECMAScript serialization for parsed JSON data.
Package jsonstringify implements ECMAScript serialization for parsed JSON data.
jsstring
Package jsstring preserves JavaScript UTF-16 units at Go string boundaries.
Package jsstring preserves JavaScript UTF-16 units at Go string boundaries.
latex
Package latex renders a basic subset of LaTeX math as terminal-friendly Unicode text.
Package latex renders a basic subset of LaTeX math as terminal-friendly Unicode text.
latex/gentables command
Command gentables extracts the static lookup tables from upstream pi's tui/src/latex.ts into Go source (symbols.go), so the LaTeX->Unicode port never hand-transcribes ~230 symbol rows.
Command gentables extracts the static lookup tables from upstream pi's tui/src/latex.ts into Go source (symbols.go), so the LaTeX->Unicode port never hand-transcribes ~230 symbol rows.
lazyregexp
Package lazyregexp compiles a package-level regular expression when it is first used instead of when its package initializes.
Package lazyregexp compiles a package-level regular expression when it is first used instead of when its package initializes.
linkerexec
Package linkerexec starts programs on Android builds that forbid executing files in an app's data directory.
Package linkerexec starts programs on Android builds that forbid executing files in an app's data directory.
managementhttp
Package managementhttp ports upstream coding-agent utils/management-http.ts: a bounded immediate retry for idempotent management requests (tool downloads, release lookups).
Package managementhttp ports upstream coding-agent utils/management-http.ts: a bounded immediate retry for idempotent management requests (tool downloads, release lookups).
mermaid
Package mermaid renders Mermaid diagrams as Unicode box-drawing art for terminals.
Package mermaid renders Mermaid diagrams as Unicode box-drawing art for terminals.
nativeplatform
Package nativeplatform provides operating-system queries and native clipboard transfers.
Package nativeplatform provides operating-system queries and native clipboard transfers.
nodeerrno
Package nodeerrno maps operating-system errors to the error codes, descriptions and errnos Node reports for them.
Package nodeerrno maps operating-system errors to the error codes, descriptions and errnos Node reports for them.
nodepath
Package nodepath ports the parts of Node's path module Pi resolves file paths with.
Package nodepath ports the parts of Node's path module Pi resolves file paths with.
nodesemver
Package nodesemver translates the npm semver package (semver 7.8.5) calls Pi's package manager makes.
Package nodesemver translates the npm semver package (semver 7.8.5) calls Pi's package manager makes.
nodespawn
Package nodespawn builds the Windows command line that Node's child_process.spawn(file, args) passes to CreateProcessW when neither shell nor windowsVerbatimArguments is set.
Package nodespawn builds the Windows command line that Node's child_process.spawn(file, args) passes to CreateProcessW when neither shell nor windowsVerbatimArguments is set.
nodeurl
Package nodeurl ports the Node URL host/path handling and fileURLToPath semantics used by PiG.
Package nodeurl ports the Node URL host/path handling and fileURLToPath semantics used by PiG.
orderedjson
Package orderedjson holds JSON objects that keep their keys in the order they were read or set, the way a JavaScript object does.
Package orderedjson holds JSON objects that keep their keys in the order they were read or set, the way a JavaScript object does.
outputfiles
Package outputfiles creates the files pi writes so the model can use output it was not shown in full: the full text of truncated tool output, binary MCP resources and images shown by codemode scripts.
Package outputfiles creates the files pi writes so the model can use output it was not shown in full: the full text of truncated tool output, binary MCP resources and images shown by codemode scripts.
ownerfile
Package ownerfile makes files accessible to their owner only and checks that they are: mode 0600 and no group or other bits on POSIX, and on Windows, which has no mode bits, a DACL (D68).
Package ownerfile makes files accessible to their owner only and checks that they are: mode 0600 and no group or other bits on POSIX, and on Windows, which has no mode bits, a DACL (D68).
packagemanager
Package packagemanager resolves, installs and reads the Packages that settings configure.
Package packagemanager resolves, installs and reads the Packages that settings configure.
pigdocs
Package pigdocs materializes the reference documentation embedded in Stock Pig under the user's config root (`~/.pig/docs` by default).
Package pigdocs materializes the reference documentation embedded in Stock Pig under the user's config root (`~/.pig/docs` by default).
pigsdklock
Package pigsdklock coordinates readers and writers of staged Pig extension SDKs within one configuration root.
Package pigsdklock coordinates readers and writers of staged Pig extension SDKs within one configuration root.
pilock
Package pilock implements Pi's proper-lockfile directory-lock protocol for shared stores.
Package pilock implements Pi's proper-lockfile directory-lock protocol for shared stores.
profiling
Package profiling writes Go runtime profiles when PIG_PROFILE names them.
Package profiling writes Go runtime profiles when PIG_PROFILE names them.
resolvepath
Package resolvepath resolves user-supplied resource paths the way Pi's resolvePath does.
Package resolvepath resolves user-supplied resource paths the way Pi's resolvePath does.
scalarjson
Package scalarjson supports JSON-normalized scalar copies without serialization.
Package scalarjson supports JSON-normalized scalar copies without serialization.
shellconfig
Package shellconfig resolves the bash shell PiG runs commands through, mirroring upstream packages/coding-agent/src/utils/shell.ts getShellConfig and getBashShellConfig.
Package shellconfig resolves the bash shell PiG runs commands through, mirroring upstream packages/coding-agent/src/utils/shell.ts getShellConfig and getBashShellConfig.
termuxenv
Package termuxenv prepares a PiG process for Termux on Android.
Package termuxenv prepares a PiG process for Termux on Android.
testbudget
Package testbudget sizes the deadlines tests use to bound a hang.
Package testbudget sizes the deadlines tests use to bound a hang.
testenv
Package testenv checks host capabilities a test needs, so a test runs wherever the host provides them and says why it skipped where the host does not.
Package testenv checks host capabilities a test needs, so a test runs wherever the host provides them and says why it skipped where the host does not.
text
Package text ports upstream packages/coding-agent/src/utils/text.ts: the leading byte order mark helpers every Pi reader applies before parsing user-authored JSON, markdown, and text files.
Package text ports upstream packages/coding-agent/src/utils/text.ts: the leading byte order mark helpers every Pi reader applies before parsing user-authored JSON, markdown, and text files.
toolchain
Package toolchain locates the build tools PiG uses for compiled extension cells and Piglet Binaries, and installs a PiG-managed Go toolchain for users who installed only the pig binary.
Package toolchain locates the build tools PiG uses for compiled extension cells and Piglet Binaries, and installs a PiG-managed Go toolchain for users who installed only the pig binary.
tui/parity
Package parity provides the test harness for TUI byte-level and visible-state parity against upstream pi-tui.
Package parity provides the test harness for TUI byte-level and visible-state parity against upstream pi-tui.
tui/termsim
Package termsim is a headless ANSI terminal simulator for byte-level parity testing.
Package termsim is a headless ANSI terminal simulator for byte-level parity testing.
usagetotals
Package usagetotals sums model usage records.
Package usagetotals sums model usage records.
wordsegmenter
Package wordsegmenter implements word segments used by the terminal editor.
Package wordsegmenter implements word segments used by the terminal editor.
mcp
Package mcp is a small, standalone Model Context Protocol client.
Package mcp is a small, standalone Model Context Protocol client.
mcptest
Package mcptest holds test doubles for package mcp.
Package mcptest holds test doubles for package mcp.
oauth
Package oauth is the MCP OAuth client subset: protected-resource and authorization-server discovery, the PKCE authorization code flow, dynamic client registration, token refresh (one refresh shared by concurrent 401s), and step-up authorization for insufficient_scope.
Package oauth is the MCP OAuth client subset: protected-resource and authorization-server discovery, the PKCE authorization code flow, dynamic client registration, token refresh (one refresh shared by concurrent 401s), and step-up authorization for insufficient_scope.
Package telemetry provides backend-neutral span carriers and in-memory recording.
Package telemetry provides backend-neutral span carriers and in-memory recording.
telemetrytest
Package telemetrytest holds runner-independent conformance cases for telemetry.TelemetryContext adapters.
Package telemetrytest holds runner-independent conformance cases for telemetry.TelemetryContext adapters.
test
extension-conformance/testfixture
Command sdk-fixture is a minimal SDK-based extension for integration testing.
Command sdk-fixture is a minimal SDK-based extension for integration testing.
extension-conformance/testfixture/cmd command
Command sdk-fixture runs the canonical Go SDK conformance extension over a subprocess socket.
Command sdk-fixture runs the canonical Go SDK conformance extension over a subprocess socket.
extension-conformance/testfixture/extensionapi
Package extensionapi is the Go SDK extension of the Pi 0.99.1 extension API conformance rows.
Package extensionapi is the Go SDK extension of the Pi 0.99.1 extension API conformance rows.
extension-conformance/testfixture/modeltypes
Package modeltypes is the Go SDK extension of the typed model operation conformance rows: ctx.modelRegistry's typed reads, getAvailableOfType, classify and registerVirtualModel, and the image and classifier implementations of a provider config and of a Provider object.
Package modeltypes is the Go SDK extension of the typed model operation conformance rows: ctx.modelRegistry's typed reads, getAvailableOfType, classify and registerVirtualModel, and the image and classifier implementations of a provider config and of a Provider object.
integration
Package integration holds end-to-end tests that drive the real `pig` binary through a tmux PTY and assert on captured pane output.
Package integration holds end-to-end tests that drive the real `pig` binary through a tmux PTY and assert on captured pane output.
parity/closure
Package closure stores and verifies the evidence graph used to assess PiG's correspondence with the pinned Pi source.
Package closure stores and verifies the evidence graph used to assess PiG's correspondence with the pinned Pi source.
parity/cmd/asynccheck command
Command asynccheck proves that every upstream source file with Promise/async behavior has an explicit cross-language disposition and durable evidence.
Command asynccheck proves that every upstream source file with Promise/async behavior has an explicit cross-language disposition and durable evidence.
parity/cmd/checkparityran command
Command checkparityran answers one question: did the parity suite actually compare pig against a real pi, or did it just skip?
Command checkparityran answers one question: did the parity suite actually compare pig against a real pi, or did it just skip?
parity/cmd/coverage command
Command coverage produces a markdown report linking parity scenarios to docs/parity/PORT_MAP.md entries.
Command coverage produces a markdown report linking parity scenarios to docs/parity/PORT_MAP.md entries.
parity/cmd/customfactoryledger command
Command customfactoryledger derives the internal custom-UI factory draft ledger from the pinned upstream public interface inventory.
Command customfactoryledger derives the internal custom-UI factory draft ledger from the pinned upstream public interface inventory.
parity/cmd/familygaps command
Command familygaps reports, for one behavior family, which upstream PORT_MAP entries fall within its scope and which lack behavioral verification.
Command familygaps reports, for one behavior family, which upstream PORT_MAP entries fall within its scope and which lack behavioral verification.
parity/cmd/lint command
Command lint validates parity scenarios against quality rules that AGENTS.md declares.
Command lint validates parity scenarios against quality rules that AGENTS.md declares.
parity/cmd/portreconcile command
Command portreconcile produces the honest gap ledger for the Pig port.
Command portreconcile produces the honest gap ledger for the Pig port.
parity/cmd/sdksurface command
Command sdksurface generates docs/extension-sdk-surface.md: every extension-facing surface of Pi's extension API, read from the pinned upstream types.ts and the declarations it re-exports or exposes, with one column per PiG extension runtime (the Node runtime and the Go, Rust and Python SDKs).
Command sdksurface generates docs/extension-sdk-surface.md: every extension-facing surface of Pi's extension API, read from the pinned upstream types.ts and the declarations it re-exports or exposes, with one column per PiG extension runtime (the Node runtime and the Go, Rust and Python SDKs).
parity/cmd/testinventorycheck command
Command testinventorycheck validates the reviewed disposition mapping over the upstream-test inventory.
Command testinventorycheck validates the reviewed disposition mapping over the upstream-test inventory.
parity/cmd/upstreamdelta command
Command upstreamdelta proves that every changed upstream source file in a version leap received an explicit disposition and durable evidence.
Command upstreamdelta proves that every changed upstream source file in a version leap received an explicit disposition and durable evidence.
parity/correspondence
Package correspondence compares pinned Pi source interfaces with PiG targets and produces deterministic review packets.
Package correspondence compares pinned Pi source interfaces with PiG targets and produces deterministic review packets.
parity/internal/gitsnapshot
Package gitsnapshot resolves and validates immutable Git tree identities for parity evidence.
Package gitsnapshot resolves and validates immutable Git tree identities for parity evidence.
parity/knowngaps
Package knowngaps loads test/parity/known-gaps.toml, the one ledger of parity gaps that gates tolerate against the pinned Pi version.
Package knowngaps loads test/parity/known-gaps.toml, the one ledger of parity gaps that gates tolerate against the pinned Pi version.
parity/porter
Package porter exposes the single deterministic process contract used by the direct Porter adapter and the Pig Porter extension.
Package porter exposes the single deterministic process contract used by the direct Porter adapter and the Pig Porter extension.
upstream-parity
Package parity parses upstream pi TypeScript declarations to drive parity tests.
Package parity parses upstream pi TypeScript declarations to drive parity tests.
tui
Package tui provides Pi-compatible terminal rendering, input, components, keybindings, and screen lifecycle management.
Package tui provides Pi-compatible terminal rendering, input, components, keybindings, and screen lifecycle management.
widthx
Package widthx implements Pi's terminal width, grapheme and ANSI operations with JavaScript UTF-16 semantics.
Package widthx implements Pi's terminal width, grapheme and ANSI operations with JavaScript UTF-16 semantics.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL