| Crates.io | greentic-gui |
| lib.rs | greentic-gui |
| version | 0.4.4 |
| created_at | 2025-12-19 08:48:33.120552+00 |
| updated_at | 2025-12-19 08:48:33.120552+00 |
| description | Greentic GUI runtime (Axum-based) that serves tenant packs, enforces auth, and exposes worker/session APIs plus a browser SDK. |
| homepage | https://greentic.ai |
| repository | https://github.com/greentic-ai/greentic-gui |
| max_upload_size | |
| id | 1994424 |
| size | 303,755 |
Axum-based Greentic GUI runtime that serves tenant-specific GUI packs, enforces auth, injects fragments, and exposes worker/session/telemetry APIs plus a small browser SDK.
cargo run
From source via crates.io:
cargo install greentic-gui --locked
This repo publishes “binstall-ready” archives for Linux/macOS/Windows via GitHub Releases.
Stable (latest tagged release):
cargo install cargo-binstall
cargo binstall greentic-gui
Nightly (latest master):
Nightly (tag nightly), unzip/untar, and place greentic-gui on your PATH.Environment defaults:
BIND_ADDR=0.0.0.0:8080PACK_ROOT=./packsDEFAULT_TENANT=tenant-defaultGREENTIC_ENV=devGREENTIC_TEAM=guiBIND_ADDR: listen address (host:port).ENABLE_CORS: 1/true to enable permissive CORS (dev only).PACK_ROOT: filesystem root for packs.PACK_CACHE_TTL_SECS: cache TTL for tenant configs (0 = disabled).GREENTIC_DISTRIBUTOR_URL: enable distributor-backed pack loading.GREENTIC_DISTRIBUTOR_ENV: distributor environment id (defaults to GREENTIC_ENV).GREENTIC_DISTRIBUTOR_TOKEN: bearer for distributor calls.GREENTIC_DISTRIBUTOR_PACKS: JSON mapping of pack refs (see src/packs.rs).GREENTIC_OCI_BEARER or GREENTIC_OCI_USERNAME + GREENTIC_OCI_PASSWORD: auth when downloading OCI artifacts./api/gui/cache/clear.OAUTH_BROKER_URL (required): broker base URL for /auth/{provider}/start.OAUTH_ISSUER, OAUTH_AUDIENCE, OAUTH_JWKS_URL (required): bearer validation via greentic-oauth-sdk.OAUTH_REQUIRED_SCOPES: comma-separated scopes (optional)./login and /logout served from assets/ if no pack overrides.REDIS_URL: use Redis-backed session store; otherwise in-memory.SESSION_TTL_SECS: cookie Max-Age; store expiry follows greentic-session defaults.WORKER_GATEWAY_URL (optional): endpoint for remote worker gateway; if unset, a stub backend echoes payloads.WORKER_GATEWAY_TOKEN (optional): bearer token for the gateway.WORKER_GATEWAY_TIMEOUT_MS (optional): HTTP timeout in milliseconds (default 5000).WORKER_GATEWAY_RETRIES (optional): retry attempts on failure (default 2).WORKER_GATEWAY_BACKOFF_MS (optional): backoff base delay between retries (default 200)./login serves assets/login.html when no auth pack is mounted./logout redirects to /auth/logout./unauthorized serves assets/unauthorized.html./api/gui/cache/clear clears the in-memory pack cache./api/gui/packs/reload clears cache and re-warms a tenant (JSON body { "tenant": "<id>" }, default tenant if omitted); logs cache hit/miss counters.npm install (plus npx playwright install --with-deps if needed), start the server locally, then npm run test:browser to run Playwright against /tests/sdk-harness.OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME=greentic-gui, headers, etc.) respected via greentic-telemetry.secret_requirements and a pack_init_hint path from /api/gui/config; consumers can show these to operators./api/gui/worker/message returns error=missing_secrets with the requirements and a remediation hint greentic-secrets init --pack <path> (extend similar handling to other APIs once upstreams emit structured errors).src/gui-sdk/index.ts; bundled to assets/gui-sdk.js (global window.GreenticGUI).npm run build-sdknpm run test-sdk (smoke + simple assertions)/greentic/gui-sdk.js