You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Each named profile accepts the same fields as the primary [llm] section.
Agent Configuration
Per-agent settings. The default key applies to all agents unless overridden by
a named agent section.
[agent.default]
llm = "claude"# LLM profile name (references [llm.claude])max_iterations = 25# Max tool loop iterationsmax_tokens = 8192# Max tokens per LLM responsesystem_prompt = "..."# Optional system prompt override
[agent.summarizer]
llm = "fast"# Use the fast profile for summarizationmax_iterations = 10
Field
Type
Default
Description
llm
string
—
LLM profile name (references [llm.<name>])
system_prompt
string
—
System prompt override
max_iterations
u32
—
Max tool loop iterations
max_tokens
u32
—
Max tokens per LLM response
Server Configuration
[server]
port = 8080# HTTP portbind = "127.0.0.1"# Bind addressrate_limiting = true# Enable per-IP rate limitingapi_rpm = 120# API requests per minute per IPrequest_logging = true# Enable request loggingbootstrap_dir = "..."# Optional: path to bootstrap filesworkspace = "..."# Optional: working directoryws_allowed_origins = ["..."] # WebSocket allowed origins (empty = all)
Field
Type
Default
Description
port
u16
8080
HTTP listen port
bind
string
"127.0.0.1"
Bind address
rate_limiting
bool
true
Enable per-IP rate limiting
api_rpm
u32
120
Requests per minute per IP
request_logging
bool
true
Enable HTTP request logging
bootstrap_dir
path
—
Bootstrap files directory
workspace
path
—
Server working directory
ws_allowed_origins
string[]
[]
WebSocket allowed origins (empty = allow all)
Authentication is configured via ARAWN_AUTH_TOKEN or the keyring — not in the
config file. See Secret Management.
Runtime Server Settings
These settings are set programmatically or via environment (not in the TOML file):
Setting
Default
Description
cors_origins
(empty)
CORS allowed origins
tailscale_users
(none)
Allowed Tailscale users
reconnect_grace_period
30s
Grace period for WebSocket session reconnect
max_ws_message_size
1 MB
Max WebSocket message size
max_body_size
10 MB
Max REST request body size
ws_connections_per_minute
30
Max WS connections per minute per IP
Memory Configuration
[memory]
database = "memory.db"# SQLite path (relative to data dir)
[memory.recall]
enabled = true# Enable active recalllimit = 5# Max memories to recall per turnthreshold = 0.6# Min similarity score (0.0–1.0)
[memory.indexing]
enabled = true# Enable session indexing pipelinebackend = "openai"# LLM backend for extractionmodel = "gpt-4o-mini"# Model for extraction/summarizationner_model_path = "..."# Optional: GLiNER ONNX model for local NERner_tokenizer_path = "..."# Optional: GLiNER tokenizer JSONner_threshold = 0.5# NER confidence threshold (0.0–1.0)ner_model_url = "..."# Download URL for GLiNER model (auto-fetched)ner_tokenizer_url = "..."# Download URL for GLiNER tokenizer (auto-fetched)
[memory.confidence]
fresh_days = 30.0# Days before staleness decay beginsstaleness_days = 365.0# Days at which staleness reaches floorstaleness_floor = 0.3# Minimum staleness multiplierreinforcement_cap = 1.5# Maximum reinforcement multiplier
Section
Field
Type
Default
Description
memory
database
path
—
SQLite database path
recall
enabled
bool
true
Enable active recall
recall
limit
usize
5
Max memories per turn
recall
threshold
f32
0.6
Min similarity score (0.0–1.0)
indexing
enabled
bool
true
Enable session indexing
indexing
backend
string
"openai"
LLM backend for extraction
indexing
model
string
"gpt-4o-mini"
Extraction model
indexing
ner_model_path
path
—
GLiNER ONNX model path
indexing
ner_tokenizer_path
path
—
GLiNER tokenizer path
indexing
ner_threshold
f32
0.5
NER confidence threshold
indexing
ner_model_url
string
—
Auto-download URL for NER model
indexing
ner_tokenizer_url
string
—
Auto-download URL for NER tokenizer
confidence
fresh_days
f32
30.0
Days before staleness starts
confidence
staleness_days
f32
365.0
Days to reach staleness floor
confidence
staleness_floor
f32
0.3
Min staleness multiplier
confidence
reinforcement_cap
f32
1.5
Max reinforcement multiplier
Embedding Configuration
[embedding]
provider = "local"# "local" (ONNX), "openai", or "mock"dimensions = 384# Output dimensions (default depends on provider)
[embedding.openai]
model = "text-embedding-3-small"dimensions = 1536# Optional dimension overridebase_url = "..."# Optional custom endpointapi_key = "..."# Optional (prefer env var OPENAI_API_KEY)
[embedding.local]
model_path = "..."# Custom ONNX model pathtokenizer_path = "..."# Custom tokenizer pathmodel_url = "..."# Auto-download URL for ONNX modeltokenizer_url = "..."# Auto-download URL for tokenizer
Section
Field
Type
Default
Description
embedding
provider
string
"local"
local, openai, or mock
embedding
dimensions
usize
(provider default)
Output embedding dimensions
openai
model
string
"text-embedding-3-small"
OpenAI model name
openai
dimensions
usize
—
Override embedding dimensions
openai
base_url
string
—
Custom endpoint URL
openai
api_key
string
—
API key (prefer OPENAI_API_KEY env)
local
model_path
path
—
Custom ONNX model path
local
tokenizer_path
path
—
Custom tokenizer.json path
local
model_url
string
—
URL to auto-download ONNX model
local
tokenizer_url
string
—
URL to auto-download tokenizer
Tool Configuration
[tools.output]
max_size_bytes = 102400# Default max tool output size (100KB)shell = 102400# Override for shell tool (default: 100KB)file_read = 512000# Override for file_read tool (default: 500KB)web_fetch = 204800# Override for web_fetch tool (default: 200KB)search = 51200# Override for search/grep/glob (default: 50KB)
[tools.shell]
timeout_secs = 30# Shell command timeout
[tools.web]
timeout_secs = 30# Web request timeout
Section
Field
Type
Default
Description
output
max_size_bytes
usize
102400
Default max output size (bytes)
output
shell
usize
102400
Max output for shell tool
output
file_read
usize
512000
Max output for file_read tool
output
web_fetch
usize
204800
Max output for web_fetch tool
output
search
usize
51200
Max output for search/grep/glob
shell
timeout_secs
u64
30
Shell command timeout (seconds)
web
timeout_secs
u64
30
Web request timeout (seconds)
Workstream Configuration
[workstream]
database = "workstreams.db"# SQLite path (relative to data dir)data_dir = "workstreams"# JSONL message history directorysession_timeout_minutes = 60# Session timeout in minutes
[workstream.compression]
enabled = false# Enable LLM-based session compressionbackend = "default"# LLM profile for summarizationmodel = "claude-sonnet"# Model for compressionmax_summary_tokens = 1024# Max tokens in generated summarytoken_threshold_chars = 32000# Char threshold to trigger compression (~8k tokens)
Section
Field
Type
Default
Description
workstream
database
path
—
SQLite database path
workstream
data_dir
path
—
JSONL message file directory
workstream
session_timeout_minutes
i64
60
Session timeout
compression
enabled
bool
false
Enable auto-compression
compression
backend
string
"default"
LLM profile for compression
compression
model
string
"claude-sonnet"
Summarization model
compression
max_summary_tokens
u32
1024
Max summary tokens
compression
token_threshold_chars
usize
32000
Char threshold to trigger
Session Cache Configuration
[session]
max_sessions = 10000# Max sessions in cache before LRU evictioncleanup_interval_secs = 60# Seconds between cleanup runs
Field
Type
Default
Description
max_sessions
usize
10000
LRU eviction threshold
cleanup_interval_secs
u64
60
Cache cleanup interval
Delegation Configuration
Controls subagent delegation and result compaction.
[delegation]
max_result_len = 8000# Max subagent result length before compaction
[delegation.compaction]
enabled = false# Enable LLM-based result compactionthreshold = 8000# Min length to trigger compaction (chars)backend = "default"# LLM profile for compactionmodel = "gpt-4o-mini"# Model for compactiontarget_len = 4000# Target length for compacted output
Section
Field
Type
Default
Description
delegation
max_result_len
usize
8000
Max result length before compaction
compaction
enabled
bool
false
Enable LLM-based compaction
compaction
threshold
usize
8000
Min length to trigger
compaction
backend
string
"default"
LLM profile name
compaction
model
string
"gpt-4o-mini"
Compaction model
compaction
target_len
usize
4000
Target compacted length
MCP Configuration
[mcp]
enabled = true# Stdio transport (spawns a child process)
[[mcp.servers]]
name = "sqlite"transport = "stdio"# Default transportcommand = "mcp-server-sqlite"args = ["--db", "data.db"]
env = [["DEBUG", "1"]]
enabled = true# HTTP transport (connects to a remote server)
[[mcp.servers]]
name = "remote"transport = "http"url = "http://localhost:3000/mcp"headers = [["Authorization", "Bearer token"]]
timeout_secs = 30retries = 3
Controls the Recursive Learning Machine (exploration/research agent).
[rlm]
model = "claude-sonnet-4-20250514"# Exploration model (inherits from backend if absent)max_turns = 50# Max agent turns before stoppingmax_context_tokens = 150000# Max context tokens before compactioncompaction_threshold = 0.8# Fraction of max_context_tokens to trigger (0.0–1.0)max_compactions = 5# Max compaction cycles before stoppingmax_total_tokens = 500000# Cumulative token budget for entire explorationcompaction_model = "gpt-4o-mini"# Cheaper model for compaction summaries
Field
Type
Default
Description
model
string
(inherit from backend)
Exploration model
max_turns
u32
—
Max agent turns (safety valve)
max_context_tokens
usize
—
Max context before compaction
compaction_threshold
f32
—
Fraction of max to trigger compaction (0.0–1.0)
max_compactions
u32
—
Max compaction cycles
max_total_tokens
usize
—
Total token budget
compaction_model
string
—
Separate cheaper model for compaction
Logging Configuration
[logging.interactions]
enabled = true# Enable structured interaction loggingpath = "~/.arawn/logs"# Directory for JSONL log filesretention_days = 90# Days to retain log files
Field
Type
Default
Description
enabled
bool
true
Enable interaction logging
path
path
—
JSONL log directory
retention_days
u32
90
Log retention period
Path Configuration
Controls workstream data paths, disk usage thresholds, cleanup, and filesystem monitoring.
[paths]
base_path = "~/.arawn"# Base path for all data (default: ~/.arawn)
[paths.usage]
total_warning_gb = 10# Total usage warning thresholdworkstream_warning_gb = 1# Per-workstream warning thresholdsession_warning_mb = 200# Per-session warning threshold
[paths.cleanup]
scratch_cleanup_days = 7# Days before inactive scratch cleanupdry_run = false# Log cleanup actions without deleting
[paths.monitoring]
enabled = true# Enable filesystem monitoringdebounce_ms = 500# Event debounce intervalpolling_interval_secs = 30# Polling fallback interval
Section
Field
Type
Default
Description
paths
base_path
path
~/.arawn
Base data directory
usage
total_warning_gb
u64
10
Total disk usage warning
usage
workstream_warning_gb
u64
1
Per-workstream warning
usage
session_warning_mb
u64
200
Per-session warning
cleanup
scratch_cleanup_days
u32
7
Scratch cleanup threshold
cleanup
dry_run
bool
false
Dry-run mode
monitoring
enabled
bool
true
Enable filesystem monitoring
monitoring
debounce_ms
u64
500
Event debounce interval
monitoring
polling_interval_secs
u64
30
Polling fallback interval
OAuth Configuration
Overrides for the OAuth PKCE flow used by the claude-oauth backend. All fields
are optional — unset fields fall through to environment variables
(ARAWN_OAUTH_*) and then built-in defaults.