Skip to content

Configuration Reference

Quick reference for all config.toml options. For detailed explanations, see the linked Systems pages.

Global Settings

workspace = "~/.ash/workspace"
OptionTypeDefaultDescription
workspacepath"~/.ash/workspace"Directory for SOUL.md and skills

API Keys

[anthropic]
api_key = "sk-ant-..."
[openai]
api_key = "sk-..."
SectionOptionEnv VariableDescription
[anthropic]api_keyANTHROPIC_API_KEYAnthropic API key
[openai]api_keyOPENAI_API_KEYOpenAI API key

Models

See LLM Providers for details.

[models.default]
provider = "anthropic"
model = "claude-haiku-4-5"
temperature = 0.7
max_tokens = 4096
[models.sonnet]
provider = "anthropic"
model = "claude-sonnet-4-5"
max_tokens = 8192
OptionTypeDefaultDescription
providerstringrequired"anthropic" or "openai"
modelstringrequiredModel identifier
temperaturefloatnullSampling temperature (0.0-1.0)
max_tokensint4096Maximum response tokens
thinkingstringnullExtended thinking: "off", "minimal", "low", "medium", "high"

Sandbox

See Sandbox for details.

[sandbox]
image = "ash-sandbox:latest"
timeout = 60
memory_limit = "512m"
cpu_limit = 1.0
runtime = "runc"
network_mode = "bridge"
dns_servers = []
http_proxy = ""
workspace_access = "rw"
sessions_access = "none"
OptionTypeDefaultDescription
imagestring"ash-sandbox:latest"Docker image name
timeoutint60Command timeout in seconds
memory_limitstring"512m"Container memory limit
cpu_limitfloat1.0CPU cores allowed
runtimestring"runc"Container runtime ("runc" or "runsc")
network_modestring"bridge"Network mode ("none" or "bridge")
dns_serverslist[]Custom DNS servers
http_proxystring""HTTP proxy URL
workspace_accessstring"rw"Workspace mount ("none", "ro", "rw")
sessions_accessstring"none"Sessions mount ("none", "ro")

Memory

See Memory for details.

[memory]
database_path = "~/.ash/memory.db"
max_context_messages = 20
context_token_budget = 100000
recency_window = 10
system_prompt_buffer = 8000
auto_gc = true
max_entries = null
compaction_enabled = true
compaction_reserve_tokens = 16384
compaction_keep_recent_tokens = 20000
compaction_summary_max_tokens = 2000
extraction_enabled = true
extraction_model = null
extraction_min_message_length = 20
extraction_debounce_seconds = 30
extraction_confidence_threshold = 0.7
OptionTypeDefaultDescription
database_pathpath"~/.ash/memory.db"SQLite database path
max_context_messagesint20Maximum messages in context
context_token_budgetint100000Target context window size
recency_windowint10Always keep last N messages
system_prompt_bufferint8000Reserved tokens for system prompt
auto_gcbooltrueRun garbage collection on startup
max_entriesintnullCap on active memories
compaction_enabledbooltrueEnable context compaction
compaction_reserve_tokensint16384Buffer before triggering
compaction_keep_recent_tokensint20000Always keep recent context
compaction_summary_max_tokensint2000Max tokens for summary
extraction_enabledbooltrueEnable auto memory extraction
extraction_modelstringnullModel for extraction
extraction_min_message_lengthint20Skip short messages
extraction_debounce_secondsint30Min seconds between extractions
extraction_confidence_thresholdfloat0.7Minimum confidence for storing

Embeddings

See Memory for details.

[embeddings]
provider = "openai"
model = "text-embedding-3-small"
OptionTypeDefaultDescription
providerstring"openai"Embedding provider
modelstring"text-embedding-3-small"Embedding model

Skills

See Skills for details.

[skills]
auto_sync = true
update_interval = 24
[[skills.sources]]
repo = "anthropic/skills"
[[skills.sources]]
path = "~/my-local-skills"
[skills.research]
enabled = true
PERPLEXITY_API_KEY = "pplx-..."

Global Settings

OptionTypeDefaultDescription
auto_syncboolfalseSync sources on startup
update_intervalint24Hours between auto-updates

Source Fields

FieldTypeDescription
repostringGitHub repo in owner/repo format
pathstringLocal filesystem path
refstringGit ref (branch, tag, commit)

Per-Skill Fields

FieldTypeDescription
enabledboolEnable/disable the skill
modelstringModel alias override
*stringEnvironment variables (auto-uppercased)

Agents

See Agents for details.

[agents.research]
model = "sonnet"
max_iterations = 50
[agents.skill-writer]
model = "sonnet"
max_iterations = 20
OptionTypeDefaultDescription
modelstringnullModel alias override
max_iterationsintvariesMaximum iterations

Telegram

See Providers for details.

[telegram]
bot_token = "123456789:ABC..."
allowed_users = ["@yourusername", "123456789"]
allowed_groups = ["-100123456789"]
group_mode = "mention"
webhook_url = "https://your-domain.com/webhook"
OptionTypeDefaultDescription
bot_tokenstringrequiredBot token from BotFather
allowed_userslist[]Authorized usernames or IDs
allowed_groupslist[]Authorized group chat IDs
group_modestring"mention""mention" or "always"
webhook_urlstringnullWebhook URL (polling if not set)

Server

See Providers for details.

[server]
host = "127.0.0.1"
port = 8080
webhook_path = "/webhook"
OptionTypeDefaultDescription
hoststring"127.0.0.1"Bind address
portint8080Port number
webhook_pathstring"/webhook"Telegram webhook path

Sessions

See Providers for details.

[sessions]
mode = "persistent"
max_concurrent = 2
OptionTypeDefaultDescription
modestring"persistent""persistent" or "fresh"
max_concurrentint2Maximum parallel sessions
[brave_search]
api_key = "BSA..."
OptionTypeDefaultDescription
api_keystringrequiredBrave Search API key

Getting an API Key

  1. Sign up at Brave Search API

  2. Create an API key in the dashboard

  3. Configure Ash:

    [brave_search]
    api_key = "BSA..."

    Or use environment variable: BRAVE_SEARCH_API_KEY

Sentry

[sentry]
dsn = "https://abc123@o123.ingest.sentry.io/456"
environment = "production"
release = "1.0.0"
traces_sample_rate = 0.1
profiles_sample_rate = 0.0
send_default_pii = false
debug = false
OptionTypeDefaultDescription
dsnstringnullSentry DSN
environmentstringnullEnvironment name
releasestringnullRelease version
traces_sample_ratefloat0.1Transaction sampling (0.0-1.0)
profiles_sample_ratefloat0.0Profiling sampling (0.0-1.0)
send_default_piiboolfalseInclude PII in reports
debugboolfalseEnable debug logging

Workspace Files

The workspace directory contains:

~/.ash/workspace/
├── SOUL.md # Assistant personality
├── USER.md # User profile (optional)
└── skills/ # Custom skills

SOUL.md

Defines your assistant’s personality:

# Ash
You are a personal assistant named Ash.
## Personality
- Helpful and direct
- Technical but accessible
- Concise responses
## Guidelines
- Always verify before executing destructive commands

USER.md (optional)

Describes the user for personalized responses:

# User Profile
## About
- Software engineer
- Works on Python and TypeScript projects
## Preferences
- Concise code examples
- Unix command line tools