more up to date at codeberg https://codeberg.org/cowie/tau.git
TypeScript 92%
JavaScript 8%
CSS <1%
Shell <1%
C <1%
Nix <1%
<1%
HTML <1%
PowerShell <1%
Batchfile <1%

README.md

pi logo Exy mascot

Pi Agent Harness Mono Repo #

This is the home of the pi agent harness project including our self extensible coding agent.

To learn more about pi:

Packages #

Package Description
pi-ai Unified multi-provider LLM API (OpenAI, Claude Pro, Google, etc.)
pi-agent-core Agent runtime with tool calling and state management
pi-coding-agent Interactive coding agent CLI
pi-mom Slack bot that delegates messages to the pi coding agent
pi-tui Terminal UI library with differential rendering
pi-web-ui Web components for AI chat interfaces
pi-pods CLI for managing vLLM deployments on GPU pods

Contributing #

Development #

npm install --ignore-scripts  # Install all dependencies without running lifecycle scripts
npm run build        # Build all packages
npm run check        # Lint, format, and type check
./test.sh            # Run tests (skips LLM-dependent tests without API keys)
./pi-test.sh         # Run pi from sources (can be run from any directory)

Supply-chain hardening #

We treat npm dependency changes as reviewed code changes.

  • Direct external dependencies are pinned to exact versions. Internal workspace packages remain version-ranged.
  • .npmrc sets save-exact=true and min-release-age=2 to avoid same-day dependency releases during npm resolution.
  • package-lock.json is the dependency ground truth. Pre-commit blocks accidental lockfile commits unless PI_ALLOW_LOCKFILE_CHANGE=1 is set.
  • npm run check verifies pinned direct deps, native TypeScript import compatibility, and the generated coding-agent shrinkwrap.
  • The published CLI package includes packages/coding-agent/npm-shrinkwrap.json, generated from the root lockfile, to pin transitive deps for npm users.
  • Release smoke tests use npm run release:local to build, pack, and create isolated npm and Bun installs outside the repo before publishing.
  • Local release installs, documented npm installs, and pi update --self use --ignore-scripts where supported.
  • CI installs with npm ci --ignore-scripts, and a scheduled GitHub workflow runs npm audit --omit=dev plus npm audit signatures --omit=dev.
  • Shrinkwrap generation has an explicit allowlist for dependency lifecycle scripts; new lifecycle-script deps fail checks until reviewed.

License #

MIT