xbp 10.12.2

XBP is a zero-config build pack that can also interact with proxies, kafka, sockets, synthetic monitors.
Documentation

XBP

XBP is the XYLEX Build Pack: a build, deployment, and operations toolkit for modern applications and multi-service projects.

current version: 10.12.2

What It Does

  • Builds and deploys Rust, Node.js, Next.js, Python, Express, and mixed-service projects
  • Manages PM2 processes, snapshots, resurrection, logs, and runtime inspection
  • Works with nginx, ports, secrets, diagnostics, and deployment configuration
  • Tracks versions across manifests and git tags
  • Supports local workflows and server-side operations from one CLI

Install

Release binaries can be used directly, or build from source with Rust.

git clone https://github.com/xylex-group/xbp.git
cd xbp
cargo build --release
./target/release/xbp --help

To install from Cargo:

cargo install xbp-cli

Quick Start

xbp ports
xbp services
xbp service build api
xbp redeploy api
xbp snapshot
xbp version

Configuration

XBP looks for configuration in this order:

  1. .xbp/xbp.yaml
  2. .xbp/xbp.yml
  3. .xbp/xbp.json
  4. xbp.yaml
  5. xbp.yml
  6. xbp.json

Both JSON and YAML are supported. A project version defaults to 0.1.0.

Minimal YAML

project_name: my-app
version: 0.1.0
port: 3000
build_dir: /path/to/project

Multi-Service Example

project_name: my-stack
version: 0.1.0
port: 3000
build_dir: /srv/my-stack

services:
  - name: api
    target: rust
    branch: main
    port: 3000
    root_directory: apps/api
    url: https://api.example.com
    commands:
      install: cargo fetch
      build: cargo build --release
      start: ./target/release/api

  - name: web
    target: nextjs
    branch: main
    port: 3001
    root_directory: apps/web
    commands:
      install: pnpm install
      build: pnpm run build
      start: pnpm run start

Core Fields

  • project_name: project name
  • version: semantic version for the project
  • port: primary project port
  • build_dir: absolute project path
  • services: optional service list for multi-service projects
  • environment: optional environment variables

Service Fields

  • name: service name
  • target: rust, nextjs, nodejs, python, or expressjs
  • branch: deployment branch
  • port: service port
  • root_directory: optional service working directory
  • url: optional public URL
  • healthcheck_path: optional health path
  • commands: optional pre, install, build, start, and dev commands

Common Commands

Project And Services

  • xbp services
  • xbp service build <name>
  • xbp service install <name>
  • xbp service start <name>
  • xbp service dev <name>
  • xbp redeploy <name>

Runtime And Operations

  • xbp list
  • xbp logs [project]
  • xbp ports
  • xbp ports --nginx
  • xbp ports --full
  • xbp diag
  • xbp nginx list
  • xbp nginx show <domain>
  • xbp nginx edit <domain>
  • xbp curl <domain>

PM2 Shortcuts

  • xbp snapshot
  • xbp resurrect
  • xbp stop <target>
  • xbp flush [target]
  • xbp monitor
  • xbp env <pm2-name>

Config, Setup, And Secrets

  • xbp setup
  • xbp config
  • xbp config --project
  • xbp secrets pull
  • xbp secrets verify

Versioning

  • xbp version
  • xbp version --git
  • xbp version major
  • xbp version minor
  • xbp version patch
  • xbp version <x.y.z>

Version Management

xbp version reads and writes versions across common project files and git tags. It normalizes v1.2.3 and 1.2.3 as the same version and can bump or set versions across supported manifests from one command.

Default tracked files include:

  • README.md
  • openapi.yaml
  • Cargo.toml
  • Cargo.lock
  • package.json
  • package-lock.json
  • xbp.yaml
  • xbp.json
  • .xbp/xbp.yaml
  • .xbp/xbp.json

The tracked file registry is synced into the global XBP config directory through versioning-files.yaml. Missing defaults are restored automatically without removing user-added entries.

PM2 Behavior

XBP uses PM2 as an execution layer for many runtime workflows.

  • Deployments can start or restart services under PM2
  • xbp snapshot stores PM2 state for later restore
  • xbp resurrect first tries native PM2 restore, then falls back to the latest XBP snapshot
  • xbp env <name> resolves a PM2 name to its PM2 id and prints the PM2 environment

Ports And Diagnostics

xbp ports reconciles listening ports, nginx upstreams, and configured XBP project ports. xbp diag checks known service ports and highlights ports owned by recognized XBP projects.

Repository Layout

  • src/main.rs: CLI entrypoint
  • src/lib.rs: library exports
  • src/cli/: argument parsing and command dispatch
  • src/commands/: command implementations
  • src/strategies/: deployment and project strategy logic
  • src/sdk/: integrations such as PM2 and nginx
  • src/utils/: shared helpers

Development

cargo fmt
cargo test

License

MIT