Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ ANTHROPIC_API_KEY=your-api-key-here
# OPENROUTER_API_KEY=sk-or-your-openrouter-key
# ROUTER_DEFAULT=openrouter,google/gemini-3-flash-preview

# =============================================================================
# OPTION 3: Custom Anthropic Endpoint with Custom Model
# =============================================================================
# Use a custom Anthropic-compatible API endpoint with a specific model name.
# ANTHROPIC_API_KEY=your-custom-api-key
# ANTHROPIC_BASE_URL=https://your-custom-endpoint.com
# ANTHROPIC_MODEL=claude-sonnet-4-5-20250929 # or any model your endpoint supports

# =============================================================================
# Available Models
# =============================================================================
Expand Down
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ Shannon is available in two editions:
- [Usage Examples](#usage-examples)
- [Configuration (Optional)](#configuration-optional)
- [[EXPERIMENTAL - UNSUPPORTED] Router Mode (Alternative Providers)](#experimental---unsupported-router-mode-alternative-providers)
- [Custom Anthropic Endpoint](#custom-anthropic-endpoint)
- [Output and Results](#output-and-results)
- [Sample Reports](#-sample-reports)
- [Architecture](#️-architecture)
Expand Down Expand Up @@ -295,6 +296,26 @@ ROUTER_DEFAULT=openai,gpt-5.2 # provider,model format

This feature is experimental and unsupported. Output quality depends heavily on the model. Shannon is built on top of the Anthropic Agent SDK and is optimized and primarily tested with Anthropic Claude models. Alternative providers may produce inconsistent results (including failing early phases like Recon) depending on the model and routing setup.

### Custom Anthropic Endpoint

Shannon supports custom Anthropic-compatible API endpoints with configurable model names. This is useful for:

* **Proxied Anthropic access** — route through corporate proxies or API gateways
* **Custom deployments** — use self-hosted or alternative Anthropic-compatible endpoints
* **Model selection** — specify a different Claude model than the default

#### Configuration

Add to your `.env` file:

```bash
ANTHROPIC_API_KEY=your-api-key
ANTHROPIC_BASE_URL=https://your-custom-endpoint.com # Optional: custom endpoint
ANTHROPIC_MODEL=claude-sonnet-4-5-20250929 # Optional: custom model name
```

The `ANTHROPIC_MODEL` environment variable overrides the default model (`claude-sonnet-4-5-20250929`). Your endpoint must support the specified model.

### Output and Results

All results are saved to `./audit-logs/{hostname}_{sessionId}/` by default. Use `--output <path>` to specify a custom directory.
Expand Down
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ services:
- ANTHROPIC_BASE_URL=${ANTHROPIC_BASE_URL:-} # Optional: route through claude-code-router
- ANTHROPIC_AUTH_TOKEN=${ANTHROPIC_AUTH_TOKEN:-} # Auth token for router
- ROUTER_DEFAULT=${ROUTER_DEFAULT:-} # Model name when using router (e.g., "gemini,gemini-2.5-pro")
- ANTHROPIC_MODEL=${ANTHROPIC_MODEL:-} # Custom model name (default: claude-sonnet-4-5-20250929)
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN:-}
- CLAUDE_CODE_MAX_OUTPUT_TOKENS=${CLAUDE_CODE_MAX_OUTPUT_TOKENS:-64000}
depends_on:
Expand Down
2 changes: 1 addition & 1 deletion src/ai/claude-executor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ export async function runClaudePrompt(

const mcpServers = buildMcpServers(sourceDir, agentName);
const options = {
model: 'claude-sonnet-4-5-20250929',
model: process.env.ANTHROPIC_MODEL || 'claude-sonnet-4-5-20250929',
maxTurns: 10_000,
cwd: sourceDir,
permissionMode: 'bypassPermissions' as const,
Expand Down