Repository navigation
Expand file tree
/
Copy pathconfig.example.toml
More file actions
115 lines (100 loc) · 4.22 KB
/
Copy pathconfig.example.toml
File metadata and controls
115 lines (100 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# AETHER configuration — copy to ~/.aether/config.toml
# No API keys are stored here; only the ENV VAR NAME to read at runtime.
[agent]
controller_model = "controller"
executor_model = "executor"
max_iterations = 30
# Outer closed-loop budget: how many plan->execute->verify->replan cycles the
# loop-engineering circuit breaker may run before it hard-stops (loop engineering).
loop_budget = 3
routing_policy = "balanced"
# Optional cheaper model for read-only/explanatory tasks (cost routing, §8).
cheap_model = "fast"
# Endpoint used by `--local` mode (Ollama/llama.cpp are OpenAI-compatible).
local_endpoint = "http://127.0.0.1:11434/v1"
# LLM 3 — VISUAL FRONTEND REVIEWER (3-LLM visual engineering). OPTIONAL. When set, frontend
# tasks are rendered, screenshotted, and critiqued by a multimodal model; the loop continues
# until the reviewer APPROVES or the configured limit is reached. Leave unset to disable.
# reviewer_model = "reviewer"
[memory]
enabled = true
# backend/graph_store/vector_store are descriptive of the embedded engine:
# - graph + key/value -> `redb` (pure Rust, embedded)
# - vector index -> pure-Rust scalar-quantized (f32 -> i8) cosine search.
# (`usearch` from the spec is deferred: it pulls a C++ toolchain; the Rust index
# keeps the binary dependency-free. See DEPENDENCIES.md.)
backend = "embedded"
graph_store = "redb"
vector_store = "quantized"
# Embeddings reuse the controller model's OpenAI-compatible /v1/embeddings endpoint,
# so no separate embedding provider is configured.
embedding_provider = "openai_compatible"
memory_top_k = 8
# Where the memory graph is stored.
path = "~/.aether/mind.redb"
# Opt-in: let the agent extract durable facts from results automatically.
auto_extract = false
[permissions]
read = "allow"
edit = "allow"
bash = "ask"
delete = "ask"
git_commit = "ask"
network = "ask"
[context]
max_tokens = 128000
[display]
theme = "light"
accent = "still-blue"
emoji = false
# --- Models (OpenAI-compatible; any /v1/chat/completions endpoint works) ---
[models.controller]
provider = "openai_compatible"
base_url = "https://api.openai.com/v1"
model = "gpt-4o-mini"
api_key_env = "OPENAI_API_KEY"
[models.executor]
provider = "openai_compatible"
base_url = "https://api.openai.com/v1"
model = "gpt-4o"
api_key_env = "OPENAI_API_KEY"
[models.fallback_executor]
provider = "openai_compatible"
base_url = "https://openrouter.ai/api/v1"
model = "openai/gpt-4o"
api_key_env = "OPENROUTER_API_KEY"
[models.fast]
provider = "openai_compatible"
base_url = "https://api.openai.com/v1"
model = "gpt-4o-mini"
api_key_env = "OPENAI_API_KEY"
# LLM 3 (optional): a multimodal/vision model for frontend visual review.
# [models.reviewer]
# provider = "openai_compatible"
# base_url = "https://api.openai.com/v1"
# model = "gpt-4o" # any vision-capable model (OpenAI, Gemini, etc.)
# api_key_env = "OPENAI_API_KEY"
# --- Subagents (multi-agent verification pipeline) ---
# When enabled, AETHER runs an Explorer before planning and a Tester + Reviewer (+ Security
# Reviewer on risk) handoff pass after each implementation cycle. Disable to run the bare loop.
[subagents]
enabled = true
# --- MCP client (§6): connect to external MCP servers; their tools are registered ---
# [[mcp.servers]]
# name = "local-fs"
# command = "/path/to/mcp-server"
# args = ["--root", "."]
# --- Frontend visual engineering (3-LLM visual review, spec) ---
# Active only when `agent.reviewer_model` is set AND `capture_command` is set AND the task
# is a frontend task (or `force = true`). Screenshots go to ~/.aether/temp-screenshots/<id>/
# and are deleted after the run. The capture command receives `{out}` (target png path) and
# `{cwd}` (project dir); the preview command (optional) starts a dev server before capture.
# [frontend]
# capture_command = "npx --yes playwright screenshot --full-page {out}" # writes png to {out}
# preview_command = "npm run dev" # optional; killed after capture
# max_visual_iterations = 5
# force = false
# [frontend.acceptance]
# require_no_critical = true
# require_no_major = false
# min_score = 90