Creating Labs
CLI Workflow
Validate, deploy, and manually test labs using the pov CLI. POV uses staging by default; use POV_ENV=production only for a production push.
CLI Commands
pov loginAuthenticate the CLI.
pov validateValidate lab.yml and config.yml in the current directory.
pov pushPush the lab to the default staging environment.
pov validate-batch <dir>Validate labs in a parent directory.
pov push-batch <dir>Push labs in a parent directory.
pov lab-start <lab-slug>Start a lab session for manual testing.
pov lab-status <lab-slug-or-session-id>Get a running lab session's status.
pov lab-stop <lab-slug-or-session-id>Stop a lab session and clean up resources.
pov list-labsList available labs in your account.
pov migrate <source-folder> [destination-folder]Convert an Instruqt lab; omitted destination creates a _tekanaidlabs sibling.
pov migrate-batch <source-parent-folder> [destination-parent-folder]Convert Instruqt labs in a parent directory.
Deploy Workflow
Follow these steps when creating or updating a lab:
- 1Create your lab directory with lab.yml, config.yml, and numbered task directories.
- 2Log in: pov login.
- 3Validate locally: pov validate.
- 4Push to staging: pov push. For production, run POV_ENV=production pov push.
# Validate
pov validate
# Push to staging (default)
pov push
# Push to production
POV_ENV=production pov pushTesting Labs
The current POV CLI has no test command. Start a live session for manual testing after pushing the lab.
Manual Session Testing
Start a live session to interact with the lab VMs directly:
# Start a session (waits until VMs are ready and shows IP addresses)
pov lab-start my-lab-slug
# Check session status
pov lab-status my-lab-slug
# Stop the session when done
pov lab-stop my-lab-slugBatch Operations
Use batch commands when managing multiple labs in a shared parent directory. Each subdirectory must contain a lab.yml and config.yml:
# Validate all labs under ./labs/
pov validate-batch ./labs
# Deploy all
pov push-batch ./labs
# Deploy all to production
POV_ENV=production pov push-batch ./labsTroubleshooting
Common errors and fixes:
| Error | Cause | Fix |
|---|---|---|
missing required field: slug | lab.yml is missing the slug field. | Add slug: "your-slug" to lab.yml. |
script did not run | Only setup/check/solve filenames that exactly match configured VM names are read; unmatched files are absent from the bundle. | Match each script suffix to a name in config.yml. |
check script exited non-zero | A check script returned a non-zero exit status. | Run pov lab-start and debug the check script manually. |
not authenticated | You're not logged in or your session expired. | Run pov login. |
lab not found | The slug doesn't match any published lab. | Run pov list-labs to see available slugs. |
