Installation¶
beampipe-core v2 ships as one Rust CLI binary named beampipe. Operators should prefer a released binary on PATH; Docker Compose is the typical local or small-deploy stack; cargo run is for Rust development only.
One binary¶
The CLI is defined as beampipe in crates/beampipe-cli/Cargo.toml. The Docker image sets ENTRYPOINT ["beampipe"], so container commands map directly to host commands.
| Command | Purpose |
|---|---|
beampipe init |
Generate local/production config and a secret-free .env.example |
beampipe setup |
Guided PostgreSQL, admin, CASDA, DALiuGE, SLURM, profile, and worker setup |
beampipe doctor |
Run configuration and live dependency diagnostics |
beampipe console |
Open the live terminal operator interface |
beampipe migrate |
Apply database migrations |
beampipe admin create-user |
Create an operator account |
beampipe serve |
Run the HTTP API, optionally with embedded scheduler/worker ticks |
beampipe serve --worker false |
API-only process |
beampipe worker |
Worker-only process |
beampipe project validate |
Validate project config YAML/JSON |
beampipe wasm upload |
Upload WASM hook modules |
beampipe slurm ping |
Smoke-test a Slurm SSH deployment profile |
beampipe openapi export |
Export the OpenAPI contract |
Preferred: binary on PATH¶
Download a release archive, verify it against SHA256SUMS, put beampipe on PATH,
then bootstrap the database and API:
Run worker capacity from another shell:
export DATABASE_URL=postgres://postgres:postgres@localhost:5432/beampipe
BEAMPIPE_WORKER_SCHEDULER_ENABLED=false beampipe worker
For production-style process splits, run exactly one scheduler-enabled process and any number of API/worker-only replicas:
beampipe serve --worker false
BEAMPIPE_WORKER_SCHEDULER_ENABLED=true beampipe serve --worker true
BEAMPIPE_WORKER_SCHEDULER_ENABLED=false BEAMPIPE_WORKER_CONCURRENCY=4 beampipe worker
Build from source¶
Use this path when a release artifact is not available for the target host.
git clone https://github.com/jbwod/beampipe-core-v2.git
cd beampipe-core-v2
cargo build --release -p beampipe-cli --bin beampipe
Run the built binary directly:
target/release/beampipe init --directory operator-local
cd operator-local
../target/release/beampipe setup
../target/release/beampipe doctor
../target/release/beampipe serve --worker false
Or install it into Cargo's binary directory:
Docker Compose¶
Docker Compose starts PostgreSQL, an API process, a scheduler process, and worker replicas. The base file uses mock external backends and requires no SSH secret. Setup still owns migrations and initial administrator creation.
docker compose build api
cp .env.example .env
docker compose up -d postgres
docker compose run --rm api migrate
docker compose run --rm api admin create-user \
--username admin \
--password 'replace-this-local-password' \
--email admin@example.test
docker compose up -d api scheduler worker
Compose services:
| Service | Runtime |
|---|---|
postgres |
PostgreSQL on :5432 |
api |
beampipe serve --worker false on :8080 |
scheduler |
beampipe serve --worker true for recurring ticks |
worker |
beampipe worker, scaled by Compose |
Optional observability:
Prometheus is exposed on http://127.0.0.1:9099.
Development with cargo run¶
Use cargo run only when hacking Rust on the host. It is the same command surface after Cargo compiles:
docker compose up -d postgres
export DATABASE_URL=postgres://postgres:postgres@localhost:5432/beampipe
export BEAMPIPE_JWT_SECRET=replace-with-at-least-32-random-characters
cargo run -p beampipe-cli --bin beampipe -- migrate
cargo run -p beampipe-cli --bin beampipe -- admin create-user \
--username admin \
--password 'replace-this-local-password' \
--email admin@example.test
cargo run -p beampipe-cli --bin beampipe -- serve
Health check¶
curl -s http://127.0.0.1:8080/api/v2/health | jq .
curl -s http://127.0.0.1:8080/api/v2/ready | jq .
Next: run First run to register a source, discover metadata, and queue a dry execution.