Quick Start
Get Admina running in under 5 minutes. You'll need Python 3.11+ and Docker installed.
- Python 3.11+ (pinned in .python-version)
- Docker 24+ with Docker Compose v2
- Git 2.30+
- 4 GB RAM available (9 containers)
- Ports 3000, 3001, 4317, 8080, 9090 free
Step 1 โ Install Admina CLI
Admina is not yet published to PyPI. Install from source until the package name is finalised and the first PyPI release ships:
git clone https://github.com/admina-org/admina.git cd admina pip install -e . # SDK only # or with optional extras pip install -e ".[proxy]" # proxy + infra deps pip install -e ".[full]" # everything (proxy + NLP + telemetry)
Step 2 โ Initialize a project
admina init my-project cd my-project # Scaffolds admina.yaml, docker-compose.yml, and selects governance domains
Step 3 โ Start the stack
admina dev # Starts the full governance stack via Docker Compose with health monitoring # On first run this takes ~3-5 minutes to pull and build images.
If you cloned the repo directly and prefer Docker Compose without the Python
CLI, bootstrap a .env with random credentials first:
git clone https://github.com/admina-org/admina.git cd admina ./scripts/bootstrap-secrets.sh # writes random API key + dashboard password to .env docker compose up --build # credentials printed in the startup banner
Step 4 โ Verify governance is active
# Health check (always public) curl http://localhost:8080/health # {"status":"healthy","version":"0.9.0","engine":"rust","domains":4} # Check stats (auth required when ADMINA_API_KEY is set) curl http://localhost:8080/api/stats -H "X-API-Key: $ADMINA_API_KEY"
Step 5 โ Explore the dashboard
The dashboard is password-protected by default when ADMINA_API_KEY
is set. Log in with the credentials from bootstrap-secrets.sh or
from your .env.
http://localhost:3000 Governance dashboard โ Admina Score, OISG adequacy, live event feed, EU AI Act gaps http://localhost:8080/docs Interactive API documentation (Swagger UI) http://localhost:3001 Grafana โ OTEL metrics and traces http://localhost:9090 MinIO Console โ forensic storage browser Step 6 โ Send your first governed request
Route your AI agent's MCP calls through Admina instead of directly to the MCP server. The proxy listens on port 8080.
# Send a test MCP call through the governance proxy curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "read_file", "arguments": {"path": "/etc/hosts"} }, "id": 1 }' # The response includes governance metadata: # X-Admina-Governance-Action: ALLOW # X-Admina-Latency-Us: 6.25 # X-Admina-Event-Id: evt_01J... # X-Admina-Forensic-Hash: a3f8c9...
What just happened?
Every call you made was:
- Scanned for PII in both directions (Data Sovereignty)
- Checked for prompt injection patterns (Agent Security โ Firewall)
- Checked for infinite loop signatures (Agent Security โ Loop Breaker)
- Added to the SHA-256 hash chain audit log (Compliance โ Forensic)
- Classified for EU AI Act risk level (Compliance)
- Recorded as an OpenTelemetry span (Compliance โ OTEL)
- Counted into the OISG adequacy score โ the live runtime measure of Open ยท Intelligent ยท Secure ยท Governed
With the default stack running, your OISG score at
/api/dashboard/oisg lands in the adequate band (โฅ 80).
Flipping any capability off in admina.yaml immediately lowers it โ
the score reflects actual runtime state, not a checklist.
See OISG Adequacy for the full paradigm.
Next steps
Troubleshooting
First stop: admina doctor
The CLI ships with a diagnostic command that inspects your environment and reports
which checks pass or fail โ Python version, Rust engine availability, plugin discovery,
admina.yaml validity, and infrastructure reachability.
admina doctor Containers fail to start
Check that all required ports are free. Admina uses 3000, 3001, 4317, 8080, and 9090.
Run docker compose logs proxy for detailed error output.
Rust engine not detected
Admina automatically falls back to the Python implementation if the Rust binary is not available.
The health endpoint will show "engine":"python". To enable Rust, ensure the
admina_core binary is compiled for your platform (see Rust engine guide).
Need help?
Open an issue on GitHub or start a discussion in GitHub Discussions.