πΊοΈ Blueprints
A blueprint is a saved range configuration that can be applied to a range to quickly configure it.
# Save your range config as a blueprint
ludus blueprint create --id ad-lab --name "AD Lab"
# Share it with your team
ludus blueprint share group ad-lab sec-team
# A teammate applies it to their range
ludus blueprint apply ad-lab
# Deploy the range
ludus range deploy
- Onboarding β give new team members a ready-to-go range config
- Workshops β distribute a standardized lab environment to a class
- Iteration β save a config before experimenting with changes
- Standardization β maintain approved configs that teams can self-serve
Creating a Blueprintβ
Blueprint IDsβ
Every blueprint has a unique identifier and must follow these rules:
- Start with a letter (A-Z or a-z)
- Followed by any number of: alphanumeric,
_, or-characters - Optionally up to 2
/-separated segments, each containing alphanumeric,_, or-
Examplesβ
- `my-blueprint`
- `team/windows`
- `org/team/prod-lab`
From Your Default Rangeβ
ludus blueprint create --id <blueprintID>
You can also provide --name and --description to set a display name and description.
From a Different Rangeβ
ludus blueprint create --id <blueprintID> --from-range <rangeID>
Copying an Existing Blueprintβ
ludus blueprint create --from-blueprint <sourceBlueprintID>
The copy is owned by you and is shared with no one. --id is optional and if it is omitted, the copy's blueprint ID will be {source}-copy, then {source}-copy-2, etc.
Listing Blueprintsβ
ludus blueprint list
+--------------------+------------------+---------+--------+--------------+---------------+------------------+
| BLUEPRINT ID | NAME | OWNER | ACCESS | SHARED USERS | SHARED GROUPS | UPDATED |
+--------------------+------------------+---------+--------+--------------+---------------+------------------+
| ad-lab | AD Lab | JD-1 | owner | 2 | 1 | 2026-02-10 09:30 |
| team/windows | Windows Range | JD-1 | owner | 0 | 0 | 2026-02-12 14:15 |
| org/sec/malware | Malware Lab | admin | group | 3 | 2 | 2026-02-15 11:00 |
+--------------------+------------------+---------+--------+--------------+---------------+------------------+
The ACCESS column shows your relationship to each blueprint: admin, owner, direct (shared with you), or group (shared via a group).
Viewing a Blueprint Configβ
ludus blueprint config get <blueprintID>
This will print the YAML config to stdout.
Applying a Blueprintβ
# Apply to your default range
ludus blueprint apply ad-lab
# Apply to a specific range
ludus blueprint apply ad-lab --target-range JD-1-range-2
Applying a blueprint overwrites the target range configuration, and does not redeploy the range for you. Please run ludus range deploy --range-id <your range> to deploy the applied configuration.
If testing mode is enabled on the target range, apply will fail. Use --force to override it.
Sharing Blueprintsβ
Share with Usersβ
ludus blueprint share user <blueprintID> <userID...>
# Single user
ludus blueprint share user ad-lab JD-1
# Multiple users (space-separated or comma-separated)
ludus blueprint share user ad-lab JD-1 AS-2 BW-3
ludus blueprint share user ad-lab JD-1,AS-2,BW-3
Share with Groupsβ
ludus blueprint share group <blueprintID> <groupName...>
# Single group
ludus blueprint share group ad-lab sec-team
# Multiple groups
ludus blueprint share group ad-lab sec-team,dev-team
Unshareβ
ludus blueprint unshare user <blueprintID> <userID...>
ludus blueprint unshare group <blueprintID> <groupName...>
View Accessβ
ludus blueprint access users <blueprintID>
+---------+---------------+---------------+-----------+
| USERID | NAME | ACCESS | GROUPS |
+---------+---------------+---------------+-----------+
| JD-1 | John Doe | owner | - |
| AS-2 | Alice Smith | direct, group | sec-team |
| BW-3 | Bob Williams | group | sec-team |
+---------+---------------+---------------+-----------+
ludus blueprint access groups <blueprintID>
+-----------+----------+---------+
| GROUP | MANAGERS | MEMBERS |
+-----------+----------+---------+
| sec-team | AS-2 | BW-3 |
+-----------+----------+---------+
Deleting a Blueprintβ
ludus blueprint rm <blueprintID>
Only the owner or an admin can delete a blueprint. You will be prompted for confirmation, unless you use --no-prompt to skip it.
Permissionsβ
You may only see blueprints you have access. Admins have access to all blueprints. When a blueprint is shared with a group, all members and managers of that group gain access to the blueprint.
| Action | Admin | Owner | Group Manager | Shared User | Group Member |
|---|---|---|---|---|---|
| View / list / apply / copy | β | β | β | β | β |
| Edit config | β | β | β | β | β |
| Share / unshare | β | β | β * | β | β |
| Delete | β |