pi.dev domain graciously donated by

exe.dev
# pi
> **Looking for the pi coding agent?** See **[packages/coding-agent](packages/coding-agent)** for installation and usage.
Tools for building AI agents and running the pi coding agent.
## Packages
| Package | Description |
| ---------------------------------------------------------- | ---------------------------------------------------------------- |
| **[@mariozechner/pi-ai](packages/ai)** | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
| **[@mariozechner/pi-agent-core](packages/agent)** | Agent runtime with tool calling and state management |
| **[@mariozechner/pi-coding-agent](packages/coding-agent)** | Interactive coding agent CLI |
| **[@mariozechner/pi-tui](packages/tui)** | Terminal UI library with differential rendering |
| **[@mariozechner/pi-web-ui](packages/web-ui)** | Web components for AI chat interfaces |
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and [AGENTS.md](AGENTS.md) for project-specific rules (for both humans and agents).
## Install
### Public (binary)
Use this for users on production machines where you don't want to expose source.
```bash
curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash
```
Install everything and keep it always-on (recommended for new devices):
```bash
curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash -s -- --daemon --start
```
This installer:
- Downloads the latest release (or falls back to source when needed),
- writes `~/.local/bin/pi` launcher,
- populates `~/.pi/agent/settings.json` with package list,
- installs packages (if `npm` is available),
- and can install a user service for `pi daemon` so it stays alive (`systemd` on Linux, `launchd` on macOS).
Preinstalled package sources are:
```json
["npm:@e9n/pi-channels", "npm:pi-memory-md", "npm:pi-teams"]
```
If `npm` is available, it also installs these packages during install.
If no release asset is found, the installer falls back to source.
```bash
PI_FALLBACK_TO_SOURCE=0 \
curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash -s -- --daemon --start
```
`public-install.sh` options:
```bash
curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash -s -- --help
```
### Local (source)
```bash
git clone https://github.com/getcompanion-ai/co-mono.git
cd co-mono
./install.sh
```
Run:
```bash
./pi
```
Run in background with extensions active:
```bash
./pi daemon
```
For a user systemd setup, create `~/.config/systemd/user/pi.service` with:
```ini
[Unit]
Description=pi daemon
After=network-online.target
[Service]
Type=simple
Environment=CO_MONO_AGENT_DIR=%h/.pi/agent
Environment=PI_CODING_AGENT_DIR=%h/.pi/agent
ExecStart=/absolute/path/to/repo/pi daemon
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
```
Then enable:
```bash
systemctl --user daemon-reload
systemctl --user enable --now pi
```
On macOS, `public-install.sh --daemon --start` now provisions a per-user `launchd` agent automatically.
Optional:
```bash
npm run build # build all packages
npm run check # lint/format/typecheck
```
## Development
```bash
npm install # Install all dependencies
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 (must be run from repo root)
```
> **Note:** `npm run check` requires `npm run build` to be run first. The web-ui package uses `tsc` which needs compiled `.d.ts` files from dependencies.
## License
MIT