Admin UI for Ory Kratos. Manage identities, sessions, and schemas across multiple environments.
Quick Start
docker run -p 8080:8080 licenseware/ory-admin-ui
Open http://localhost:8080, configure your Kratos endpoint in the Settings tab.
With Custom Profiles
cat > config.json <<EOF { "local": { "kratosAdminBaseURL": "http://localhost:4455", "kratosPublicBaseURL": "http://localhost:4433" }, "prod": { "kratosAdminBaseURL": "https://kratos-admin.example.com", "kratosPublicBaseURL": "https://kratos-public.example.com" } } EOF docker run -p 8080:8080 \ -v ./config.json:/public/config.json:ro licenseware/ory-admin-ui
NOTE: You must ensure the CORS is setup corrrectly, i.e., by putting the Kratos Admin URL behind a load-balancer/reverse-proxy.
Features
- Identity CRUD with pagination
- Session management and revocation
- Courier message viewer
- Identity schema browser
- Multi-profile support (switch between environments, import/export)
- Profile switcher in header (AWS-style)
- Dark/light theme with system preference detection
- Runtime configuration (no rebuild needed)
- Responsive design
Configuration
The API endpoints can be configured in three ways (in order of priority):
Two endpoints are available:
| Endpoint | Default Port | Purpose |
|---|---|---|
kratosAdminBaseURL |
4434 | Admin API - identity CRUD, session mgmt |
kratosPublicBaseURL |
4433 | Public API - identity schemas |
1. Profiles (Settings UI)
Users can create and switch between profiles via the Settings page. Saved to localStorage, takes highest priority.
2. Runtime Configuration (Recommended)
Mount a config.json file at runtime:
{
"local": {
"kratosAdminBaseURL": "http://localhost:4434",
"kratosPublicBaseURL": "http://localhost:4433"
},
"prod-eu": {
"kratosAdminBaseURL": "https://kratos-admin.eu.example.com",
"kratosPublicBaseURL": "https://kratos.eu.example.com"
}
}Docker:
docker run -p 8080:8080 \ -v ./config.json:/public/config.json:ro \ licenseware/ory-admin-ui
Kubernetes:
spec: containers: - name: ory-admin-ui image: licenseware/ory-admin-ui volumeMounts: - name: config mountPath: /public/config.json subPath: config.json readOnly: true volumes: - name: config configMap: name: ory-admin-ui-config optional: false defaultMode: 0444
3. Build-time Environment Variable
Set during build (baked into the bundle):
VITE_DEFAULT_PROFILES={"local":{"kratosAdminBaseURL":"http://localhost:4434","kratosPublicBaseURL":"http://localhost:4433"}}Priority: Profiles UI > Runtime Config > Build-time Env > Hardcoded fallback
Development
docker compose up -d bun install bun start
Vision
Building a unified admin UI for the Ory ecosystem. Currently supports Kratos.
Hydra, Keto, and Oathkeeper support planned.
Contributing
PRs welcome. Fork, branch, PR.
