> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lukan.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Configure Lukan Agent behavior, permissions, and integrations.

## Config File Locations

| Path                                | Description                           |
| ----------------------------------- | ------------------------------------- |
| `~/.config/lukan/config.json`       | Main configuration                    |
| `~/.config/lukan/credentials.json`  | API credentials                       |
| `~/.config/lukan/sessions/`         | Chat sessions                         |
| `~/.config/lukan/reminders.md`      | Reminders                             |
| `~/.config/lukan/workers.json`      | Worker definitions                    |
| `~/.config/lukan/workers/`          | Worker run history                    |
| `~/.config/lukan/trusted-dirs.json` | Trusted directories                   |
| `~/.config/lukan/MEMORY.md`         | Global memory                         |
| `~/.config/lukan/memory.md`         | Global memory (alternative path)      |
| `~/.config/lukan/indexes/`          | Symbol index files                    |
| `~/.config/lukan/plugins/`          | Installed plugins                     |
| `.lukan/config.json`                | Per-project permissions               |
| `.lukan/memories/MEMORY.md`         | Per-project memory                    |
| `.lukan/memory.md`                  | Per-project memory (alternative path) |
| `.lukan/.active`                    | Project memory activation marker      |
| `.lukan/skills/`                    | Per-project skills                    |
| `.lukan/plans/`                     | Implementation plans                  |
| `.lukan/tasks.md`                   | Session task list                     |

## Main Config (`config.json`)

```json theme={null}
{
  "provider": "nebius",
  "model": "MiniMaxAI/MiniMax-M2.1",
  "maxTokens": 8192,
  "temperature": 0.7,
  "timezone": "Europe/Madrid",
  "syntaxTheme": "vitesse-dark",
  "models": ["anthropic:claude-sonnet-4-5-20250929", "nebius:MiniMaxAI/MiniMax-M2.1"],
  "visionModel": "anthropic:claude-sonnet-4-5-20250929",
  "visionModels": [],
  "disabledTools": [],
  "browserCdpUrl": null,
  "browserAllowInternal": false,
  "browserScreenshots": true,
  "webPassword": null,
  "webTokenTTL": 24,
  "openaiCompatibleBaseURL": null,
  "openaiCompatibleProviderName": null,
  "openaiCompatibleProviderOptions": {},
  "plugins": {
    "enabled": ["whatsapp", "email"],
    "overrides": {
      "whatsapp": {
        "provider": "anthropic",
        "model": "claude-sonnet-4-5-20250929",
        "tools": ["ReadFiles", "WebSearch"],
        "maxResponseLen": 10000,
        "autoRestart": true
      }
    }
  }
}
```

### New Config Fields

| Field                             | Type       | Description                                   |
| --------------------------------- | ---------- | --------------------------------------------- |
| `disabledTools`                   | `string[]` | List of tool names to disable globally        |
| `visionModels`                    | `string[]` | List of available vision models               |
| `openaiCompatibleBaseURL`         | `string`   | Base URL for OpenAI-compatible provider       |
| `openaiCompatibleProviderName`    | `string`   | Display name for OpenAI-compatible provider   |
| `openaiCompatibleProviderOptions` | `object`   | Custom options for OpenAI-compatible provider |
| `plugins`                         | `object`   | Plugin system configuration                   |
| `plugins.enabled`                 | `string[]` | List of plugin names to auto-start            |
| `plugins.overrides`               | `object`   | Per-plugin configuration overrides            |

## Credentials (`credentials.json`)

```json theme={null}
{
  "nebiusApiKey": "...",
  "anthropicApiKey": "...",
  "fireworksApiKey": "...",
  "githubToken": "...",
  "copilotToken": "...",
  "braveApiKey": "...",
  "tavilyApiKey": "...",
  "openaiApiKey": "...",
  "codexAccessToken": "...",
  "codexRefreshToken": "...",
  "zaiApiKey": "...",
  "ollamaCloudApiKey": "...",
  "openaiCompatibleApiKey": "...",
  "lukanCloudApiKey": "...",
  "googleClientId": "...",
  "googleClientSecret": "...",
  "googleAccessToken": "...",
  "googleRefreshToken": "...",
  "skillCredentials": {
    "my-skill": {
      "CUSTOM_API_KEY": "..."
    }
  }
}
```

### New Credential Fields

| Field                    | Description                                                     |
| ------------------------ | --------------------------------------------------------------- |
| `ollamaCloudApiKey`      | API key for Ollama Cloud provider                               |
| `openaiCompatibleApiKey` | API key for OpenAI-compatible endpoint (optional)               |
| `lukanCloudApiKey`       | API key for Lukan Cloud provider                                |
| `skillCredentials`       | Per-skill environment variables (injected when skill is loaded) |

Environment variables are checked first (e.g., `NEBIUS_API_KEY`, `ANTHROPIC_API_KEY`, `OLLAMA_CLOUD_API_KEY`, `OPENAI_COMPATIBLE_API_KEY`, `LUKAN_CLOUD_URL`).

## Project Configuration (`.lukan/config.json`)

```json theme={null}
{
  "permissionMode": "manual",
  "permissions": {
    "deny": [],
    "ask": ["Bash(git push:*)", "Bash(git commit:*)", "Bash(rm:*)", "Bash(sudo:*)"],
    "allow": ["Bash(git status:*)", "Bash(git diff:*)", "Bash(git log:*)", "Bash(npm:*)", "Bash(bun:*)"]
  },
  "trusted": false,
  "allowedPaths": ["~/other-project"]
}
```

### New Project Config Fields

| Field          | Type       | Description                                                     |
| -------------- | ---------- | --------------------------------------------------------------- |
| `trusted`      | `boolean`  | Marks workspace as trusted (reduces permission prompts)         |
| `allowedPaths` | `string[]` | Extra directories the agent can access (supports `~` expansion) |

## Provider Configuration

You can override the provider per-channel (WhatsApp, Email) via plugin overrides in `config.json`:

```json theme={null}
{
  "plugins": {
    "overrides": {
      "whatsapp": {
        "provider": "anthropic",
        "model": "claude-sonnet-4-5-20250929"
      }
    }
  }
}
```

See [Providers](/providers) for available providers and models.
