feat: add MiniMax provider support to Shannon skill

Add MiniMax as a supported AI backend for Shannon pentesting via the
Anthropic SDK compatibility layer. MiniMax uses ANTHROPIC_AUTH_TOKEN +
ANTHROPIC_BASE_URL instead of ANTHROPIC_API_KEY.

- Add MiniMax credential detection in SKILL.md and setup script
- Add dedicated "Using MiniMax as AI Provider" section with setup guide
- Update env var table with MiniMax-specific variables
- Update frontmatter optionalEnv with new env vars

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Goose
2026-04-03 14:42:43 +00:00
parent 1a6af44a73
commit 69604deafd
2 changed files with 83 additions and 3 deletions
+78 -3
View File
@@ -17,6 +17,10 @@ metadata:
env: env:
- ANTHROPIC_API_KEY - ANTHROPIC_API_KEY
optionalEnv: optionalEnv:
- ANTHROPIC_AUTH_TOKEN
- ANTHROPIC_BASE_URL
- ANTHROPIC_MODEL
- ANTHROPIC_SMALL_FAST_MODEL
- CLAUDE_CODE_OAUTH_TOKEN - CLAUDE_CODE_OAUTH_TOKEN
- CLAUDE_CODE_USE_BEDROCK - CLAUDE_CODE_USE_BEDROCK
- CLAUDE_CODE_USE_VERTEX - CLAUDE_CODE_USE_VERTEX
@@ -201,9 +205,13 @@ Check that AI provider credentials are available:
```bash ```bash
cd "$SHANNON_HOME" cd "$SHANNON_HOME"
# Check for Anthropic API key (primary) # Check for AI provider credentials
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
echo "✅ ANTHROPIC_API_KEY is set" echo "✅ ANTHROPIC_API_KEY is set"
elif [ -n "${ANTHROPIC_AUTH_TOKEN:-}" ] && [ -n "${ANTHROPIC_BASE_URL:-}" ]; then
echo "✅ MiniMax mode: ANTHROPIC_AUTH_TOKEN + ANTHROPIC_BASE_URL are set"
echo " Base URL: $ANTHROPIC_BASE_URL"
echo " Model: ${ANTHROPIC_MODEL:-MiniMax-M2.7}"
elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then
echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set" echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set"
elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then
@@ -212,13 +220,14 @@ elif [ "${CLAUDE_CODE_USE_VERTEX:-}" = "1" ]; then
echo "✅ Google Vertex AI mode enabled" echo "✅ Google Vertex AI mode enabled"
else else
echo "❌ No AI credentials found." echo "❌ No AI credentials found."
echo "Set one of: ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN, or enable Bedrock/Vertex" echo "Set one of: ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN+ANTHROPIC_BASE_URL (MiniMax), CLAUDE_CODE_OAUTH_TOKEN, or enable Bedrock/Vertex"
exit 1 exit 1
fi fi
``` ```
If no credentials are found, explain the options: If no credentials are found, explain the options:
- **Direct API** (recommended): `export ANTHROPIC_API_KEY=sk-ant-...` - **Direct API** (recommended): `export ANTHROPIC_API_KEY=sk-ant-...`
- **MiniMax**: Set `ANTHROPIC_AUTH_TOKEN` and `ANTHROPIC_BASE_URL` (see MiniMax section below)
- **OAuth**: `export CLAUDE_CODE_OAUTH_TOKEN=...` - **OAuth**: `export CLAUDE_CODE_OAUTH_TOKEN=...`
- **AWS Bedrock**: `export CLAUDE_CODE_USE_BEDROCK=1` + AWS credentials - **AWS Bedrock**: `export CLAUDE_CODE_USE_BEDROCK=1` + AWS credentials
- **Google Vertex**: `export CLAUDE_CODE_USE_VERTEX=1` + service account in `./credentials/` - **Google Vertex**: `export CLAUDE_CODE_USE_VERTEX=1` + service account in `./credentials/`
@@ -367,16 +376,82 @@ Automatically translate `localhost` URLs to `host.docker.internal` in the comman
--- ---
## Using MiniMax as AI Provider
Shannon supports [MiniMax](https://platform.minimax.io) as an alternative AI backend via the Anthropic SDK compatibility layer. MiniMax provides the `MiniMax-M2.7` model through an Anthropic-compatible API endpoint.
### MiniMax Setup
1. **Get a MiniMax API key** from [platform.minimax.io](https://platform.minimax.io).
2. **Configure environment variables** — either export them directly or add to `~/.claude/settings.json`:
```bash
# Export directly
export ANTHROPIC_AUTH_TOKEN="your-minimax-api-key"
export ANTHROPIC_BASE_URL="https://api.minimax.io/anthropic" # International
# export ANTHROPIC_BASE_URL="https://api.minimaxi.com/anthropic" # China
# Set model (all model slots use the same MiniMax model)
export ANTHROPIC_MODEL="MiniMax-M2.7"
export ANTHROPIC_SMALL_FAST_MODEL="MiniMax-M2.7"
export ANTHROPIC_DEFAULT_SONNET_MODEL="MiniMax-M2.7"
export ANTHROPIC_DEFAULT_OPUS_MODEL="MiniMax-M2.7"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="MiniMax-M2.7"
```
Or in `~/.claude/settings.json`:
```json
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "your-minimax-api-key",
"ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
"ANTHROPIC_MODEL": "MiniMax-M2.7",
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2.7",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2.7",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M2.7",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2.7",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
```
3. **Clear conflicting env vars** — ensure `ANTHROPIC_API_KEY` is not set when using MiniMax, as it takes precedence:
```bash
unset ANTHROPIC_API_KEY
```
4. **Run Shannon normally** — the MiniMax credentials are passed through to Shannon's Docker containers via the Anthropic SDK compatibility layer:
```bash
cd "$SHANNON_HOME" && ./shannon start URL=http://localhost:3000 REPO=myapp
```
### MiniMax Notes
- MiniMax uses `ANTHROPIC_AUTH_TOKEN` (not `ANTHROPIC_API_KEY`) for authentication
- The `ANTHROPIC_BASE_URL` routes requests to MiniMax's Anthropic-compatible endpoint
- Set `API_TIMEOUT_MS=3000000` for extended timeouts (recommended for pentesting workloads)
- Set `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` to reduce non-essential API calls
- MiniMax provides a single model (`MiniMax-M2.7`) that is used for all model slots
---
## Configuration Reference ## Configuration Reference
### Environment Variables ### Environment Variables
| Variable | Required | Description | | Variable | Required | Description |
|----------|----------|-------------| |----------|----------|-------------|
| `ANTHROPIC_API_KEY` | One of these | Direct Anthropic API key | | `ANTHROPIC_API_KEY` | One of these | Direct Anthropic API key |
| `CLAUDE_CODE_OAUTH_TOKEN` | required | Anthropic OAuth token | | `ANTHROPIC_AUTH_TOKEN` | required | MiniMax (or compatible) auth token |
| `ANTHROPIC_BASE_URL` | | API base URL (for MiniMax: `https://api.minimax.io/anthropic`) |
| `ANTHROPIC_MODEL` | | Model override (e.g., `MiniMax-M2.7`) |
| `ANTHROPIC_SMALL_FAST_MODEL` | | Small/fast model override |
| `CLAUDE_CODE_OAUTH_TOKEN` | | Anthropic OAuth token |
| `CLAUDE_CODE_USE_BEDROCK` | | Set to `1` for AWS Bedrock | | `CLAUDE_CODE_USE_BEDROCK` | | Set to `1` for AWS Bedrock |
| `CLAUDE_CODE_USE_VERTEX` | | Set to `1` for Google Vertex AI | | `CLAUDE_CODE_USE_VERTEX` | | Set to `1` for Google Vertex AI |
| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Recommended | Set to `64000` | | `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Recommended | Set to `64000` |
| `API_TIMEOUT_MS` | Optional | Request timeout in ms (MiniMax: `3000000`) |
| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Optional | Set to `1` to reduce non-essential calls |
| `SHANNON_HOME` | Optional | Shannon install dir (default: `~/shannon`) | | `SHANNON_HOME` | Optional | Shannon install dir (default: `~/shannon`) |
### YAML Config Options ### YAML Config Options
+5
View File
@@ -39,6 +39,10 @@ echo ""
echo "API Credentials:" echo "API Credentials:"
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
echo "✅ ANTHROPIC_API_KEY is set" echo "✅ ANTHROPIC_API_KEY is set"
elif [ -n "${ANTHROPIC_AUTH_TOKEN:-}" ] && [ -n "${ANTHROPIC_BASE_URL:-}" ]; then
echo "✅ MiniMax mode: ANTHROPIC_AUTH_TOKEN + ANTHROPIC_BASE_URL are set"
echo " Base URL: $ANTHROPIC_BASE_URL"
echo " Model: ${ANTHROPIC_MODEL:-MiniMax-M2.7}"
elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then
echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set" echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set"
elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then
@@ -48,6 +52,7 @@ elif [ "${CLAUDE_CODE_USE_VERTEX:-}" = "1" ]; then
else else
echo "⚠️ No AI credentials detected. Set one of:" echo "⚠️ No AI credentials detected. Set one of:"
echo " export ANTHROPIC_API_KEY=sk-ant-..." echo " export ANTHROPIC_API_KEY=sk-ant-..."
echo " export ANTHROPIC_AUTH_TOKEN=... + export ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic (MiniMax)"
echo " export CLAUDE_CODE_OAUTH_TOKEN=..." echo " export CLAUDE_CODE_OAUTH_TOKEN=..."
echo " export CLAUDE_CODE_USE_BEDROCK=1" echo " export CLAUDE_CODE_USE_BEDROCK=1"
echo " export CLAUDE_CODE_USE_VERTEX=1" echo " export CLAUDE_CODE_USE_VERTEX=1"