VerdifaX

Quickstart — Docker

Spin up the entire nine-stage Verdifax pipeline as a single container. No Go toolchain, no manual builds.

1. Pull and run

docker run -d --rm \
  --name verdifax-api \
  -p 9090:9090 \
  -p 9091:9091 \
  ghcr.io/verdifax/api:latest
  • Port 9090 exposes the REST API.
  • Port 9091 exposes the compliance dashboard SPA.
  • The image is alpine-based and well under 20 MB.

2. Confirm it's alive

curl -s http://localhost:9090/health | python3 -m json.tool

Expected:

{
  "ok": true,
  "service": "verdifax-orchestrator-api",
  "version": "1.0.0",
  "time": "2026-04-30T03:35:04Z"
}

3. Run your first attestation

curl -s -X POST http://localhost:9090/execute \
  -H "Content-Type: application/json" \
  -d '{
    "payload_text": "hello verdifax",
    "program_id":   "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "route_id":     "route-test",
    "registry_record_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
  }' | python3 -m json.tool

The response includes the full sealed manifest plus run_id and duration_ms.

4. Open the dashboard

open http://localhost:9091/

You'll see the run you just made, with the manifest hash, every stage's output, a "Verify" button that re-derives the seal, and a "Download audit report (PDF)" link.

For the full stack with persistence:

git clone https://github.com/verdifax/verdifax-orchestrator
cd verdifax-orchestrator
docker compose up -d --build

The compose file maps both ports, mounts a named volume for the SQLite run-history, and starts a small nginx sidecar that serves the interactive nine-stage pipeline UI on port 8080.

Configuration

Every flag has an environment-variable equivalent (12-factor):

FlagEnv varDefault
--portVERDIFAX_PORT9090
--dashboard-portVERDIFAX_DASHBOARD_PORT9091
--db-pathVERDIFAX_DB_PATHverdifax.db
--log-levelVERDIFAX_LOG_LEVELinfo
--cors-originsVERDIFAX_CORS_ORIGINS*
--rate-limitVERDIFAX_RATE_LIMIT100 (req/min/key)

Continue