A hosted/on-prem internal developer platform prototype for governed environment requests, simulated provisioning, approvals, and operations readiness.
Nutanix Developer Cloud Studio models how developers can request, launch, and govern application environments across Nutanix infrastructure, Kubernetes, databases, storage, and AI services from one self-service portal while platform teams retain policy, approval, audit, and lifecycle control.
Current release: v9.1.0-prism-element-lab-adapter
Live demo: https://virtuarchitect.github.io/nutanix-developer-cloud-studio/
This repository is an independent product prototype. Nutanix integrations, policy checks, costs, environments, approvals, and provisioning workflows run in simulated mode for demonstration and design validation. This project does not currently provision or mutate real Nutanix infrastructure and is not affiliated with, sponsored by, or endorsed by Nutanix unless explicitly stated otherwise.
Nutanix Developer Cloud Studio is currently a polished, simulated hosted/on-prem product prototype. It demonstrates how an internal developer platform can coordinate self-service requests, platform governance, and private-cloud operations before real infrastructure adapters are enabled.
- Developer portal dashboard for environment visibility and activity.
- App catalog with golden-path templates.
- Create-environment workflow for VM, Kubernetes, database, storage, and AI endpoint targets.
- Policy, cost, compliance, and approval checks built into the request path.
- Environment status and detail views with simulated provisioning timelines.
- Admin console for identity context, settings, provider readiness, governance, control-plane jobs, audit/log review, operations evidence, and template management.
- Mock integrations for NCI, NKP, NDB, NUS, NCM, and NAI.
- Template registry, image/profile catalog, policy bundles, and provider configuration views.
- Approval queues, lifecycle operations, audit export manifests, and retention diagnostics.
- API-backed prototype flows for environments, approvals, simulated provisioning, control-plane jobs, lifecycle destroy simulation, system status, request logging, rate limits, and security headers.
- API-backed Admin Settings surface for identity/RBAC posture, IAM mode selection, local-user policy, Active Directory connectivity references, provider configuration readiness, AHV lab feature flags, and redacted audit-event review.
- Operator console functions for settings validation, connection testing, role mappings, provider drill-down, audit filtering, admin activity review, redacted settings export, operations queue triage, and controlled environment lifecycle actions.
- OIDC-shaped role context, RBAC guardrails, trusted-header diagnostics, and provider credential reference checks.
- State backup/restore tooling and containerized on-prem starter deployment.
- Mock Prism Central simulator for local testing when no Nutanix lab is available.
- API-backed Prism adapter readiness, simulator profile registry, simulator failure scenarios, and controlled real-Prism preflight evidence.
- Runtime package validation, checksum-backed JSON state backup/restore, and Prism adapter contract tests for on-prem readiness.
- Disabled read-only Prism request scaffold, read-only lab gate evidence, fixture inventory contract tests, and operator runbook/rollback pack.
- API auth boundary hardening, runtime observability, production readiness scoring, container/config validation, and a design-only live read-only Prism call contract.
- Controlled read-only lab pilot foundation with lab connection profiles, sanitized Prism fixture replay, authorization gates, operator evidence export packs, and API-backed lab pilot runbook workflow.
- Controlled read-only adapter pilot records for runtime mode selection, live-read-only inventory pilot evidence, redacted adapter observability, lab operator console status, and production readiness decision gates.
- Real read-only lab adapter preparation with config boundaries, credential-provider contracts, disabled adapter interfaces, offline replay suites, and authorized lab connection dry-run evidence.
- Controlled read-only lab enablement with hardened lab profiles, disabled credential resolver stubs, disabled Prism HTTP client shapes, connectivity preflight evidence, and a final non-executing pilot gate.
- Production read-only pilot controls with runtime enablement policy, controlled pilot sessions, non-executing call envelopes, pilot evidence review queue, and emergency stop rollback drill records.
- Controlled mock-to-lab transition with lab readiness workspace, expanded mock Prism endpoint contract, adapter contract harness records, lab dry-run console, evidence export pack v2, and real lab authorization packet evidence.
- Production hardening foundation with API contract baseline, RBAC enforcement matrix, persistence boundary diagnostics, audit integrity manifest, deployment profile validation, and an operations runbook console.
- Durable on-prem operations foundation with Postgres repository contract readiness, migration baseline manifests, JWT/OIDC verification boundary diagnostics, signed audit export manifests, admin upgrade health, and on-prem install profile pack validation.
- Lab-only AHV test infrastructure enablement with Prism Central v3 configuration validation, read-only preflight, opt-in VM create/poll/power/destroy lifecycle, Docker Compose lab deployment, and redacted audit evidence.
- Standalone mock Prism Central harness with fixture-backed clusters, projects, subnets, images, VMs, tasks, Docker Compose deployment, read-only validation, and create/poll/power/destroy/reconciliation smoke testing.
- API-backed provisioning mode selector that clearly distinguishes Static Demo, Simulated API, Mock Prism, and Real AHV Lab modes on the dashboard.
- AHV lab acceptance pack with authorization checklist, execution sequence, evidence report template, and metadata-only validator before authorized Prism Central testing.
- Prism Element lab adapter starter for one-node AHV/PE validation with PE-specific configuration, read-only smoke, and controlled lifecycle provider selection.
- Browser-based Connect Infrastructure wizard for private Prism Element or Prism Central labs, with one-time read-only testing, redacted evidence, and guarded lifecycle enablement.
- Real-infrastructure tester workflow for private Prism Element or Prism Central labs using the UI wizard or ignored
.env.labfiles, read-only smoke tests, and guarded lifecycle enablement.
- Lab authorization scope evidence, VM lifecycle proof records, rollback/destroy proof reviews, and controlled provisioning gate reviews.
- Disabled AHV create adapter contract reviews and fail-closed AHV controlled-provisioning preflight.
- Platform-service request planning and preflight flows for NKP, NDB, NUS, and NAI.
- Adapter enablement, promotion, CAB, change freeze, production readiness, execution, closure, archive recovery, and operations handoff evidence records.
Simulated provisioning is enabled for the prototype control plane. The public GitHub Pages demo never provisions infrastructure. A local mock Prism Central harness can exercise Prism-shaped AHV lifecycle calls without touching Nutanix infrastructure. Real AHV lifecycle is available only in an explicitly configured APP_ENV=lab deployment with all AHV lab switches enabled, authorized test infrastructure, private credentials, and Platform Admin approval gates. Prism Central and Prism Element lab providers are separate opt-in modes. All other real Nutanix adapters, Prism calls, credential resolution, and infrastructure mutation remain disabled by default.
Install dependencies:
npm installStart the app:
npm run dev -- --host localhost --port 4180Open:
http://localhost:4180
Build check:
npm run buildRun unit tests:
npm run testRun end-to-end smoke tests:
npm run test:e2eRun the full local verification suite:
npm run test:allRun on-prem starter validation checks:
npm run validate:runtime
npm run validate:onprem
npm run validate:backup
npm run validate:container-configOperator runbooks:
Run the mock API locally:
npm run api:devBuild the frontend and type-check the API:
npm run build:allRun the containerized starter:
docker compose up --buildOpen:
http://localhost:18080
Docker Compose publishes the container's internal 8080 port on host port 18080 by default because Windows can reserve 8080 in excluded TCP ranges. Override the host binding when needed:
$env:NDC_STUDIO_HOST_PORT="18180"
docker compose up --buildIn the hosted/on-prem starter, the frontend auto-detects the same-origin API through /healthz, loads environments from /api/environments, and submits requests to POST /api/environments. If no API is available, it falls back to browser mock mode for the public GitHub Pages demo.
Validate the hosted starter locally:
.\scripts\validate-hosted-starter.ps1Use this mode when you want to test the AHV provisioning workflow without a Nutanix lab:
Copy-Item .env.mock-prism.example .env.mock-prism
docker compose -f docker-compose.mock-prism.yml --env-file .env.mock-prism up --buildValidate the mock Prism endpoint and fixture inventory:
npm run validate:mock-prism-config -- -EnvFile .env.mock-prism -PrismUrl http://127.0.0.1:19440Run the mock-backed AHV lifecycle smoke:
npm run smoke:mock-prism-lifecycle -- -BaseUrl http://127.0.0.1:18080 -PrismUrl http://127.0.0.1:19440This path submits create, poll, power, and destroy calls to the mock Prism Central service only. It does not contact real Nutanix infrastructure.
Authorized testers with a disposable Prism Element or Prism Central lab can use Admin > Settings > Connect infrastructure to enter Prism details and run a one-time read-only connection test from the browser. The password is not saved or returned by the API.
Operators can also use the script workflow when preparing a private lab host:
npm run lab:env -- -Provider prism-element
npm run validate:ahv-lab-readiness
docker compose -f docker-compose.lab.yml up --build -dRead the full tester guide: docs/real-infrastructure-testing.md.
Project documentation lives in docs/.
To mirror the Markdown notes into a personal Obsidian vault, set NDC_STUDIO_OBSIDIAN_VAULT to your local vault path and run:
$env:NDC_STUDIO_OBSIDIAN_VAULT="C:\path\to\your\Obsidian Vault"
.\scripts\sync-obsidian.ps1This repo also includes a tracked Git hook in .githooks/post-commit. When NDC_STUDIO_OBSIDIAN_VAULT is set locally, the hook refreshes the vault after each local commit.
As the prototype develops, update docs/ alongside the code. The key living notes are:
docs/project-log.mdfor milestones and decisionsdocs/build-plan.mdfor implementation sequencingdocs/architecture.mdfor product and technical structuredocs/roadmap.mdfor phase planningdocs/project-brief.mdfor positioning and scopedocs/demo-script.mdfor stakeholder walkthroughsdocs/hosting.mdfor prototype and on-premises hosting directiondocs/api.mdfor the backend API starterdocs/on-prem-deployment.mdfor the containerized deployment starterdocs/ahv-lab-lifecycle.mdfor authorized AHV test infrastructure deploymentdocs/ahv-lab-acceptance-pack.mdfor the formal AHV lab acceptance checklist and evidence requirementsdocs/mock-prism-central-harness.mdfor mock Prism Central lifecycle testing without Nutanix infrastructuredocs/release-notes/for GitHub Release copydocs/upgrade-path.mdfor gated phase sequencing and promotion rules
This repository also includes project governance and delivery guidance:
AGENTS.md: Codex project instructions and definition of doneTESTING_GUIDE.md: testing strategy and smoke-test requirementsSECURITY_REVIEW.md: defensive security review checklistCODE_REVIEW.md: review checklist and output formatPENTEST_SCOPE_TEMPLATE.md: authorization template for security testingCONTRIBUTING.md: contribution workflowSECURITY.md: vulnerability reporting policyCHANGELOG.md: release history and planned next changes
.github/workflows/ci.yml: runs unit tests, build, and Playwright smoke tests..github/workflows/security.yml: runs CodeQL and dependency review checks..github/workflows/phase-gate.yml: manually validates a target phase before promotion..github/workflows/pages.yml: builds and deploys the static prototype to GitHub Pages when Pages is enabled for the repository.
Changes are complete only when implementation, tests, smoke testing, and any required security review are finished or explicitly documented as blocked.
