mirror of
https://github.com/earendil-works/pi.git
synced 2026-06-18 15:54:04 +08:00
90 lines
4.6 KiB
Markdown
90 lines
4.6 KiB
Markdown
<p align="center">
|
|
<a href="https://pi.dev">
|
|
<img alt="pi logo" src="https://pi.dev/logo-auto.svg" width="128">
|
|
</a>
|
|
</p>
|
|
<p align="center">
|
|
<a href="https://discord.com/invite/3cU7Bz4UPx"><img alt="Discord" src="https://img.shields.io/badge/discord-community-5865F2?style=flat-square&logo=discord&logoColor=white" /></a>
|
|
</p>
|
|
<p align="center">
|
|
<a href="https://pi.dev">pi.dev</a> domain graciously donated by
|
|
<br /><br />
|
|
<a href="https://exe.dev"><img src="packages/coding-agent/docs/images/exy.png" alt="Exy mascot" width="48" /><br />exe.dev</a>
|
|
</p>
|
|
|
|
> New issues and PRs from new contributors are auto-closed by default. Maintainers review auto-closed issues daily. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
|
|
---
|
|
|
|
# Pi Agent Harness Mono Repo
|
|
|
|
This is the home of the pi agent harness project including our self extensible coding agent.
|
|
|
|
* **[@earendil-works/pi-coding-agent](packages/coding-agent)**: Interactive coding agent CLI
|
|
* **[@earendil-works/pi-agent-core](packages/agent)**: Agent runtime with tool calling and state management
|
|
* **[@earendil-works/pi-ai](packages/ai)**: Unified multi-provider LLM API (OpenAI, Anthropic, Google, …)
|
|
|
|
To learn more about pi:
|
|
|
|
* [Visit pi.dev](https://pi.dev), the project website with demos
|
|
* [Read the documentation](https://pi.dev/docs/latest), but you can also ask the agent to explain itself
|
|
|
|
## Share your OSS coding agent sessions
|
|
|
|
If you use pi or other coding agents for open source work, please share your sessions.
|
|
|
|
Public OSS session data helps improve coding agents with real-world tasks, tool use, failures, and fixes instead of toy benchmarks.
|
|
|
|
For the full explanation, see [this post on X](https://x.com/badlogicgames/status/2037811643774652911).
|
|
|
|
To publish sessions, use [`badlogic/pi-share-hf`](https://github.com/badlogic/pi-share-hf). Read its README.md for setup instructions. All you need is a Hugging Face account, the Hugging Face CLI, and `pi-share-hf`.
|
|
|
|
You can also watch [this video](https://x.com/badlogicgames/status/2041151967695634619), where I show how I publish my `pi-mono` sessions.
|
|
|
|
I regularly publish my own `pi-mono` work sessions here:
|
|
|
|
- [badlogicgames/pi-mono on Hugging Face](https://huggingface.co/datasets/badlogicgames/pi-mono)
|
|
|
|
## All Packages
|
|
|
|
| Package | Description |
|
|
|---------|-------------|
|
|
| **[@earendil-works/pi-ai](packages/ai)** | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
|
|
| **[@earendil-works/pi-agent-core](packages/agent)** | Agent runtime with tool calling and state management |
|
|
| **[@earendil-works/pi-coding-agent](packages/coding-agent)** | Interactive coding agent CLI |
|
|
| **[@earendil-works/pi-tui](packages/tui)** | Terminal UI library with differential rendering |
|
|
|
|
For Slack/chat automation and workflows see [earendil-works/pi-chat](https://github.com/earendil-works/pi-chat).
|
|
|
|
## Contributing
|
|
|
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and [AGENTS.md](AGENTS.md) for project-specific rules (for both humans and agents).
|
|
|
|
## Development
|
|
|
|
```bash
|
|
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 tagging a release.
|
|
- 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
|