Composable agent runtime monorepo built on the pi ecosystem
Find a file
2026-03-05 16:35:34 -08:00
.github chore: approve contributor lajarre 2026-03-05 19:21:04 +00:00
.husky fix(installer): add source fallback and make pre-commit staged-file checks 2026-03-05 16:35:34 -08:00
.pi packages 2026-03-05 15:55:27 -08:00
packages chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
scripts chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
.gitattributes chore: add repository .gitattributes for line ending normalization 2026-02-26 01:11:34 +01:00
.gitignore fix(coding-agent): normalize raw git URLs in extension source matching 2026-01-22 14:19:04 +01:00
AGENTS.md Update AGENTS.md 2026-03-04 18:06:26 +01:00
biome.json WIP: Remove global state from pi-ai OAuth/API key handling 2025-12-25 01:01:03 +01:00
CONTRIBUTING.md chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
LICENSE Initial monorepo setup with npm workspaces and dual TypeScript configuration 2025-08-09 17:18:38 +02:00
package-lock.json chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
package.json chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
pi-mono.code-workspace chore: rebrand monorepo references to co-mono 2026-03-05 16:00:17 -08:00
pi-test.sh fix: handle empty args array in pi-test.sh 2026-01-25 23:47:35 +01:00
public-install.sh fix(installer): add source fallback and make pre-commit staged-file checks 2026-03-05 16:35:34 -08:00
README.md fix(installer): add source fallback and make pre-commit staged-file checks 2026-03-05 16:35:34 -08:00
test.sh fix(coding-agent): tighten session_before emit typing and test env filtering 2026-02-06 11:59:25 +01:00
tsconfig.base.json Try fixing root level compiles 2025-12-03 14:16:00 +01:00
tsconfig.json fix(dev): map pi-ai oauth subpath in tsconfig paths 2026-03-04 20:30:10 +01:00

pi logo

Discord Build status

pi.dev domain graciously donated by

Exy mascot
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 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