The lab's IT & operations control plane

One platform to run the lab, end‑to‑end.

A from-scratch control plane that provisions a hire across Okta → Active Directory → TrueNAS + Proxmox, a managed laptop, training, and SaaS in one call — deprovisions same-day and proves it, gates sensitive data on current training, and tracks licence spend, equipment, inventory, vendors, and safety. All audited.

Okta Active Directory TrueNAS Proxmox · pure-Python core · zero deps · 43 tests
The stack

Identity flows down. Decisions resolve back up.

A hire created in Okta is pushed into AD by an idempotent SCIM sync; their group membership decides their ACLs on storage and compute. To decide "can she start VM 101?", LabSuite resolves her effective AD groups — following nested groups — and checks the Proxmox ACL on that VM's path.

1

Okta — identity / login

Source of truth for users and group membership. Authenticates and issues a signed session token.

↓  provisioned via SCIM (idempotent)
2

Active Directory — users / groups / permissions

Synced from Okta. Owns the permission structure — including nested groups resolved by transitive closure.

↓  effective groups drive every ACL
3a

TrueNAS

Shares whose ACLs map an AD group to read / modify / full.

3b

Proxmox

VMs with hierarchical (path, group) → role ACLs.

What it does

Not a script — a control plane.

Onboard end-to-end

One call creates the hire in Okta, assigns role/department groups by policy, syncs to AD, and reports the exact TrueNAS + Proxmox access they now have.

Offboard, verified

Same-day deprovision across the whole chain — and it proves zero residual access before returning.

Idempotent SCIM sync

Okta → AD reconcile with create / update / deactivate. Run it twice; the second run is a provable no-op.

Nested-group resolution

A researcher gets GPU access because Research is nested in GPU-Cluster-Users — inherited, not hand-granted.

Audited allow/deny

Every decision records the exact groups that granted it. Nothing happens off the record.

Access reviews

A quarterly-style report flags stale access, FULL on sensitive shares, and datacenter-wide admin.

Devices on day one

Onboarding images and ships a managed laptop per role (encryption, MDM, Okta MFA, Iru/Ansible); offboarding flags it wipe & return.

Compliance-gated access

Sensitive lab data stays locked until IACUC + biosafety training is current — and auto-revokes the moment it lapses.

MFA & conditional access

Sensitive shares require Okta Verify regardless of group membership — conditional access that composes with the training gate.

Network segmentation

Corp / Lab / IoT / Guest / Mgmt VLANs with a default-deny east-west policy; a camera on the wrong VLAN gets flagged automatically.

Attestation campaigns

Turn the access review into a certify/revoke campaign with tracked completion — the artifact a SOC 2 / ISO 27001 auditor asks for.

Break-glass admin

Just-in-time elevation into powerful groups that self-expires — nobody carries standing datacenter admin.

Cost analytics & DR

SaaS spend by department against budget, and backup/DR health per dataset and VM with stale-backup flags.

Action center

One inbox rolls up every outstanding flag — lapsed training, MFA gaps, overdue maintenance, low stock, renewals, segmentation misconfigs, stale backups, budget overruns — each a click from its fix.

SaaS, cost & ops

Who has what and what it costs, plus equipment maintenance, inventory, vendor renewals, and facility safety — one source of truth.

Swappable adapters

Each layer sits behind an interface. Drop in the real Okta / AD / TrueNAS / Proxmox / MDM APIs without touching the control plane.

Zero-dependency core

Pure Python. Runs anywhere, in CI, on 3.10–3.12. FastAPI only for the optional live API.

CLI + HTTP API + GUI

Drive it from the terminal, an OIDC-ish HTTP API with a SCIM feed, or this web dashboard.

Tested end-to-end

20 features. All verified in the GUI.

Every operational view was driven end-to-end in the live dashboard — desktop and mobile, demo and API-backed. Backed by 137 automated tests, ruff-clean, on Python 3.10–3.12.

Overview + Action center
SaaS & cost (seats + spend)
Directory (resolved access)
Cost analytics & budgets
Onboard (whole-stack)
Lab ops (equipment/inventory/vendors/safety)
Offboard (zero-residual, verified)
Network segmentation (VLAN + reachability)
Devices (macOS / Windows / Linux imaging)
Backup / DR health
Onboarding readiness checklist
Access review + CSV
Access explorer + MFA / conditional access
Attestation campaign (certify / revoke)
Access requests + approvals
Break-glass (JIT) admin
Compliance (training gates)
Architecture explainer
Audit log + CSV
Sign-in demo (session token)

Open the live demo →

Quickstart

See it work in 30 seconds.

# Python 3.10+; the core needs no third-party packages.
python3 -m venv .venv && source .venv/bin/activate
pip install -e .          # add ".[api]" for the live API + GUI

labsuite demo             # the whole story, end to end

labsuite onboard --name "Nadia Rahman" --department Research --role research-scientist
labsuite access  --user nrahman
labsuite check   --user nrahman --system proxmox --resource 101 --action vm.power
labsuite offboard --user nrahman      # same-day, verified clean
labsuite review                       # access review + flags

Prefer to click? Open the live demo →

Honest by design

How it maps to the real stack.

LabSuite is a faithful reference implementation — a simulator of the stack and the processes around it, shaped so each layer can be swapped for the real product's API.

LabSuiteReal systemSwap point
Okta directory + session tokenOkta OIDC / /api/v1 + SCIMOktaApiIdentityProvider
AD nested groupsAD + LDAP_MATCHING_RULE_IN_CHAINLdapDirectoryProvider
TrueNAS share ACLsTrueNAS /api/v2.0TrueNasApiStorageProvider
Proxmox path ACLsPVE /api2/json/access/aclProxmoxApiComputeProvider