### Run Development Quickstart Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md Execute the development quickstart using make. This is the fastest way to get a local setup running. ```bash make dev-quickstart ``` -------------------------------- ### Release Quick Start Make Commands Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Commands for managing the release-backed quickstart, including starting, stopping, purging, and checking the pinned version. ```bash # Release Quick Start (pinned published artifacts) make quickstart # Start the pinned release quickstart + Counter TUI make quickstart-up # Start pinned release infrastructure only make quickstart-counter # Launch pinned release Counter TUI make quickstart-down # Stop pinned release containers make quickstart-purge # Stop pinned release containers and delete data make quickstart-version # Show pinned quickstart release make quickstart-pin VERSION=v... # Maintainer only - verify and update quickstart pin ``` -------------------------------- ### Quick Start SmokedMeat Installation Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Installs SmokedMeat and launches the stable release quickstart stack locally, including the operator TUI and local C2 teamserver. ```bash git clone https://github.com/boostsecurityio/smokedmeat.git cd smokedmeat make quickstart ``` -------------------------------- ### Development Quick Start Make Commands Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Commands for starting, stopping, and purging the development environment, including Docker infrastructure and the Counter TUI. ```bash # Dev Quick Start (Docker infra + local Counter) make dev-quickstart # Start or reuse everything + launch Counter TUI make dev-quickstart-up # Start tunnel + NATS + Kitchen (no Counter) make dev-quickstart-counter # Launch Counter TUI (after dev-quickstart-up) make dev-quickstart-down # Stop containers make dev-quickstart-purge # Stop and delete all data ``` -------------------------------- ### Start Development Infrastructure Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Starts the infrastructure components for local development (cloudflared, nats, Kitchen C2) without launching the operator TUI. ```bash make dev-quickstart-up ``` -------------------------------- ### Stop and Purge Quickstart Stack Source: https://github.com/boostsecurityio/smokedmeat/blob/main/TUTORIAL.md Use these make commands to stop the running containers and optionally delete all associated data from the quickstart environment. ```bash make quickstart-down ``` ```bash make quickstart-purge ``` -------------------------------- ### Local Development Quick Start Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md Use these commands to quickly set up the development environment, including Docker containers for tunneling, NATS, and Kitchen, and to prewarm the cloud shell image. ```bash # One command - starts Docker (tunnel + NATS + Kitchen), prewarms cloud shell image, and launches Counter via go run make dev-quickstart # Release-backed quickstart uses the pinned version in configs/quickstart-release.mk make quickstart # If state gets corrupted: make dev-quickstart-purge && make dev-quickstart ``` -------------------------------- ### Quickstart Whooli Environment Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/WHOOLI.md Run this command to set up the Whooli environment. You will be prompted to enter 'whooli' as the target. ```bash make quickstart ``` -------------------------------- ### Start Self-Hosted Kitchen with Docker Compose Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md Start the Kitchen service using Docker Compose. Ensure the DOMAIN environment variable is set and a DNS record points to the host. This command builds the images and runs the services in detached mode. ```bash export DOMAIN=kitchen.example.com docker compose -f deployments/docker-compose.yml up -d --build ``` -------------------------------- ### Stop and Remove Quickstart Containers Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Stops the Docker containers used by the quickstart environment. Use 'purge' to also delete all associated data. ```bash make quickstart-down ``` -------------------------------- ### Purge Quickstart Data Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Stops and deletes all data associated with the quickstart Docker environment. ```bash make quickstart-purge ``` -------------------------------- ### Purging Corrupted State Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md If the development or release quickstart state becomes corrupted, use the purge command followed by the quickstart command to reset the environment. ```bash make dev-quickstart-purge && make dev-quickstart ``` -------------------------------- ### List SSH Keys for Operator Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md List keys from the local SSH agent to register an operator key for self-hosted Kitchen. Requires Go to be installed. ```bash go run ./cmd/counter --list-keys ``` -------------------------------- ### Stop Development Environment Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Stops the Docker containers used by the development quickstart environment. ```bash make dev-quickstart-down ``` -------------------------------- ### Valid Test Example for State Transition Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md This is a good test example that validates a specific behavior: pressing Escape in the wizard phase should return to the findings view. ```go func TestWizard_EscapeReturnsToFindings(t *testing.T) { m := modelInWizardPhase() m, _ = m.Update(tea.KeyPressMsg{Code: tea.KeyEscape}) assert.Equal(t, PhaseRecon, m.phase, "Esc should exit wizard to findings") assert.Equal(t, ViewFindings, m.view) } ``` -------------------------------- ### Set Goal Command Example Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/tasks/goal-oriented-killchain.md Use the `set goal` command to define the operator's intended end state for the kill chain. This command specifies the target repository and the desired outcome. ```text set goal repo:whooli/infrastructure-definitions poison-deploy-cache ``` -------------------------------- ### Run Full E2E Exploit Lifecycle Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md Automated E2E test command to execute the full lifecycle: infrastructure setup, analysis, exploit, callback, and cleanup. Configuration is managed in `.claude/e2e/.env`. ```bash make e2e-exploit # Full lifecycle: infra up → analysis → exploit → callback → cleanup ``` -------------------------------- ### Useless Test Example Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md This is an example of a bad test that asserts a non-nil value without testing any meaningful behavior. Avoid such tests. ```go func TestNewModel(t *testing.T) { m := NewModel() assert.NotNil(t, m) // Useless - tests nothing meaningful } ``` -------------------------------- ### Correct Ultraviolet Layout Constraints Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md Demonstrates the correct way to use ultraviolet layout constraints for splitting screen areas. Avoid manual width/height calculations. ```go area := image.Rect(0, 0, width, height) leftArea, rightArea := layout.SplitHorizontal(area, layout.Percent(50)) ``` -------------------------------- ### Run Integration Tests Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md To run integration tests, use the command 'go test -tags=integration ./...'. This requires Docker to be set up. ```bash go test -tags=integration ./... # Integration tests (requires Docker) ``` -------------------------------- ### Build and Tagging Make Commands Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Commands for building the brisket implant for various platforms and managing release tags. ```bash # Build make build-brisket # Build implant (Linux amd64) make build-brisket-all # Build for all platforms make tag VERSION=v... # Create, sign, and push a release tag make pinact # Pin GitHub Actions (run after workflow changes) ``` -------------------------------- ### Launch Development Operator TUI Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Launches the operator TUI from source after the development infrastructure has been started. ```bash make dev-quickstart-counter ``` -------------------------------- ### Development Make Commands Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md A comprehensive list of `make` commands for managing the development environment, including starting/stopping services, purging data, and launching the Counter TUI. ```bash # Dev Quick Start (Docker infra + local Counter) make dev-quickstart # Start or reuse everything + launch Counter TUI make dev-quickstart-up # Start tunnel + NATS + Kitchen (no Counter) make dev-quickstart-counter # Launch Counter TUI (after dev-quickstart-up) make dev-quickstart-down # Stop containers make dev-quickstart-purge # Stop and delete all data # Release Quick Start (pinned published artifacts) make quickstart # Start the pinned release quickstart + Counter TUI make quickstart-up # Start pinned release infrastructure only make quickstart-counter # Launch pinned release Counter TUI make quickstart-down # Stop pinned release containers make quickstart-purge # Stop pinned release containers and delete data make quickstart-version # Show pinned quickstart release make quickstart-pin VERSION=v... # Maintainer only - verify and update quickstart pin # Counter (Remote Kitchen) make counter # Run Counter TUI (uses ~/.smokedmeat config) # Testing make test # Run tests make lint # Run linter # E2E Testing (Docker + tmux, used by coding agents) make e2e-exploit # Full exploit flow test (automated) make e2e-up # Start infrastructure make e2e-down # Stop containers make e2e-purge # Stop and delete all data make e2e-counter # Launch Counter in tmux (127x40) make e2e-capture # Capture tmux pane output make e2e-keys KEYS='...' # Send keystrokes to tmux make e2e-kitchen-rebuild # Rebuild Kitchen only (tunnel stays) # Build make build-brisket # Build implant (Linux amd64) make build-brisket-all # Build for all platforms make tag VERSION=v... # Create, sign, and push a release tag make pinact # Pin GitHub Actions (run after workflow changes) ``` -------------------------------- ### Purge Development Data Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Stops and deletes all data associated with the development quickstart Docker environment. ```bash make dev-quickstart-purge ``` -------------------------------- ### Kitchen DB Schema Versioning Guidance Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Guidelines for managing Kitchen database schema versions, ensuring compatibility between app releases and handling schema mismatches. ```markdown Kitchen persistence in `internal/kitchen/db/` must use an explicit schema version stored in DB metadata. Treat the DB schema version as separate from the app release version. - Start the public `v0.1.x` line at schema `1.0`. - Patch and minor app releases within the same schema major must be able to open existing quickstart and dev-quickstart Kitchen volumes. - If a DB file predates schema metadata but already has the known buckets for the current line, treat it as legacy-current and backfill the schema metadata on open. - On schema major mismatch, fail fast during Kitchen startup with a clear error telling the operator to purge the Kitchen volume with `make quickstart-purge` or `make dev-quickstart-purge`. ``` -------------------------------- ### Rebuilding Kitchen and State Management Source: https://github.com/boostsecurityio/smokedmeat/blob/main/AGENTS.md Use `make e2e-kitchen-rebuild` when working on Kitchen code. For corrupted states, purge and restart with `make dev-quickstart-purge && make dev-quickstart`. ```bash # Kitchen code make e2e-kitchen-rebuild # Corrupted state make dev-quickstart-purge && make dev-quickstart ``` -------------------------------- ### Run Unit Tests Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md Execute unit tests using the 'make test' command. For more detailed output, use 'make test-verbose'. Race conditions can be detected with 'make test-race'. ```bash make test # Unit tests make test-verbose # Verbose output make test-race # Race detection ``` -------------------------------- ### Connect Counter to Self-Hosted Kitchen Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md Connect the Counter client to the self-hosted Kitchen instance. Replace with your operator name. If configuration is present in ~/.smokedmeat/config.yaml, 'make counter' is sufficient. ```bash go run ./cmd/counter -kitchen https://kitchen.example.com -operator ``` ```bash make counter ``` -------------------------------- ### Testing and Linting Make Commands Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Commands for running tests and linters within the project. ```bash # Testing make test # Run tests make lint # Run linter ``` -------------------------------- ### Run Unit Tests Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Execute unit tests for the project. ```bash make test ``` -------------------------------- ### Rebuilding Kitchen Code Source: https://github.com/boostsecurityio/smokedmeat/blob/main/CLAUDE.md When working on Kitchen code, use `make e2e-kitchen-rebuild` to rebuild only the Kitchen component. For a full environment restart including Kitchen, use `make dev-quickstart`. ```bash make e2e-kitchen-rebuild ``` -------------------------------- ### Enumerate Self-Hosted Runners Command Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/tasks/self-hosted-runner-follow-up-and-validation.md Use the REPL command to initiate self-hosted runner enumeration for a specific repository. Results are written to Pantry as evidence. ```bash enumerate-self-hosted-runners repo:org/repo ``` -------------------------------- ### Run Local Development Compose with Overrides Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md Run Kitchen directly on localhost using Docker Compose with development overrides. This exposes Kitchen on http://localhost:8080 and NATS on localhost:4222. ```bash docker compose -f deployments/docker-compose.yml -f deployments/docker-compose.dev.yml up -d --build ``` -------------------------------- ### Run Unit Tests with Race Detection Source: https://github.com/boostsecurityio/smokedmeat/blob/main/GEMINI.md Execute unit tests with race detection enabled using 'make test-race'. ```bash make test-race ``` -------------------------------- ### Run Linter Source: https://github.com/boostsecurityio/smokedmeat/blob/main/README.md Perform linting on the project code. ```bash make lint ``` -------------------------------- ### Create and List Worktrees Source: https://github.com/boostsecurityio/smokedmeat/blob/main/docs/worktrees-flow.md Synchronizes the main branch and creates multiple feature worktrees with default naming conventions. Use 'make worktree-list' to view all active worktrees. ```bash make worktree-sync-main make worktree-add NAME=session-a make worktree-add NAME=session-b make worktree-add NAME=session-c make worktree-list ```