Docs / Getting Started

10‑minute quickstart

Connect Gvner, register a runtime, approve one policy, and export evidence — end to end.

Prerequisites

Tenant ID + tenant token
API base URL (e.g., http://<host>/api)
One runtime or agent to register

How to use

1. Connect

Configure API base + tenant token.

2. Register runtime

Attach a runtime so intents are governed.

3. Approve policy

Dry‑run, request, and approve a policy change.

4. Export evidence

Generate regulator‑ready evidence packets.

One‑command script

Copy, paste, and run. (Remove | jq if jq is not installed.)

curl -sL https://gvner.com/docs/getting-started/quickstart.sh | BASE_URL="http://209.46.122.136/api" TENANT_ID="acme" TOKEN="<YOUR_TENANT_TOKEN>" bash

1) Set your environment

export BASE_URL="http://209.46.122.136/api" export TENANT_ID="acme" export TOKEN="<YOUR_TENANT_TOKEN>"
Tenant connection screen

2) Test the connection

curl -s "$BASE_URL/capabilities?tenant_id=$TENANT_ID" \ -H "X-Tenant-Token: $TOKEN" | jq

You should see allowed capabilities for the tenant.

3) Register a runtime (SimpleClaw)

curl -s -X POST "$BASE_URL/simpleclaw/register" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme","runtime_id":"simpleclaw-01","deploy_source":"simpleclaw","image_hash":"sha256:demo","profile_id":"internal_ops"}' | jq

This registers a runtime so Gvner can govern execution requests.

4) Run a policy dry‑run

curl -s -X POST "$BASE_URL/policy/dry-run" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme","binding_id":"PB-001","knowledge_id":"K-001","scope":["write_files"],"prohibited_actions":["export"],"justification":"Initial governance policy","author":"compliance","scenarios":[{"action":"write_files","scopes":["write_files"],"requested_budget":10}]}' | tee /tmp/gvner-dryrun.json | jq
DRY_RUN_ID=$(python3 - <<'PY' import json print(json.load(open("/tmp/gvner-dryrun.json"))["dry_run_id"]) PY )
Policy dry-run and approvals

5) Submit and approve the policy change

curl -s -X POST "$BASE_URL/policy/change-request" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme","binding_id":"PB-001","knowledge_id":"K-001","scope":["write_files"],"prohibited_actions":["export"],"justification":"Initial governance policy","author":"compliance","required_approvals":1,"dry_run_id":"'"$DRY_RUN_ID"'","proposed_by":"security"}' | tee /tmp/gvner-change.json | jq
CHANGE_ID=$(python3 - <<'PY' import json print(json.load(open("/tmp/gvner-change.json"))["change_id"]) PY ) curl -s -X POST "$BASE_URL/approvals/approve" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme","change_id":"'"$CHANGE_ID"'","approver":"security"}' | jq

6) Simulate a decision

curl -s -X POST "$BASE_URL/policy/simulate" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme","scenarios":[{"action":"write_files","scopes":["write_files"],"requested_budget":5}]}' | jq

7) Inspect the evidence ledger

curl -s "$BASE_URL/evidence/ledger?tenant_id=$TENANT_ID" \ -H "X-Tenant-Token: $TOKEN" | jq
Evidence ledger

8) Export a regulator‑ready packet

curl -s "$BASE_URL/evidence/packet?tenant_id=$TENANT_ID&format=pdf" \ -H "X-Tenant-Token: $TOKEN" -o gvner-evidence.pdf
Evidence export

Optional: Seed demo data

curl -s -X POST "$BASE_URL/seed/demo" \ -H "X-Tenant-Token: $TOKEN" \ -H "Content-Type: application/json" \ -d '{"tenant_id":"acme"}' | jq

Use this if you want the console to show realistic data immediately.

What to do next

Key API endpoints

GET /capabilities — validate tenant access
POST /simpleclaw/register — register runtime
POST /policy/dry-run — simulate policy
POST /policy/change-request — request policy change
POST /approvals/approve — approve change
GET /evidence/packet — export evidence packet

Evidence outputs

Policy dry‑run record
Approval receipt + hash
Evidence ledger snapshot
Regulator‑ready PDF packet