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 login

Authenticate the CLI.

pov validate

Validate lab.yml and config.yml in the current directory.

pov push

Push 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-labs

List 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:

  1. 1Create your lab directory with lab.yml, config.yml, and numbered task directories.
  2. 2Log in: pov login.
  3. 3Validate locally: pov validate.
  4. 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 push

Testing 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-slug

Batch 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 ./labs

Troubleshooting

Common errors and fixes:

ErrorCauseFix
missing required field: sluglab.yml is missing the slug field.Add slug: "your-slug" to lab.yml.
script did not runOnly 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-zeroA check script returned a non-zero exit status.Run pov lab-start and debug the check script manually.
not authenticatedYou're not logged in or your session expired.Run pov login.
lab not foundThe slug doesn't match any published lab.Run pov list-labs to see available slugs.