Quickstart
Goal: a verified token reaches a real backend within 5 minutes
from a fresh machine. This page is the in-mdBook mirror of the
samples/nginx-quickstart/
sample — the sample’s README.md is the source of truth for the
exact commands.
Prerequisites
- Docker +
docker compose v2. - A Rust toolchain (the repo pins 1.86) to build the image and run
edssa-client. Any SDK works in place of the CLI.
Availability today
The Community Edition —
edssa-server-ce, the self-hosted verifier binary — is not publicly distributed yet. Two consequences, both of which you will hit as concrete errors rather than as a notice:
- The repository is private.
github.com/edssa-io/edssais not public, sogit clonefails with a permission error unless your account has been granted access. Access is arranged per customer, because the code is BSL 1.1 and part of it is under a patent filing hold — write to support@edssa.io.- The CE image is not on Docker Hub.
edssa/server-ce:1.0.0is referenced throughout the samples but has not been pushed, sodocker pullfails withpull access denied. Publishing is operator-side, after the public migration ofv1.0.0-ce. Every command in these docs runs against an image you build locally from the source tree, so none of them needs the registry.Autopliance, the hosted product, is live and needs none of the above — no source access, no image, no self-hosting. If you want verified traffic and compliance reports today, that is the path that is open: see Autopliance — getting started.
On this page specifically: step 1 clones the tree (so it is the step that needs the granted access above) and step 2 builds the image locally. Everything after those two works offline against that image.
Steps
-
Clone the repo. Stay at the repo root — the image build needs the whole Cargo workspace as its context, not the sample directory.
git clone https://github.com/edssa-io/edssa.git cd edssa -
Build the CE image. The build context is
code/(the binary path-depsedssa-core+edssa-audit):docker build -f samples/nginx-quickstart/Dockerfile.local \ -t edssa-server-ce:dev code/Builds natively on both amd64 and arm64 (Apple Silicon) — the Dockerfile picks
target-cpufrom BuildKit’sTARGETARCH.Then point the sample at it — in
samples/nginx-quickstart/docker-compose.yml, replaceimage: edssa/server-ce:1.0.0withimage: edssa-server-ce:dev. -
Generate a seed. The committed
*.seed.exampleis public placeholder content — replace it before any real traffic.cd samples/nginx-quickstart LC_ALL=C tr -dc 'A-Za-z0-9' < /dev/urandom \ | head -c 1024 > secrets/fleet-c1b2-demo.seed chmod 0400 secrets/fleet-c1b2-demo.seed -
Start the stack.
docker compose up -d -
Verify rejection without a token.
curl -i http://localhost:8080/ # → HTTP/1.1 401 Unauthorized -
Send a verified request.
edssa-clientmints a credential and sends the request itself — it does not print a bare token, so this is one command rather than aTOKEN=$(…)capture.The derivation flags must match the fleet’s manifest entry. The sample’s
ce.tomluses thebalancedpreset, soN=64 C=16 T=33; the CLI defaults (N=32 C=0) will be rejected. Run fromcode/, the Cargo workspace root:cd ../../code cargo run --quiet -p edssa-client --bin edssa-client -- \ --target http://localhost:8080/ \ --fleet c1b2-demo \ --seed ../samples/nginx-quickstart/secrets/fleet-c1b2-demo.seed \ --width-n 64 --chaff-c 16 --threshold-t 33The summary reports
accepts 1, and the server logsedssa accept fleet=c1b2-demo.--bin edssa-clientis required: the crate ships four binaries (edssa-agent,edssa-client,edssa-onboard,edssa-recover) andcargo run -palone cannot choose between them. -
Re-present the credential with
curl(optional — this is the 401-vs-200 contrast in its clearest form).--emit-tokensappends the exact accepted header to a file, one<status> <header>line per request:cargo run --quiet -p edssa-client --bin edssa-client -- \ --target http://localhost:8080/ \ --fleet c1b2-demo \ --seed ../samples/nginx-quickstart/secrets/fleet-c1b2-demo.seed \ --width-n 64 --chaff-c 16 --threshold-t 33 \ --emit-tokens /tmp/edssa-tokens.txt TOKEN=$(awk '{print $2}' /tmp/edssa-tokens.txt | tail -1) curl -i -H "X-EdSSA-Token: $TOKEN" http://localhost:8080/ # → HTTP/1.1 200 OK # → Hello from nginx — auth succeeded.
Beyond the quickstart
- Kubernetes: the
samples/k8s-helm/chart deploys the same shape as a sidecar. - SDKs: Rust, Go, Python and Node bindings exist in-tree. None is
published to a public registry yet, so none can be installed with
cargo add/go get/pip install— see the availability note at the top of the SDK reference.
Time-to-first-token measurement
The Phase-8 exit criterion is “≤ 5 min on a clean macOS / Linux machine”. The measured baseline (mac mini M2, fresh git clone, warm Docker cache) is 3 m 12 s, dominated by:
| Step | Time |
|---|---|
| Clone repo + cd into sample | ~10 s |
Pull edssa/server-ce:1.0.0 (cold cache) | ~30 s |
Pull nginx:1.27-alpine (cold cache) | ~10 s |
| Generate seed | ~5 s |
docker compose up -d to first healthy | ~15 s |
cargo run -p edssa-client (warm target dir) | ~3 s |
| smoke-test the 401 + 200 paths | ~5 s |
A cold cargo build adds ~1 minute on first run; subsequent runs
of the smoke flow are sub-30s.