This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Crucible Development is a Development Container and .NET Aspire orchestration environment for the Crucible platform - a cybersecurity training and simulation platform developed by Carnegie Mellon University's Software Engineering Institute (SEI).
This is a meta-repository that orchestrates 30+ external repositories cloned into /mnt/data/crucible/. The main orchestrator (Crucible.AppHost) manages all microservices using .NET Aspire.
- Crucible.AppHost - Central .NET Aspire orchestrator that manages all services
- PostgreSQL - Centralized multi-tenant database (container:
crucible-postgres) - Keycloak - OpenID Connect identity provider (ports 8080/8443)
- MkDocs - Documentation server (port 8000)
- PGAdmin - Database admin UI (port 33000)
| Service | Purpose | Ports |
|---|---|---|
| Player API/UI | Main learning platform | 4301 |
| Player VM API/UI | Virtual machine management | 4303 |
| Console UI | Console access | 4305 |
| Caster API/UI | Infrastructure orchestration | 4310 |
| Alloy API/UI | Advanced orchestration | 4403 |
| TopoMojo API/UI | Network topology simulation | 5000/4201 |
| Steamfitter API/UI | Scenario execution | 4401 |
| CITE API/UI | Collaborative training | 4721 |
| Gallery API/UI | Content management | 4723 |
| Blueprint API/UI | Scenario design | 4725 |
| Gameboard API/UI | Competition/scoring | 4202 |
| Moodle | LMS integration | 8081 |
| LRsql | Learning Record Store (xAPI) | 9274 |
- Add repository to
scripts/repos.json - Update
Crucible.AppHost/AppHost.cswith service registration - Add launch configuration to
.vscode/launch.json - Create environment file in
.env/directory
- Add repository to
scripts/repos.json - Update
.vscode/launch.json(add path mappings for xdebug) - Update
Crucible.AppHost/AppHost.cs(add bind mounts) - Update
scripts/xdebug_filter.sh - For additional paths: also update
Dockerfile.MoodleCustom,add-moodle-mounts.sh,pre_configure.sh
Crucible.AppHost/AppHost.cs- Main service orchestration logicCrucible.AppHost/LaunchOptions.cs- Service toggle optionsCrucible.slnx- Solution file including external projectsscripts/repos.json- List of repositories to clonescripts/clone-repos.sh- Repository cloning script.env/*.env- Environment configurations for different launch profilesCrucible.AppHost/resources/- UI configuration files and Keycloak realm
- Before making any changes always run the apphost using
aspire runand inspect the state of resources to make sure you are building from a known state. - Changes to the AppHost.cs file will require a restart of the application to take effect.
- Make changes incrementally and run the aspire application using the
aspire runcommand to validate changes. - Use the Aspire MCP tools to check the status of resources and debug issues.
To check the status of resources defined in the app model use the list resources tool. This will show you the current state of each resource and if there are any issues. If a resource is not running as expected you can use the execute resource command tool to restart it or perform other actions.
IMPORTANT! When a user asks you to add a resource to the app model you should first use the list integrations tool to get a list of the current versions of all the available integrations. You should try to use the version of the integration which aligns with the version of the Aspire.AppHost.Sdk. Some integration versions may have a preview suffix. Once you have identified the correct integration you should always use the get integration docs tool to fetch the latest documentation for the integration and follow the links to get additional guidance.
IMPORTANT! Aspire is designed to capture rich logs and telemetry for all resources defined in the app model. Use the following diagnostic tools when debugging issues with the application before making changes to make sure you are focusing on the right things.
- list structured logs; use this tool to get details about structured logs.
- list console logs; use this tool to get details about console logs.
- list traces; use this tool to get details about traces.
- list trace structured logs; use this tool to get logs related to a trace
The playwright MCP server has also been configured in this repository and you should use it to perform functional investigations of the resources defined in the app model as you work on the codebase. To get endpoints that can be used for navigation using the playwright MCP server use the list resources tool.
IMPORTANT! The aspire workload is obsolete. You should never attempt to install or use the Aspire workload.
IMPORTANT! Always prefer official documentation when available. The following sites contain the official documentation for Aspire and related components
- https://aspire.dev
- https://learn.microsoft.com/dotnet/aspire
- https://nuget.org (for specific integration package details)