Installation

Install the Valvet hub and node agent

Hub Installation

docker run -d \
  -p 4865:4865 \
  -v valvet-data:/data \
  --name valvet \
  ghcr.io/lindstrm/valvet

The hub stores its SQLite database and configuration in /data. Mount a volume to persist data across container restarts.

Docker Compose

services:
  valvet:
    image: ghcr.io/lindstrm/valvet
    ports:
      - "4865:4865"
    volumes:
      - valvet-data:/data
    restart: unless-stopped

volumes:
  valvet-data:

Binary

Download the latest release from GitHub Releases and run:

./valvet-hub

The hub listens on port 4865 by default. Set PORT environment variable to change it.

Building from Source

git clone https://github.com/lindstrm/valvet.git
cd valvet
cd frontend && npm install && npm run build && cd ..
cargo build --release -p valvet-hub

The binary will be at target/release/valvet-hub.

Initial Setup

On first launch, visit http://your-host:4865/setup to create the admin account. This page is only available when no users exist in the database.

Node Agent Installation

From the hub’s web UI, go to Nodes → Add Node to generate an enrollment token. Then run the install script on the target machine:

curl -fsSL http://hub:4865/install.sh | sh -s -- \
  --hub http://hub:4865 \
  --token <enrollment-token> \
  --name "my-server"

This downloads the agent binary, enrolls it with the hub, and sets up a systemd service.

Manual Install

Download the valvet-node binary from releases, then:

valvet-node enroll \
  --hub http://hub:4865 \
  --token <enrollment-token> \
  --name "my-server"

valvet-node run

System Requirements

ComponentMinimumRecommended
Hub1 CPU, 256MB RAM2 CPU, 512MB RAM
Node AgentMinimal overhead
Disk (Hub)100MB + databaseDepends on job history
OSLinux (amd64, arm64)