- Added dev:install script to streamline local development setup across all workspace packages.
Pi Monorepo
Tools for building AI agents and managing LLM deployments.
Packages
| Package | Description |
|---|---|
| @mariozechner/pi-ai | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
| @mariozechner/pi-agent-core | Agent runtime with tool calling and state management |
| @mariozechner/pi-coding-agent | Interactive coding agent CLI |
| @mariozechner/pi-mom | Slack bot that delegates messages to the pi coding agent |
| @mariozechner/pi-tui | Terminal UI library with differential rendering |
| @mariozechner/pi-web-ui | Web components for AI chat interfaces |
| @mariozechner/pi-pods | CLI for managing vLLM deployments on GPU pods |
Development
Setup
bun install # Install all dependencies
bun run build # Build all packages
bun run check # Lint, format, and type check
Note:
bun run checkrequiresbun run buildto be run first. The web-ui package usestscwhich needs compiled.d.tsfiles from dependencies.
CI
GitHub Actions runs on push to main and on pull requests. The workflow runs bun run check and bun test for each package in parallel.
Do not add LLM API keys as secrets to this repository. Tests that require LLM access use describe.skipIf() to skip when API keys are missing. This is intentional:
- PRs from external contributors would have access to secrets in the CI environment
- Malicious PR code could exfiltrate API keys
- Tests that need LLM calls are skipped on CI and run locally by developers who have keys configured
If you need to run LLM-dependent tests, run them locally with your own API keys.
Development
Start watch builds for all packages:
bun run dev
Then run directly with Bun:
cd packages/coding-agent && bunx tsx src/cli.ts
cd packages/pods && bunx tsx src/cli.ts
Versioning (Lockstep)
All packages MUST always have the same version number. Use these commands to bump versions:
bun run version:patch # 0.7.5 -> 0.7.6
bun run version:minor # 0.7.5 -> 0.8.0
bun run version:major # 0.7.5 -> 1.0.0
These commands:
- Update all package versions to the same number
- Update inter-package dependency versions (e.g.,
pi-agentdepends onpi-ai@^0.7.7) - Update
bun.lockb
Note: Version bumping uses npm version -ws since Bun doesn't yet have workspace version equivalent.
Never manually edit version numbers. The lockstep system ensures consistency across the monorepo.
Publishing
bun run release:patch # Bug fixes
bun run release:minor # New features
bun run release:major # Breaking changes
This handles version bump, CHANGELOG updates, commit, tag, publish, and push.
Note: Publishing uses npm publish since Bun delegates to npm for publishing.
NPM Token Setup: Requires a granular access token with "Bypass 2FA on publish" enabled.
- Go to https://www.npmjs.com/settings/badlogic/tokens/
- Create a new "Granular Access Token" with "Bypass 2FA on publish"
- Set the token:
npm config set //registry.npmjs.org/:_authToken=YOUR_TOKEN
License
MIT