Installation
Install the Valvet hub and node agent
Hub Installation
Docker (Recommended)
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
Quick Install (Recommended)
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
| Component | Minimum | Recommended |
|---|---|---|
| Hub | 1 CPU, 256MB RAM | 2 CPU, 512MB RAM |
| Node Agent | Minimal overhead | — |
| Disk (Hub) | 100MB + database | Depends on job history |
| OS | Linux (amd64, arm64) | — |