Build from source & CLI
This guide covers the source-build workflow, common CLI commands, repository paths, and output locations. For the fastest first run, use the npx workflow in the Quick Start.
Throughout this site, command examples are shown as tabs. Pick npx or Build from source once and your choice is remembered on every page.
Prerequisites
Section titled “Prerequisites”- Docker
- Node.js 18+
- pnpm
- AI provider credentials
Clone and build
Section titled “Clone and build”Use the source-build workflow if you want to run Shannon from a local clone, modify the open-source CLI, or keep the worker image built locally.
-
Clone Shannon:
Terminal window git clone https://github.com/KeygraphHQ/shannon.gitcd shannon -
Configure credentials:
Terminal window cp .env.example .env -
Install dependencies and build:
Terminal window pnpm installpnpm build -
Run a pentest:
Terminal window ./shannon start -u https://your-app.com -r /path/to/your-repo
At minimum, your .env file should include one supported AI provider credential:
ANTHROPIC_API_KEY=your-api-keyCLAUDE_CODE_MAX_OUTPUT_TOKENS=64000Environment variables can also be exported directly:
export ANTHROPIC_API_KEY="your-api-key"export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000See AI Providers for Bedrock, Vertex AI, and custom endpoint setup.
Prepare your repository
Section titled “Prepare your repository”Shannon can scan any repository on your machine. Pass an absolute or relative path with -r. The target repository is mounted read-only inside the worker container.
npx @keygraph/shannon start -u https://example.com -r /path/to/repo./shannon start -u https://example.com -r ./relative/pathCommon commands
Section titled “Common commands”Monitor progress:
npx @keygraph/shannon logs <workspace>npx @keygraph/shannon status./shannon logs <workspace>./shannon statusOpen the Temporal Web UI for detailed monitoring:
open http://localhost:8233Stop Shannon:
npx @keygraph/shannon stopnpx @keygraph/shannon stop --clean # confirms first; add --yes (or -y) to skipnpx @keygraph/shannon uninstall # confirms first; add --yes (or -y) to skip./shannon stop./shannon stop --clean # confirms first; add --yes (or -y) to skipUsage examples
Section titled “Usage examples”# Basic pentest.npx @keygraph/shannon start -u https://example.com -r /path/to/repo
# With a configuration file.npx @keygraph/shannon start -u https://example.com -r /path/to/repo -c /path/to/my-config.yaml
# Custom output directory.npx @keygraph/shannon start -u https://example.com -r /path/to/repo -o ./my-reports
# Named workspace.npx @keygraph/shannon start -u https://example.com -r /path/to/repo -w q1-audit
# List all workspaces.npx @keygraph/shannon workspaces./shannon start -u https://example.com -r /path/to/repo./shannon start -u https://example.com -r /path/to/repo -c /path/to/my-config.yaml./shannon start -u https://example.com -r /path/to/repo -o ./my-reports./shannon start -u https://example.com -r /path/to/repo -w q1-audit./shannon workspaces
# Rebuild the worker image../shannon build --no-cacheSee the CLI reference for the full list of commands and flags.
Output and results
Section titled “Output and results”Results are saved to the workspaces directory:
./workspaces/in source-build mode~/.shannon/workspaces/innpxmode
Use -o <path> to copy deliverables to a custom output directory after a run completes.
Output structure. The run directory’s top level holds only the final report; everything else is nested under a hidden .shannon/ directory:
workspaces/{hostname}_{sessionId}/|-- Security-Assessment-Report.md # the final report (the deliverable)`-- .shannon/ # internals |-- deliverables/ # report source, per-phase analysis, queues |-- agents/ # per-agent logs |-- prompts/ # rendered prompts |-- scratchpad/ # screenshots, scripts |-- session.json # resume state `-- workflow.logFor workspace naming and resuming interrupted runs, see Workspaces & Resuming.