Skip to content

Development

See AGENTS.md for additional guidelines.

Terminal window
git clone https://github.com/earendil-works/pi-mono
cd pi-mono
npm install
npm run build

Run from source:

Terminal window
/path/to/pi-mono/pi-test.sh

The script can be run from any directory. Pi keeps the caller’s current working directory.

Configure via package.json:

{
"piConfig": {
"name": "pi",
"configDir": ".pi"
}
}

Change name, configDir, and bin field for your fork. Affects CLI banner, config paths, and environment variable names.

Three execution modes: npm install, standalone binary, tsx from source.

Always use src/config.ts for package assets:

import { getPackageDir, getThemeDir } from "./config.js";

Never use __dirname directly for package assets.

/debug (hidden) writes to ~/.pi/agent/pi-debug.log:

  • Rendered TUI lines with ANSI codes
  • Last messages sent to the LLM
Terminal window
./test.sh # Run non-LLM tests (no API keys needed)
npm test # Run all tests
npm test -- test/specific.test.ts # Run specific test
packages/
ai/ # LLM provider abstraction
agent/ # Agent loop and message types
tui/ # Terminal UI components
coding-agent/ # CLI and interactive mode