| .github | ||
| .husky | ||
| .pi | ||
| packages | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| biome.json | ||
| CONTRIBUTING.md | ||
| install.sh | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| pi-mono.code-workspace | ||
| pi-test.sh | ||
| public-install.sh | ||
| README.md | ||
| test.sh | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
pi.dev domain graciously donated by
![]()
exe.dev
Co-Mono
Looking for the pi coding agent? See packages/coding-agent for installation and usage.
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 |
Contributing
See CONTRIBUTING.md for contribution guidelines and 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:
curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash
Then run:
co-mono
The installer downloads the latest release archive, writes a launcher to
~/.local/bin/co-mono, and creates a private agent settings directory at
~/.co-mono/agent/settings.json with remote packages.
Preinstalled package sources are:
[
"npm:@e9n/pi-channels",
"npm:pi-memory-md",
"npm:pi-teams"
]
If npm is available, it also tries to install these packages during install.
If a release has not been published yet, the installer can fallback to a source checkout automatically. Set this explicitly with:
CO_MONO_FALLBACK_TO_SOURCE=1 curl -fsSL https://raw.githubusercontent.com/getcompanion-ai/co-mono/main/public-install.sh | bash
Keep it running
Start and keep co-mono alive with your process supervisor of choice (systemd, launchd, supervisor, Docker, etc).
For public installs, a minimal systemd user service is:
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/co-mono.service <<'EOF'
[Unit]
Description=co-mono
After=network-online.target
[Service]
Type=simple
Environment=PI_CODING_AGENT_DIR=%h/.co-mono/agent
Environment=CO_MONO_AGENT_DIR=%h/.co-mono/agent
ExecStart=%h/.local/bin/co-mono
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now co-mono
Local (source)
git clone https://github.com/getcompanion-ai/co-mono.git
cd co-mono
./install.sh
Run:
./co-mono
Run with built-in runtime watchdog:
CO_MONO_RUNTIME_COMMAND="python -m http.server 8765" \
./co-mono --with-runtime-daemon
For a user systemd setup, create ~/.config/systemd/user/co-mono.service with:
[Unit]
Description=co-mono
After=network-online.target
[Service]
Type=simple
Environment=PI_CODING_AGENT_DIR=%h/.co-mono/agent
Environment=CO_MONO_AGENT_DIR=%h/.co-mono/agent
ExecStart=/absolute/path/to/repo/co-mono --with-runtime-daemon
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
Then enable:
systemctl --user daemon-reload
systemctl --user enable --now co-mono
Optional:
npm run build # build all packages
npm run check # lint/format/typecheck
Development
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 checkrequiresnpm run buildto be run first. The web-ui package usestscwhich needs compiled.d.tsfiles from dependencies.
License
MIT