Installation
LeapView ships as a public multi-architecture container image. Pulling that image is the primary onboarding path; no source checkout, registry login, or installer is required. One running container with one persistent state volume is one LeapView instance.
Current controlled-testing release
The supported candidate is
v0.2.0-rc.1,
built from revision
dfb3086d59284c6597180e99a7d07f41e36a7f7e.
It is a release candidate for controlled testing, not GA. Its immutable image
is:
ghcr.io/yacobolo/leapview@sha256:8b32fc291c86005c69c2ca1fa673dcaa4cb84d39cfc951e065a2775b122f81d9
Download the version-matched operations bundle and checksum for the machine
that will run leapviewctl:
| Operating system | Architecture | Archive | Checksum |
|---|---|---|---|
| Linux | amd64 | leapview-compose-v0.2.0-rc.1-linux-amd64.tar.gz | SHA-256 |
| Linux | arm64 | leapview-compose-v0.2.0-rc.1-linux-arm64.tar.gz | SHA-256 |
| macOS | amd64 | leapview-compose-v0.2.0-rc.1-darwin-amd64.tar.gz | SHA-256 |
| macOS | arm64 | leapview-compose-v0.2.0-rc.1-darwin-arm64.tar.gz | SHA-256 |
Before you begin
Install Docker Engine. The five-minute path below needs no source checkout, registry login, Go, Bun, Task, manual YAML, or external dataset. A public production instance additionally needs Docker Compose, a DNS name, HTTPS, durable secret storage, and off-host backups.
Run the five-minute evaluation
Pull the public image and start its self-contained evaluator:
IMAGE='ghcr.io/yacobolo/leapview@sha256:8b32fc291c86005c69c2ca1fa673dcaa4cb84d39cfc951e065a2775b122f81d9'
docker pull "$IMAGE"
docker run --detach --name leapview-evaluate --init \
--publish 127.0.0.1:8080:8080 \
--volume leapview-evaluate:/var/lib/leapview \
"$IMAGE" evaluate
The evaluator generates private runtime secrets, creates a forced-change local administrator, stages the small synthetic dataset shipped in the image, and atomically deploys one disposable workspace. It prints no secret to the container log. Wait for the health check, then consume the credentials once:
docker exec leapview-evaluate leapview healthcheck
docker exec leapview-evaluate leapview evaluate first-login
Open http://localhost:8080, sign in, and change the temporary password. Choose Five-minute Sales Evaluation, select a State, and confirm that the Orders KPI, revenue chart, and governed order table update together. This exercises authentication, immutable serving-state deployment, managed data, semantic query planning, DuckDB execution, filters, and table rendering.
The 127.0.0.1 publish address is part of the security boundary. Evaluation
mode intentionally uses local HTTP and generated local secrets; do not expose
it on a LAN or the internet and do not treat the synthetic workspace as
production seeding.
Persistence, diagnostics, and cleanup
The named volume preserves the initialized instance, changed password, managed data, and active deployment:
docker restart leapview-evaluate
docker exec leapview-evaluate leapview healthcheck
If initialization does not become healthy, inspect the deterministic bootstrap log and container state:
docker logs leapview-evaluate
docker inspect --format '{{.State.Health.Status}}' leapview-evaluate
first-login is deliberately one-time. If its output was lost, reset the
disposable evaluator. Removing the container does not remove its volume:
docker rm --force leapview-evaluate
Delete the persisted evaluation instance only when a full reset is intended:
docker volume rm leapview-evaluate
The evaluator is pinned to the supported candidate digest so that the instructions, runtime, and retained evidence cannot drift independently.
Move beyond the sample
The bundled synthetic project exists only to qualify the product journey. To connect real data, start with Connect a data source. For a durable or externally reachable instance, use the versioned Compose release below; it adds immutable image pinning, HTTPS, backups, and state-aware upgrades.
Run a durable production instance
The released Compose package is the recommended operations layer around the same public image. It is not a separate LeapView distribution. It supplies hardened container settings, generated production secrets, optional Caddy HTTPS, validated backup and restore, and paired image-and-state rollback.
- Select, download, verify, and extract the current platform archive:
VERSION='v0.2.0-rc.1'
case "$(uname -s)" in
Linux) OS=linux ;;
Darwin) OS=darwin ;;
*) echo "unsupported OS: $(uname -s)" >&2; exit 1 ;;
esac
case "$(uname -m)" in
x86_64|amd64) ARCH=amd64 ;;
arm64|aarch64) ARCH=arm64 ;;
*) echo "unsupported architecture: $(uname -m)" >&2; exit 1 ;;
esac
ARCHIVE="leapview-compose-${VERSION}-${OS}-${ARCH}.tar.gz"
BASE="https://github.com/flidai/leapview/releases/download/${VERSION}"
curl --fail --location --remote-name "$BASE/$ARCHIVE"
curl --fail --location --remote-name "$BASE/$ARCHIVE.sha256"
if command -v sha256sum >/dev/null 2>&1; then
sha256sum --check "$ARCHIVE.sha256"
else
shasum -a 256 --check "$ARCHIVE.sha256"
fi
tar -xzf "$ARCHIVE"
cd "${ARCHIVE%.tar.gz}"
if command -v sha256sum >/dev/null 2>&1; then
sha256sum --check SHA256SUMS
else
shasum -a 256 --check SHA256SUMS
fi
-
Confirm every checksum reports
OK. The archive contains an immutable application image reference, the base Compose stack, an optional Caddy HTTPS overlay, and the native Goleapviewctloperations binary. -
Copy the deployment template and initialize the instance:
cp deployment.env.example deployment.env
./leapviewctl init \
--admin-email admin@example.com \
--domain dash.example.com \
--environment prod
- Start the instance and consume the one-time credentials:
./leapviewctl start
./leapviewctl first-login
Before adoption, run the archive's bundled ./qualification/qualify.sh.
QUALIFICATION.md maps every automated assertion to the corresponding human
check, including anonymous distribution, the five-minute sample, audited
authorization denial, restart persistence, and an isolated restore using the
separately managed secret configuration.
Initialization treats --domain as the canonical public hostname and derives LEAPVIEW_PUBLIC_URL=https://<domain>, the allowed host, and the Caddy domain from it. It also generates production secrets, creates the persistent volume, validates the resulting production configuration, and atomically creates a forced-change local administrator plus a restricted publisher token. first-login prints and deletes that one-time credential file.
leapviewctl is an optional production operations controller, not a prerequisite for pulling or running LeapView. It invokes the installed Docker Compose CLI and does not require Bash or direct access to the Docker socket API. You may manage the image with your existing container platform if it preserves the same single-process, persistent-home, initialization, backup, and environment contracts.
Operators integrating the image directly must set the documented production
environment first, run leapview admin initialize --format json, store its
one-time output securely, acknowledge that output, and then start leapview serve --production. The Compose controller performs those steps atomically.
The Caddy overlay is enabled by default. Pass --no-https only when an existing trusted HTTPS proxy fronts the localhost-bound application port. This changes where TLS terminates, not the external scheme: the generated public URL remains HTTPS, secure cookies remain enabled, and forwarded host and scheme headers must come only from that trusted proxy.
Understand the instance boundary
All application-owned local state is under /var/lib/leapview in one named volume. External customer sources such as S3 remain external and are not included in instance backups. Local managed uploads are included; S3-backed managed uploads require bucket-native backup and versioning.
Use separate Compose project directories and names for development, staging, and production. Never scale one project to multiple application containers or point two processes at the same volume.
Common operations are:
./leapviewctl status
./leapviewctl logs
./leapviewctl backup
./leapviewctl restore backups/leapview-<timestamp>.tar.gz
./leapviewctl upgrade ghcr.io/flidai/leapview@sha256:<digest>
./leapviewctl rollback --confirm
Upgrades create a state checkpoint. A failed health check restores both the previous image and state; manual rollback requires confirmation because it discards state created after the checkpoint.
Contributor installation
Source checkout is the contributor workflow, not the production packaging path. Install the Go version from go.mod, Bun, and Task, then run:
task node:deps
task generate
task dev
Use task dev:status, task dev:logs, and task dev:stop for the worktree-local server. Run task ci before handing off substantial changes.
Validate
For the local image path, run docker inspect --format '{{.State.Health.Status}}' leapview and expect healthy. For Compose, run docker compose config --quiet and ./leapviewctl status. A production application container must report healthy, and its resolved image must include a sha256 digest.
For a released Compose archive, verify that every shipped surface has the same identity before trusting the deployment:
sha256sum --check leapview-compose-*.tar.gz.sha256
cat release-identity.json
./leapviewctl version --json
LEAPVIEW_IMAGE="$(cat image-reference.txt)"
docker image inspect "$LEAPVIEW_IMAGE" \
--format '{{index .Config.Labels "org.opencontainers.image.version"}} {{index .Config.Labels "org.opencontainers.image.revision"}}'
docker run --rm "$LEAPVIEW_IMAGE" version --json
The semantic version and full Git revision must agree across
release-identity.json, leapviewctl, the server binary, and the OCI labels.
A release reports "dirty": false and "development": false; an ordinary
local or candidate build reports version development and can never claim the
release version. LeapView uses the release commit timestamp as buildTime so
the identity remains reproducible.
After startup, compare the same identity through the authenticated capabilities endpoint using a token authorized to use a workspace:
curl --fail --silent --show-error \
--header "Authorization: Bearer $LEAPVIEW_API_TOKEN" \
"$LEAPVIEW_PUBLIC_URL/api/v1/capabilities"
The /api/v1/capabilities response fields buildVersion, buildRevision,
buildTime, buildDirty, and buildDevelopment must match the packaged
identity.
Verify
Open the configured HTTPS URL, sign in with the temporary administrator credentials, and change the password when prompted. Then create a backup with ./leapviewctl backup and confirm that both the archive and its checksum exist in backups/.
Troubleshooting
Use ./leapviewctl logs when startup or health checks fail. A second process cannot open the same state volume, and an instance initialized for one environment cannot be started as another; use a separate Compose project and volume instead of changing LEAPVIEW_ENVIRONMENT.
Next steps
Continue with Self-hosting, Connect a data source, and Build your first dashboard.
The commands above illustrate the installation workflow. Use the generated admin CLI reference, serve CLI reference, and environment variable reference for the exact current command and runtime contracts.