Loomplane / Self-host

Running in minutes, yours for good.

You need a Linux host with Docker Engine and Compose 2.24.4 or newer, and a hostname pointed at it. Start with 2 CPU cores and 8 GB of RAM. The loomctl CLI installs with Homebrew or Scoop.

Install

Production on one Docker host.

Download the Docker bundle from a GitHub release, check it against SHA256SUMS and extract it into /srv/loomplane. Set LOOMPLANE_IMAGE, LOOMPLANE_DOMAIN and ACME_EMAIL in .env, then start the stack. Open your hostname and create your account.

  • The API and dashboard, the analysis worker, Postgres 17 and Caddy for HTTPS
  • Containers run as UID 10001 on a read-only root filesystem
  • AMD64 and ARM64 images on GHCR with provenance and SBOM attestations
  • Working on Loomplane itself? make dev gives you hot reload
/srv/loomplanedocker compose
$ umask 077$ cp .env.example .env$ openssl rand -base64 32   # LOOMPLANE_SECRET_KEY$ openssl rand -hex 32      # POSTGRES_PASSWORD$ docker compose config --quiet$ docker compose pull$ docker compose up -d --wait --wait-timeout 240  api, worker, postgres and caddy are healthy# The CLI, on your laptop$ brew install xraph/tap/loomctl
Configuration

The settings that matter.

VariableDefaultWhat it does
LOOMPLANE_DATABASE_URLrequiredPostgreSQL. Falls back to DATABASE_URL, which App Platform and Render set for you
LOOMPLANE_SECRET_KEYdevelopment key32 random bytes, base64. Every credential and secret is encrypted with keys derived from it
LOOMPLANE_PUBLIC_URLhttp://localhost:8780Where people reach Loomplane; https in production
LOOMPLANE_ENVIRONMENTdevelopmentdevelopment, staging or production
LOOMPLANE_PLANNING_APPROVAL_WINDOW168hHow long a plan waits for a decision
LOOMPLANE_DRIFT_INTERVAL30mHow often deployments are checked for drift; 0 turns it off
LOOMPLANE_GITHUB_*unsetThe GitHub App for private repositories
Backups

Back up Loomplane itself

One PostgreSQL database holds everything. Back it up, restore it, and keep the secret key away from those backups.

Upgrades

Safe upgrades

One migration pass over every library's schema, and a schema guard that refuses to start against a database it doesn't understand.

Metrics

Prometheus and health

Metrics and health checks for the API and the analysis worker, so you can watch Loomplane like any other service.

Realtime

Proxy-friendly live state

Proxy /api/v1/realtime/ws with WebSocket upgrades and leave the SSE route unbuffered. Replicas share one durable event sequence.

Email

SMTP when you want it

An empty SMTP host turns email off, and invitations show a link you can send yourself.

Architecture

One process and a worker

The same Go process serves the dashboard and API and runs deployment workflows. The worker analyzes repositories.

Get started

Deploy your monorepo to your own clouds this afternoon.

Open source and self-hosted. Your applications don't need Forge, or Go.

$docker pull ghcr.io/xraph/loomplane:latestServer
$brew install xraph/tap/loomctlCLI
Read the install guide