Configuration Reference
Full schema for ~/.airupt/config.yml.
assistant
| Field | Type | Default | Description |
|---|---|---|---|
name | string | Airupt | Assistant name shown in responses |
language | string | en | Response language (BCP-47 code) |
llm
| Field | Type | Default | Description |
|---|---|---|---|
provider | openai | anthropic | custom | openai | LLM backend |
model | string | gpt-4o | Model identifier |
api_key | string | — | API key (required) |
base_url | string | ~ | Override API base URL for custom endpoints |
temperature | number | 0.7 | Sampling temperature, 0–1 |
max_tokens | number | 4096 | Max tokens per response |
channels
channels.telegram
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable Telegram channel |
bot_token | string | — | Token from BotFather |
allowed_users | number[] | [] | Whitelist of Telegram user IDs. Empty = allow all |
channels.whatsapp
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable WhatsApp channel |
phone_number_id | string | — | Meta phone number ID |
access_token | string | — | Meta permanent access token |
channels.discord
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable Discord channel |
bot_token | string | — | Discord bot token |
guild_id | string | — | Server (guild) ID |
channel_id | string | — | Channel ID to listen in |
memory
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable memory system |
auto_extract | boolean | true | Auto-extract facts from conversation |
max_entries | number | 1000 | Soft limit on stored entries |
skills
| Field | Type | Default | Description |
|---|---|---|---|
web_browse | boolean | true | Web search and browsing |
email | boolean | false | Email read/send |
calendar | boolean | false | Calendar read/write |
file_manager | boolean | false | Local file access |
custom_skills_dir | string | ~ | Path to custom skills directory |
email_provider | gmail | imap | gmail | Email backend |
calendar_provider | google | caldav | google | Calendar backend |
file_manager_root | string | ~ | Restrict file access to this path |
costs
| Field | Type | Default | Description |
|---|---|---|---|
daily_limit_usd | number | null | ~ | Pause when daily spend exceeds this |
monthly_limit_usd | number | null | ~ | Pause when monthly spend exceeds this |
alert_threshold | number | 0.80 | Notify at this fraction of any limit |
scheduled_tasks
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable scheduled task runner |
timezone | string | UTC | IANA timezone for task scheduling |
logging
| Field | Type | Default | Description |
|---|---|---|---|
level | debug | info | warn | error | info | Log verbosity |
file | string | ~/.airupt/airupt.log | Log file path |
Environment Variable Overrides
Any field can be set via environment variable using AIRUPT_<SECTION>_<KEY> in uppercase with underscores:
bash
AIRUPT_LLM_API_KEY=sk-...
AIRUPT_LLM_MODEL=gpt-4o-mini
AIRUPT_COSTS_DAILY_LIMIT_USD=5.00
AIRUPT_CHANNELS_TELEGRAM_BOT_TOKEN=123:abcEnvironment variables take precedence over config.yml.