Configuration - Akira Documentation
Description: LLM Security Testing Framework - Documentation

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Configuration

Akira configuration options and files.

## Data Directory

Akira stores data in `~/.akira/`:

    ~/.akira/
    ├── akira.db          # SQLite database
    └── history           # Command history

### Custom Location

Set `AKIRA_DATA_DIR` environment variable:

    export AKIRA_DATA_DIR=/custom/path

## Global Options

Set with `setg` command in console:

Option | Type | Default | Description
--- | --- | --- | ---
`verbose` | bool | `false` | Enable verbose output
`timeout` | int | `30` | Request timeout (seconds)
`max_retries` | int | `3` | Maximum retry attempts
`parallel_requests` | int | `5` | Concurrent request limit

Example:

    akira> setg verbose true
    akira> setg timeout 60

## Environment Variables

### API Keys

    export OPENAI_API_KEY="sk-..."
    export ANTHROPIC_API_KEY="sk-ant-..."
    export HF_TOKEN="hf_..."

### AWS Credentials

    export AWS_ACCESS_KEY_ID="..."
    export AWS_SECRET_ACCESS_KEY="..."
    export AWS_DEFAULT_REGION="us-east-1"

Or use `~/.aws/credentials`.

### Akira Settings

    export AKIRA_DATA_DIR="/custom/data/path"

## Module Options

Each module has its own options. View with:

    akira> show options

Common options across modules:

Option | Description
--- | ---
`canary` | Marker string for detection
`timeout` | Module-specific timeout
`use_fuzzing` | Enable payload fuzzing
`fuzz_count` | Number of fuzz variations
`variant` | Attack variant to use

## Target Configuration

### Request Templates

JSON template with `$payload` placeholder:

    {
      "messages": [
        {"role": "user", "content": "$payload"}
      ],
      "model": "gpt-4",
      "max_tokens": 500
    }

### Response Paths

Dot-notation path to extract response:

    choices.0.message.content
    data.response.text
    output

### Authentication Types

Type | Header Sent
--- | ---
`bearer` | `Authorization: Bearer <key>`
`api-key` | `X-API-Key: <key>`
`basic` | `Authorization: Basic <base64>`
`none` | No auth header

Custom header:

    --auth-type api-key --auth-header X-Custom-Auth

## Database Schema

SQLite database at `~/.akira/akira.db`:

### attack_history

Column | Type | Description
--- | --- | ---
id | INTEGER | Primary key
timestamp | REAL | Unix timestamp
module | TEXT | Module name
target_type | TEXT | Target type
target_url | TEXT | Target URL
success | INTEGER | 0 or 1
confidence | REAL | 0.0 to 1.0
payload | TEXT | Payload used
response | TEXT | LLM response
details_json | TEXT | JSON metadata

### target_profiles

Column | Type | Description
--- | --- | ---
name | TEXT | Profile name (PK)
target_type | TEXT | Target type
url | TEXT | Endpoint URL
config_json | TEXT | JSON config
created_at | REAL | Unix timestamp

### prompt_cache

Column | Type | Description
--- | --- | ---
key | TEXT | Cache key (PK)
prompt_text | TEXT | Cached prompt
source | TEXT | Source identifier
updated_at | REAL | Unix timestamp

### response_cache

Column | Type | Description
--- | --- | ---
request_hash | TEXT | SHA256 hash (PK)
response | TEXT | Cached response
created_at | REAL | Unix timestamp
expires_at | REAL | Expiration time