byteclaw/config.example.yaml

38 lines
1.8 KiB
YAML

# ByteClaw configuration. Secrets can come from env instead:
# BYTECLAW_AUTH_TOKEN, BYTECLAW_LLM_API_KEY, BYTECLAW_LLM_BASE_URL, BYTECLAW_LLM_MODEL,
# BYTECLAW_LISTEN, BYTECLAW_DATA_DIR, BYTECLAW_WORKSPACE, BYTECLAW_ALLOWED_ORIGINS (comma separated)
listen: 127.0.0.1:8787 # bind to 0.0.0.0 only behind TLS (reverse proxy) or in a trusted LAN
auth_token: "" # required, >= 16 chars. Generate: openssl rand -hex 32
allowed_origins: [] # browser origins allowed besides same host; "*" only if you really mean it
data_dir: ./data
workspace: "" # default: <data_dir>/workspace; file tools cannot leave it
llm:
# Preset: openai | openrouter | ollama | dahl | gonkarouter | custom (env: BYTECLAW_LLM_PROVIDER)
# Presets fill base_url/model if empty; api_key falls back to OPENAI_API_KEY, OPENROUTER_API_KEY,
# DAHL_API_KEY or GONKAROUTER_API_KEY. "custom" requires base_url and model.
provider: openai
base_url: "" # override, e.g. https://inference.dahl.global/v1
api_key: ""
model: "" # e.g. MiniMaxAI/MiniMax-M2.7, zai-org/GLM-5.3-Flash
timeout_sec: 120
temperature: 0.7
agent:
system_prompt: "You are ByteClaw, a concise and helpful self-hosted assistant. Use tools when they help."
max_iterations: 8
history_limit: 50
tools:
web_fetch:
enabled: true
max_bytes: 524288
timeout_sec: 15
allow_private: false # true allows localhost/LAN targets (SSRF risk)
shell: # opt-in; runs WITHOUT a shell interpreter, only in the workspace
enabled: false
allowed_commands: [] # e.g. [ls, cat, wc, head, tail, grep, date]; sh/bash/env/xargs/python/... are refused
timeout_sec: 30
max_output_bytes: 65536
files_enabled: true
file_max_bytes: 1048576