INSTALL

Install methods (uv, pipx, dev), update path, uninstall, troubleshooting, supported platforms.

02 / 16·guide·v0.14.4

alpi runs on Linux and macOS. Windows users are expected to install under WSL2 — native Windows is not supported because alpi relies on POSIX primitives (Unix-domain sockets, sandbox helpers, launchd / systemd service backends). The path is the same as Linux once WSL2 is up.

The PyPI package is alpi-agent. The binary, import, and home directory are alpi:

uv tool install alpi-agent     # install
alpi setup                     # use

Requirements

alpi runs the same daemon and home layout in three shapes: native (the personal agent next to your shell), Docker (headless fleet daemons), and Kubernetes (the same image as a stateful workload).

NativeDockerKubernetes
PlatformLinux, macOS (Windows → WSL2)any Docker hostany cluster
Python3.10–3.13 (uv manages it)in the imagein the image
Node.js24 LTS on the service PATH — needed for npx-launched MCP servers and npm project gates; optional if you use neitherin the imagein the image
gitrequired when the daemon clones projects (workgroup recipes, repo-working agents); plus openssh-client for SSH-URL clones. A chat-only agent needs neitherin the imagein the image
Service managerlaunchd (macOS) / systemd user + lingering (Linux) — installed by alpi setup--restart unless-stoppedthe pod controller
State~/.alpi + your workspacea volume at /data, owned by UID/GID 1000a PVC at /data (RWO), runAsUser/fsGroup 1000
Inbound networknone required; ALP 7423 + host plane 49200 only when peers or paired apps dial in — bind a private/overlay address (Tailscale, WireGuard)publish both ports on a private address; override with ALPI_ALP_TCP_PORT / ALPI_HOST_TCP_PORTa Service on both TCP ports
Outbound networkHTTPS to your model provider (or a local Ollama)same, plus GitHub + npm registry only when recipes clone projectssame

Docker. The official image is satoshiltd/alpi (Python + Node 24 + git + ssh client; entrypoint alpi-docker; HOME=/data, so /data/.alpi is the daemon home). One daemon per container; reach the TUI with docker exec -it <name> alpi. Full guide: docker/README.md and the fleet shapes in DEPLOYMENTS.md.

Kubernetes. No manifests or Helm chart ship yet, but the image runs as a plain stateful, single-writer workload — see the Kubernetes section of docker/README.md for the constraints that matter (replicas: 1, PVC, ALPI_NETWORK_HOST, probes, secrets).

uv is alpi's recommended installer. It puts alpi in its own isolated environment, makes upgrades a single command, and never pollutes your system Python.

# Install uv if you don't have it already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install alpi
uv tool install alpi-agent

# Run the setup wizard, then start chatting
alpi setup
alpi

Pin a specific version with uv tool install alpi-agent==0.3.0.

The first alpi setup auto-installs the alpi daemon — one launchd plist on macOS (com.alpi.daemon), one systemd-user unit on Linux (alpi-daemon.service) — and starts it. The daemon supervises every profile under ~/.alpi/, so a single install gets you 24/7 cron + ALP listener for every profile you create. Manage it later with alpi daemon {status,restart,uninstall} or from alpi setup → Services → Daemon.

Linux note. systemctl --user services die when you log out unless lingering is enabled. The install runs loginctl enable-linger $USER automatically; on minimal containers / WSL without systemd=true, loginctl may be missing — alpi logs a warning and you'll need to keep the daemon foregrounded under tmux / screen, or fix lingering by hand.

The first time the agent runs the browser tool, alpi downloads Chromium (~200 MB, one-time, cached at ~/.cache/ms-playwright/). No separate install command. If you never use the browser tool, nothing is downloaded.

Alternative — pipx install

If you already use pipx for your Python tools, the same package works:

pipx install alpi-agent
alpi setup

Updating

alpi update

alpi update checks PyPI for a newer version, shows what changed, and runs uv tool upgrade alpi-agent (or pipx upgrade alpi-agent) on confirmation. There is no auto-update at launch — alpi never reaches the network unless you ask it to.

You don't have to remember to run it: alpi already checks PyPI in the background once every eight hours and surfaces the result in two places —

alpi update --check does just the check and tells you whether an upgrade exists, without installing anything.

To pin an older version intentionally:

uv tool install alpi-agent==0.2.99 --force

Uninstalling

uv tool uninstall alpi   # or: pipx uninstall alpi
rm -rf ~/.alpi           # only if you want to drop profiles too

~/.alpi holds your profiles, keys, memory, and logs. The uninstaller leaves it in place by default so you can reinstall and pick up where you left off.

Developing alpi

If you're contributing or hacking on alpi, install from source:

git clone https://github.com/satoshi-ltd/alpi
cd alpi
uv sync
uv run alpi

uv sync creates a venv from the lock file. Tests run with uv run pytest tests/. Manual integration tests live under tests/manual/ and are not collected by pytest — read tests/manual/README.md before running them.

Why we don't ship other install paths

Troubleshooting

theme