Student Setup Guide Lab

Create your private lab repository, install dependencies, and launch Claude Code before the lab begins

Complete these steps before the lab begins. By the end, you will have your own private copy of the lab repository, dependencies installed, and Claude Code ready to go.

Pre-Lab Setup

Set Up a GCP Project via Torque

Before touching the pipeline, provision the GCP project you will use for the lab through Torque.

▶ Step 1 — Sign in to Torque
  1. Navigate to https://laas.paloaltonetworks.com.
  2. Sign in using enterprise SSO.
  3. If not already on the Self-service tab, click Self-service.
Note

Torque requires the corporate access VPN. Connect before navigating to the URL.

▶ Step 2 — Configure and launch the environment
  1. Click Launch under "Create a GCP Project with Owner Permissions".
  2. Set a desired environment name, and set the environment duration to 2 weeks.
  3. Click Inputs, set "Can this be replicated in an on-premise GCS lab (VM/Physical device)?" to No, then enter GCS-PSO for Case or Project-Id.
  4. Click Tags, set activity_type to development and set department to Technical_service.
  5. Click Launch toward the bottom.
▶ Step 3 — Wait for your project email

After approximately 7 minutes, you will receive an email with your GCP Project information.

Keep these values handy; you will need them when editing .github/pipeline-config.yaml during Module 0.

Set Up Your Lab Repository and Claude Code

▶ Step 1 — Create Your Private Repo from the Template
  1. Open the template repository in your browser:
    https://github.com/panw-airs-enablement/prisma-airs-mlops-lab
  2. Click the green "Use this template" button (top right, next to "Code").
  3. Select "Create a new repository".
  4. Configure your new repo:
    • Include all branches — toggle On; required so you get both the lab branch (your workspace) and main branch (reference solutions)
    • Owner — select your own GitHub account
    • Repository name — prisma-airs-mlops-lab (the default is fine)
    • Visibility — select Private
  5. Click "Create repository".

Your screen should look like this:

GitHub create repository from template form with Include all branches enabled, your own account as owner, and Private visibility selected
Why private?

GitHub Secrets are repo-scoped. Your repo will contain GCP project IDs, AIRS credentials, and deployment configs specific to your environment. A public fork would expose these.

▶ Step 2 — Clone and Switch to the Lab Branch
  1. Clone your new private repo:
    git clone https://github.com/<your-github-username>/prisma-airs-mlops-lab.git
    cd prisma-airs-mlops-lab
  2. Switch to the lab branch:
    git checkout lab

    The lab branch is your working branch. It has the pipeline structure in place but AIRS scanning is not yet integrated; that is what you will build during the workshop.

    The main branch contains the completed reference implementation. You can compare against it anytime with git diff lab..main.

  3. Install Python dependencies:
    uv sync
Note

If you don't have uv installed: curl -LsSf https://astral.sh/uv/install.sh | sh then restart your terminal.

▶ Step 3 — Sign Up as an Anton User and Configure Claude Code

Before launching Claude Code, sign up as an Anton user and configure Claude Code to run as one. Follow both guides in order:

  1. Sign up: Become an Anton User
  2. Configure Claude Code: Using Claude Code
Note

These guides are internal to Palo Alto Networks. If the pages do not load, connect to the corporate network or VPN first.

▶ Step 4 — Launch Claude Code
  1. Open Claude Code in the repo directory:
    claude

    Claude has been pre-configured as your lab mentor through the CLAUDE.md file in the repo root. It knows the codebase, paces its explanations, and uses Socratic questioning to guide you.

  2. Start the lab by typing:
    /lab:module 0

    Module 0 walks you through verifying your GCP project, GitHub CLI, and AIRS credentials. Claude will also help you connect your repo to the template for receiving instructor updates.

Quick Reference

CommandWhat It Does
/lab:module NStart or resume module N
/lab:verify-NRun verification checks for module N
/lab:hintGet a progressive hint for your current challenge
/lab:explore TOPICDeep-dive into a concept
/lab:quizTest your understanding
/lab:progressSee your completion dashboard

Resuming Work Between Sessions

When you come back to the lab after closing your terminal or starting a new day, follow these three steps.

▶ Step 1 — Pull Instructor Updates

Before starting Claude Code, pull any changes the instructor has pushed. Open a terminal in your repo directory:

cd prisma-airs-mlops-lab
claude

Then paste this prompt into Claude:

Check if I have an "upstream" remote pointing to panw-airs-enablement/prisma-airs-mlops-lab.
If not, add it. Then fetch upstream and merge upstream/lab into my current branch.
If there are merge conflicts on lab/.progress.json or .github/pipeline-config.yaml,
keep my version (--ours) since those have my personal config. For everything else,
take upstream's version (--theirs).

Claude will handle the git commands and resolve any conflicts automatically.

▶ Step 2 — Restart Your Lab Session

If upstream changes updated CLAUDE.md or any lab files, Claude needs to pick up those changes. Exit and restart Claude Code so it reads the latest instructions:

/exit
claude
Why not /resume?

/resume recovers your previous conversation but keeps the old CLAUDE.md instructions. After pulling instructor updates, a fresh session ensures Claude is working with the latest lab content. Your progress isn't lost; it's all in .progress.json.

▶ Step 3 — Pick Up Where You Left Off

Your progress is saved in lab/.progress.json, so Claude knows exactly where you are. Run:

/lab:progress

This shows your completion dashboard: which modules are done, your points, and any blockers. Then resume your current module:

/lab:module N

Replace N with whatever module you were on. Claude will read your progress file and continue from where you left off.

▶ Manual steps — if you prefer to do it yourself

Add the upstream remote (first time only):

git remote add upstream https://github.com/panw-airs-enablement/prisma-airs-mlops-lab.git

Pull changes:

git fetch upstream
git merge upstream/lab --no-edit

If you get a merge conflict on lab/.progress.json or .github/pipeline-config.yaml, keep your version (these have your personal config):

git checkout --ours lab/.progress.json .github/pipeline-config.yaml
git add lab/.progress.json .github/pipeline-config.yaml
git commit --no-edit

For conflicts in other files (lab guides, code, workflows), take the instructor's version:

git checkout --theirs path/to/file
git add path/to/file
git commit --no-edit

Troubleshooting

▶ Common setup problems and fixes
ProblemFix
"Use this template" button not visibleMake sure you are signed into GitHub
lab branch doesn't exist after cloneYou missed "Include all branches" during template creation; delete the repo, recreate with the toggle on
uv: command not foundInstall uv: curl -LsSf https://astral.sh/uv/install.sh | sh and restart your terminal
claude: command not foundInstall Claude Code: npm install -g @anthropic-ai/claude-code
Claude doesn't seem to know about the labMake sure you're in the repo directory and on the lab branch; Claude reads CLAUDE.md from the repo root
Merge conflict on lab/.progress.jsonKeep your version: git checkout --ours lab/.progress.json && git add lab/.progress.json && git commit --no-edit
upstream remote not foundAdd it: git remote add upstream https://github.com/panw-airs-enablement/prisma-airs-mlops-lab.git
Next: Lab Modules →