Skip to content

Configuration

Vorpal uses a layered configuration system. Settings are resolved from three sources in order of precedence (highest to lowest):

  1. CLI flags — Explicit flags on the command line
  2. Project configVorpal.toml in the project root
  3. User config~/.vorpal/settings.json
  4. Built-in defaults

The Vorpal.toml file defines build configuration for a project. It is a TOML file with settings keys at the top level and build-specific sections nested under [source].

These keys control how the CLI connects to services and resolves builds.

KeyTypeDefaultDescription
languagestring"rust"Build configuration language (rust, go, or typescript)
namestring"vorpal"Name of the configuration binary to build
namespacestring"library"Artifact namespace for storage and isolation
registrystring"unix:///var/lib/vorpal/vorpal.sock"Registry service address
systemstringHost systemTarget build system (e.g., aarch64-darwin)
workerstring"unix:///var/lib/vorpal/vorpal.sock"Worker service address

Controls which files are included in the build configuration source.

KeyTypeDescription
includesstring[]List of file paths or directories to include as source input
scriptstringOptional pre-build script to run on the source

Rust-specific source configuration.

KeyTypeDescription
binstringOverride the binary name produced by the Rust build
packagesstring[]Cargo packages to include in the build

Go-specific source configuration.

KeyTypeDescription
directorystringGo module directory containing main.go

TypeScript-specific source configuration.

KeyTypeDescription
entrypointstringTypeScript entrypoint file (default: src/<name>.ts)
directorystringWorking directory for the TypeScript build
KeyTypeDescription
environmentsstring[]Environment variables (KEY=VALUE) passed to the build
language = "rust"
name = "vorpal-config"
[source]
includes = [
"config",
"sdk/rust",
]
[source.rust]
packages = [
"vorpal-config",
"vorpal-sdk",
]
language = "go"
[source]
includes = ["sdk/go"]
[source.go]
directory = "sdk/go/cmd/vorpal"
language = "typescript"
[source]
includes = [
"sdk/typescript/src",
"sdk/typescript/bun.lock",
"sdk/typescript/package.json",
"sdk/typescript/tsconfig.json"
]
[source.typescript]
directory = "sdk/typescript"
entrypoint = "src/vorpal.ts"

User Configuration (~/.vorpal/settings.json)

Section titled “User Configuration (~/.vorpal/settings.json)”

User-level settings are stored as JSON at ~/.vorpal/settings.json. These provide defaults that apply across all projects for the current user.

Override the config directory with the VORPAL_USER_CONFIG_DIR environment variable.

{
"registry": "https://registry.example.com:23151",
"namespace": "my-team",
"worker": "https://worker.example.com:23151"
}

All fields are optional. Only set fields override the built-in defaults.

Terminal window
# Set a user-level value
vorpal config --user set registry "https://registry.example.com:23151"
# Get a value (shows resolved source)
vorpal config get registry
# Show all values with sources
vorpal config show

The lockfile pins source digests per platform to ensure reproducible builds. It is automatically created and updated during builds.

lockfile = 1
[[sources]]
name = "source-name"
digest = "sha256-hex-digest"
platform = "aarch64-darwin"
path = "https://example.com/archive.tar.gz"
includes = []
excludes = []
  • Sources are locked after first resolution
  • Locked sources cannot change without the --unlock flag
  • Each source entry is platform-specific
  • The lockfile should be committed to version control
Terminal window
# Build normally (locked mode - rejects changed sources)
vorpal build my-app
# Update locked sources
vorpal build my-app --unlock

Vorpal stores all data under /var/lib/vorpal/:

PathPurpose
vorpal.sockUnix domain socket for service communication
vorpal.lockAdvisory lock file preventing concurrent server instances (name derived from the socket path stem)
key/TLS certificates, keypairs, and credentials
store/artifact/alias/Named references mapping aliases to artifact digests
store/artifact/archive/Compressed (zstd) artifact archives
store/artifact/config/Compiled configuration outputs
store/artifact/output/Unpacked artifact outputs
sandbox/Isolated build workspaces

The system configuration value accepts these platform identifiers:

ValuePlatform
aarch64-darwinmacOS Apple Silicon
x86_64-darwinmacOS Intel
aarch64-linuxLinux ARM64
x86_64-linuxLinux x86_64