Composable agent runtime monorepo built on the pi ecosystem
Find a file
Mario Zechner 7323af1f69 fixes #161: stop theme watcher and exit cleanly in print mode
The theme file watcher was keeping the Node.js process alive indefinitely
even in print mode where hot-reload is unnecessary. This simple fix calls
stopThemeWatcher() and process.exit(0) after print mode completes.

- Added stopThemeWatcher() call after runPrintMode() completes
- Added process.exit(0) to ensure clean process termination
- Imported stopThemeWatcher from theme module

This is a minimal fix that addresses the symptom (process hanging) without
changing the theme initialization logic.
2025-12-10 21:16:47 +01:00
.github/workflows Simplified CI setup 2025-12-03 15:12:21 +01:00
.husky Add husky pre-commit hook for formatting and type checking 2025-08-11 21:15:37 +02:00
packages fixes #161: stop theme watcher and exit cleanly in print mode 2025-12-10 21:16:47 +01:00
scripts Fix lockstep versioning and improve documentation 2025-11-13 23:37:43 +01:00
.gitignore support appending content to the system prompt via cli argument 2025-12-05 09:25:10 +02:00
AGENTS.md Update code map with RPC directory structure 2025-12-09 14:14:05 +01:00
biome.json mom: Single accumulated message per run, exclude data dir from biome 2025-11-26 01:21:45 +01:00
LICENSE Initial monorepo setup with npm workspaces and dual TypeScript configuration 2025-08-09 17:18:38 +02:00
package-lock.json Add Mistral as AI provider 2025-12-10 20:36:19 +01:00
package.json Fix version scripts: clean reinstall to avoid npm workspace bug 2025-12-09 21:56:22 +01:00
pi-mono.code-workspace Add ./hooks subpath export for cleaner imports 2025-12-10 00:56:02 +01:00
README.md docs: add CI section with warning about API secrets 2025-12-02 14:52:28 +01:00
tsconfig.base.json Try fixing root level compiles 2025-12-03 14:16:00 +01:00
tsconfig.json Add CI workflow and fix workspace tests 2025-12-02 12:53:53 +00:00

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 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-proxy CORS proxy for browser-based LLM API calls
@mariozechner/pi CLI for managing vLLM deployments on GPU pods

Development

Setup

npm install          # Install all dependencies
npm run build        # Build all packages
npm run check        # Lint, format, and type check

CI

GitHub Actions runs on push to main and on pull requests. The workflow runs npm run check and npm run 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:

npm run dev

Then run with tsx:

cd packages/coding-agent && npx tsx src/cli.ts
cd packages/pods && npx tsx src/cli.ts

Versioning (Lockstep)

All packages MUST always have the same version number. Use these commands to bump versions:

npm run version:patch    # 0.7.5 -> 0.7.6
npm run version:minor    # 0.7.5 -> 0.8.0
npm run version:major    # 0.7.5 -> 1.0.0

These commands:

  1. Update all package versions to the same number
  2. Update inter-package dependency versions (e.g., pi-agent depends on pi-ai@^0.7.7)
  3. Update package-lock.json

Never manually edit version numbers. The lockstep system ensures consistency across the monorepo.

Publishing

Complete release process:

  1. Add changes to CHANGELOG.md (if changes affect coding-agent):

    # Add your changes to the [Unreleased] section in packages/coding-agent/CHANGELOG.md
    # Always add new entries under [Unreleased], never under already-released versions
    
  2. Bump version (all packages):

    npm run version:patch    # For bug fixes
    npm run version:minor    # For new features
    npm run version:major    # For breaking changes
    
  3. Finalize CHANGELOG.md for release (if changes affect coding-agent):

    # Change [Unreleased] to the new version number with today's date
    # e.g., ## [0.7.16] - 2025-11-17
    # NEVER add entries to already-released version sections
    # Each version section is immutable once released
    
  4. Commit and tag:

    git add .
    git commit -m "Release v0.7.16"
    git tag v0.7.16
    git push origin main
    git push origin v0.7.16
    
  5. Publish to npm:

    npm run publish        # Publish all packages to npm
    
  6. Add new [Unreleased] section (for next development cycle):

    # Add a new [Unreleased] section at the top of CHANGELOG.md
    # Commit: git commit -am "Add [Unreleased] section"
    

License

MIT