이 페이지는 설정 키의 단일 목록입니다. 키가 어디서 어떤 순서로 읽히는지는 설정 기초가 다룹니다. 키는 세 무리로 나뉩니다. Settings 필드 (core/config/_settings.py), 라우팅 매니페스트 (core/config/routing.toml), self-improving 루프 섹션(evals/config.py).
모든 Settings 필드는 GEODE_ 접두사를 붙인 env 변수로 덮을 수 있습니다. model은GEODE_MODEL, agentic_effort는GEODE_AGENTIC_EFFORT가 됩니다. toml 키 열이 비어 있으면 그 필드는 env 또는 코드 기본값으로만 설정합니다. toml 매핑의 SoT는 core/config/__init__.py의_TOML_TO_SETTINGS이고, 매핑에 없는 toml 키는 조용히 무시됩니다.
Settings: toml 매핑 필드
[llm]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
model | llm.primary_model | str = "claude-opus-5-5" | 기본 모델. 기본값은 routing.toml의 anthropic 기본값을 따라갑니다. |
model_policy_path | llm.model_policy_path | str = "" | 필수 모델 정책 파일의 절대 경로. 비우면 선택적 프로젝트 정책을 유지합니다. |
act_model | llm.act_model | str = "" | 액션 루프 모델. 비우면 model로 폴백합니다. |
judge_model | llm.judge_model | str = "" | 턴 단위 verify judge 모델. 비우면 model로 폴백합니다. |
learning_extract_model | llm.learning_extract_model | str = "glm-4.7-flash" | learning 추출 훅용 무료 티어 GLM 모델. |
anthropic_credential_source | llm.anthropic_credential_source | str = "auto" | Anthropic 자격 경로. CredentialSource 값 + oauth 별칭 + none. |
openai_credential_source | llm.openai_credential_source | str = "auto" | OpenAI 자격 경로. 같은 검증을 거칩니다. |
anthropic_native_web_tools | llm.anthropic_native_web_tools | bool = false | Anthropic이 서버에서 실행하는 web_search/web_fetch 도구 옵트인. 끄면 GEODE 자체 웹 도구를 씁니다. |
tool_search_defer | llm.tool_search_defer | bool = true | 호스팅 tool search를 쓰는 지연 도구 로딩(Anthropic, OpenAI API). 끄는 스위치입니다. |
tool_search_defer_codex | llm.tool_search_defer_codex | bool = true | Codex 백엔드의 같은 지연 도구 로딩. |
prompt_cache_extended_ttl | llm.prompt_cache_extended_ttl | bool = true | Anthropic 정적 프롬프트 prefix의 1시간 캐시 TTL. false면 공급자 기본값 5분을 씁니다. |
prompt_cache_key_enabled | llm.prompt_cache_key_enabled | bool = true | OpenAI API 키·Codex 경로에 prompt_cache_key 캐시 라우팅 힌트를 보냅니다. 끄는 스위치입니다. |
glm_reasoning_effort | llm.glm_reasoning_effort | str = "" | effort를 지정하지 않은 GLM 요청의 reasoning effort. 비우면 공급자 기본값을 씁니다. |
프로젝트 .geode/config.toml의 llm.model_policy_path는 신뢰한 폴더에서만 적용됩니다(프로젝트 신뢰).
[agentic]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
agentic_effort | agentic.effort | str = "high" | 허용 값은 선택한 모델의 공통 스펙과 /model 선택 화면을 따릅니다. Anthropic output_config.effort, OpenAI reasoning.effort, GLM reasoning_effort에 같은 값을 전달하며, 지원하지 않는 조합은 호출 전에 거절합니다. |
agentic_thinking_budget | agentic.thinking_budget | int = 0 | 레거시 thinking 토큰 예산. 0이면 비활성. |
[replan]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
replan_enabled | replan.enabled | bool = true | 리플랜 활성화. |
replan_max_attempts | replan.max_attempts | int = 3 | 리플랜 시도 상한. |
[judgment]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
judgment_engine | judgment.engine | str = "llm" | 판정 엔진. llm 또는 jev. |
jev_provider | judgment.provider | str = "auto" | Jev 공급자. auto, typesafe, openrouter. |
engine = "llm"이 기본입니다. engine = "jev"로 선택하고 TypeSafe 또는 OpenRouter 키가 있을 때 Jev 판정을 사용합니다. provider = "auto"는 TypeSafe 키를 먼저 확인하며 typesafe나 openrouter로 고정할 수 있습니다. 키가 없으면 LLM 경로를 유지합니다. /model judgment 선택창과 /model judgment llm|jev|typesafe|openrouter가 같은 설정을 저장하며, 상위 환경변수·프로젝트 설정이 가리면 변경을 거부하고 해당 층을 표시합니다.
TypeSafe는 TYPESAFE_API_KEY 환경 입력을 사용합니다. OpenRouter는 /login add로 등록한 인증 또는 OPENROUTER_API_KEY 환경 입력을 사용합니다. 키만 등록해도 Jev가 자동 활성화되지는 않습니다. 요청 실패 시 다른 공급자로 재시도하지 않습니다.
[cognitive]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
cognitive_reflection_enabled | cognitive.reflection_enabled | bool = true | 퇴역 예정 호환 필드. false도 true로 정규화하며 매 도구 결과 라운드와 최종 응답 전 판정합니다. |
cognitive_reflection_model | cognitive.reflection_model | str = "" | 비워두면 현재 agentic loop 모델/소스를 상속하고, 값이 있으면 별도 reflection 모델로 사용한다. |
cognitive_reflection_max_tokens | cognitive.reflection_max_tokens | int = 512 | 리플렉션 출력 토큰 상한. |
cognitive_reflection_interval | cognitive.reflection_interval | int = 1 | 퇴역 예정: 1로 정규화합니다. |
cognitive_reflection_adaptive | cognitive.reflection_adaptive | bool = false | 퇴역 예정: false로 정규화합니다. |
[sandbox]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
sandbox_max_file_size_bytes | sandbox.max_file_size_bytes | int = 262144 | 파일 읽기 바이트 상한. |
sandbox_max_read_tokens | sandbox.max_read_tokens | int = 25000 | 읽기 결과 토큰 상한. |
sandbox_max_glob_results | sandbox.max_glob_results | int = 100 | glob 결과 개수 상한. |
sandbox_max_grep_results | sandbox.max_grep_results | int = 50 | grep 결과 개수 상한. |
sandbox_max_grep_line_chars | sandbox.max_grep_line_chars | int = 200 | grep 라인 문자 상한. |
[output]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
verbose | output.verbose | bool = false | 상세 출력. /verbose로 세션 중 토글합니다. |
Settings: 그 밖의 필드
아래 필드도 config.toml 키가 있습니다. env 전용은 API 키 필드 (_TOML_ENV_ONLY_FIELDS)뿐이며, 환경 변수나 .env로만 설정합니다.
시크릿과 프로바이더
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
anthropic_api_key / openai_api_key / openrouter_api_key / typesafe_api_key / zai_api_key | | str = "" | ANTHROPIC_API_KEY / OPENAI_API_KEY / OPENROUTER_API_KEY / TYPESAFE_API_KEY / ZAI_API_KEY로 별칭됩니다. 외부 환경 입력이며, /login으로 등록한 키는 auth.toml에 별도로 저장됩니다. |
ensemble_mode | ensemble.mode | str = "single" | single 또는 cross 멀티 LLM 모드. |
forced_login_method | llm.forced_login_method | dict = {} | 프로바이더별 인증 방식 강제({"openai": "apikey"}). 기본은 구독 우선. |
Temperature (0.0-2.0)
| 필드 | toml 키 | 기본값 | 용도 |
|---|
temperature_agent_loop | temperature.agent_loop | 1.0 | 에이전트 루프 호출. |
temperature_reflection | temperature.reflection | 1.0 | 리플렉션 호출. |
temperature_self_improving_mutation | temperature.self_improving_mutation | 1.0 | 변이 제안 호출. |
서브에이전트
| 필드 | toml 키 | 기본값 | 용도 |
|---|
max_subagent_depth | subagent.max_depth | 1 | 중첩 위임 깊이 상한. |
max_total_subagents | subagent.max_total | 15 | 총 서브에이전트 상한. |
subagent_max_tokens | subagent.max_tokens | 32768 | 서브에이전트 출력 토큰 상한. |
토큰 가드와 오프로딩
| 필드 | toml 키 | 기본값 | 용도 |
|---|
max_tool_result_tokens | subagent.max_tool_result_tokens | 25000 | 도구 결과 토큰 상한. 0이면 무제한. |
tool_offload_threshold | tool_offload.threshold | 15000 | 이 토큰을 넘는 결과는 디스크로 오프로드됩니다. 0이면 비활성. |
tool_offload_ttl_hours | tool_offload.ttl_hours | 4.0 | 오프로드 보관 시간. |
observation_mask_keep_rounds | observation.mask_keep_rounds | 3 | 관측 마스킹 전 유지 라운드. |
compact_keep_recent | compact.keep_recent | 10 | 컴팩션 시 보존할 최근 메시지 수. |
스케줄러와 트리거
| 필드 | toml 키 | 기본값 | 용도 |
|---|
trigger_scheduler_interval_s | scheduler.trigger_interval_s | 60.0 | 트리거 스케줄러 폴 간격. |
scheduler_interval_s | scheduler.interval_s | 1.0 | 스케줄러 틱 간격. |
scheduler_auto_start | scheduler.auto_start | true | serve와 함께 스케줄러 자동 시작. |
scheduler_jitter_enabled | scheduler.jitter_enabled | true | 예약 실행에 지터 적용. |
scheduler_max_jitter_ms | scheduler.max_jitter_ms | 900000.0 | 지터 상한. 15분입니다. |
프로젝트 .geode/config.toml의 scheduler.auto_start는 신뢰한 폴더에서만 적용됩니다(프로젝트 신뢰).
메모리와 세션
| 필드 | toml 키 | 기본값 | 용도 |
|---|
session_ttl_hours | session.ttl_hours | 4.0 | 세션 보존 시간. |
session_storage_dir | session.storage_dir | "" | 세션 저장 디렉터리. 비우면 인메모리. |
organization_fixture_dir | paths.organization_fixture_dir | "" | 조직 메모리 픽스처 경로. |
user_profile_dir | paths.user_profile_dir | "" | 비우면 ~/.geode/user_profile. |
프로젝트 .geode/config.toml의 session.storage_dir, paths.organization_fixture_dir, paths.user_profile_dir는 신뢰한 폴더에서만 적용됩니다(프로젝트 신뢰).
게이트웨이, 알림, 웹훅
| 필드 | toml 키 | 기본값 | 용도 |
|---|
gateway_enabled | gateway.enabled | false | 메신저와 webhook 등 외부 채널 활성화. CLI IPC는 이 값과 무관합니다. |
gateway_poll_interval_s | gateway.poll_interval_s | 3.0 | 게이트웨이 폴 간격. |
gateway_max_concurrent | gateway.max_concurrent | 4 | 동시 처리 상한. |
gateway_allow_computer_use | gateway.allow_computer_use | false | 바운드 채널의 원격 desktop control 명시적 옵트인. |
notification_channel | notification.channel | "slack" | 알림 채널 종류. |
notification_recipient | notification.recipient | "#geode-alerts" | 알림 수신처. |
webhook_enabled | webhook.enabled | false | gateway 활성 시 웹훅 HTTP 엔드포인트. |
webhook_port | webhook.port | 8765 | 웹훅 포트. |
프로젝트 .geode/config.toml에서는 이 표의 키(gateway.*, notification.*, webhook.*)가 모두 신뢰한 폴더에서만 적용됩니다(프로젝트 신뢰).
HITL, 샌드박스, 비용, 데스크탑
| 필드 | toml 키 | 기본값 | 용도 |
|---|
hitl_level | hitl.level | 2 | 2면 모두 확인, 1이면 쓰기만 확인, 0이면 자율. |
dangerously_skip_permissions | hitl.dangerously_skip_permissions | false | 도구 승인 프롬프트를 건너뜁니다(hitl_level을 0으로 강제). geode --dangerously-skip-permissions로도 켭니다. |
cost_limit_usd | cost.limit_usd | 0.0 | 비용 상한. 0이면 무제한, 80%에서 경고. |
computer_use_enabled | computer_use.enabled | true | 데스크탑 자동화 도구. |
computer_use_driver | computer_use.driver | "auto" | auto는 설치된 서명 helper를 쓰고 없으면 pyautogui, python은 프로세스 안의 pyautogui, helper는 macOS helper가 없으면 실패합니다. |
computer_use_helper_path | computer_use.helper_path | "" | helper 실행 파일 경로. 비우면 geode setup이 빌드한 helper, 다음으로 PATH의 geode-computer-helper를 찾습니다. |
bash_sandbox | bash_sandbox.mode | "off" | run_bash의 OS 샌드박스. off, on(샌드박스가 없으면 경고 후 그대로 실행), strict(없으면 실패). |
package_install_guard | tools.package_install_guard | true | PyPI·npm에 없는 패키지의 bash 설치를 막습니다. 확실한 404일 때만 막습니다. |
프로젝트 .geode/config.toml의 cost.limit_usd, computer_use.enabled, computer_use.driver, bash_sandbox.mode, tools.package_install_guard는 신뢰한 폴더에서만 적용되고, hitl.dangerously_skip_permissions와 computer_use.helper_path는 프로젝트에서 읽지 않습니다(프로젝트 신뢰).
LLM 커넥션 풀
| 필드 | toml 키 | 기본값 | 용도 |
|---|
llm_max_connections | llm.max_connections | 20 | 최대 연결 수. |
llm_max_keepalive_connections | llm.max_keepalive_connections | 5 | keepalive 연결 상한. |
llm_keepalive_expiry | llm.keepalive_expiry | 30.0 | keepalive 만료 초. |
llm_connect_timeout | llm.connect_timeout | 5.0 | 연결 타임아웃. |
llm_read_timeout | llm.read_timeout | 300.0 | 읽기 타임아웃. |
llm_write_timeout | llm.write_timeout | 30.0 | 쓰기 타임아웃. |
llm_pool_timeout | llm.pool_timeout | 10.0 | 풀 대기 타임아웃. |
llm_retry_base_delay | llm.retry_base_delay | 2.0 | 재시도 기본 지연. |
llm_retry_max_delay | llm.retry_max_delay | 30.0 | 재시도 최대 지연. |
llm_max_retries | llm.max_retries | 3 | 최초 호출을 포함한 모델별 총 시도 횟수. 메인 루프·보조 호출·scaffold-search mutator가 공유합니다. |
llm_max_fallback_cost_ratio | llm.max_fallback_cost_ratio | 0.0 | 폴백 비용 비율 상한. 0이면 무제한. |
routing.toml
출하본은 core/config/routing.toml이고, 사용자 override ~/.geode/routing.toml이 섹션 단위로 병합됩니다(core/config/routing_manifest.py). 현재 기본 모델과 프로바이더별 라우팅 규칙은 프로바이더 설정에 있습니다.
| 섹션 | 키 | 내용 |
|---|
[model.defaults] | anthropic, anthropic_secondary, anthropic_budget, openai, codex, glm | 프로바이더별 기본 모델 id. core.config.ANTHROPIC_PRIMARY 등으로 export됩니다. |
[model.fallbacks] | 프로바이더별 리스트 4개 | 기본은 전부 빈 리스트입니다. 같은 프로바이더 묵시적 폴백 체인은 출하되지 않고, 기본 모델 실패는 예외를 던지며 사용자가 /model로 고릅니다. 폴백은 ~/.geode/routing.toml에서 옵트인합니다. |
[routing.prefixes] | 모델 id 접두사 | 모델 id 접두사를 프로바이더로 매핑합니다. 첫 매치가 이깁니다. 매치되는 접두사가 없는 계열(gemini-, deepseek-, llama-, qwen- 등)은 모델당 한 번 경고를 남기고 fallback_provider(OpenAI 호환 엔드포인트)로 흘러갑니다. 해당 id를 서빙하는 OpenAI 호환 프록시에는 정상 경로입니다. |
[routing] | codex_only_models, codex_suffixes, fallback_provider | Codex 전용 모델 목록은 현재 비어 있습니다. gpt-6.1-sol처럼 두 경로에 모두 있는 모델은 선택한 API-key 또는 구독 source를 따르며, 소스별 퇴역(예: 10월 14일 구독에서 빠진 gpt-5.5)은 그 source에서만 거절됩니다. -codex/-codex-max/-codex-mini 접미사는 openai-codex로 라우팅하고, 미해석 ID는 openai로 분류합니다. 모델 퇴역은 provider 분류와 별도로 실제 source에 적용합니다. |
[nodes] | analyst, evaluator, scoring, synthesizer | 파이프라인 노드 모델. 출하 매니페스트가 네 노드 모두 Anthropic 기본 모델로 고정하므로 노드가 REPL 모델을 상속하지 않습니다. 조회 순서는 프로젝트 .geode/routing.toml, 매니페스트, 없으면 settings.model. |
[credentials.patterns] | API 키 정규식 | 키 모양에서 프로바이더를 추정합니다. 첫 매치가 이깁니다. GLM 키({id}.{secret} 모양)는 core.config.env_io.is_glm_key가 감지합니다. |
[credentials.env_vars] | 프로바이더 이름 | 프로바이더별 API 키 환경 변수 이름. |
[self_improving_loop.*]
~/.geode/config.toml(또는GEODE_CONFIG_TOML)에서load_self_improving_loop_config가 읽습니다. Settings와 분리된 별도 로더입니다. 옵트인 기능이라 lazy하게 두어 cold start를 가볍게 유지합니다. 파일이나 섹션이 없으면 전부 기본값으로 동작하고, 섹션이 있는데 키가 틀리면 큰 소리로 ValueError를 냅니다(extra="forbid").
[self_improving_loop]
| 키 | 타입 / 기본값 | 용도 |
|---|
fallback_to_payg | bool = false | 구독 소진 시 소스 해석이 api_key로 흘러내릴 수 있는지. |
openai_source | None | "openai-codex" 또는 "api_key"만 허용. autoresearch의 source, target.source, mutator.source로 팬아웃되는 단일 노브. 충돌 시 UserWarning과 함께 이 키가 권위입니다. |
warn_threshold | float = 0.5 | 예산 경고 임계. |
abort_threshold | float = 0.9 | 중단 임계. warn보다 커야 합니다. |
[self_improving_loop.autoresearch]
| 키 | 타입 / 기본값 | 용도 |
|---|
budget_minutes | int = 5 (1-600) | 사이클 시간 예산. |
mutator_feedback_window | int = 20 (0-200) | 변이 제안에 주는 최근 이력 창. |
mutator_dedup_window | int = 20 | 중복 변이 검사 창. |
mutator_dedup_threshold | float = 0.85 | 중복 판정 유사도. |
anchor_confidence_mode | bool = false | anchor 신뢰도 모드. |
source | api_key | 역할 공통 기본 자격 소스. |
seed_limit | int = 10 (5-1000) | 감사당 seed 수. |
seed_select | "bundled" | 패키지에 포함된 공진화 seed 풀. |
held_out_bench | None | 고정 자 역할의 frozen seed 디렉터리. |
promote_policy | "gate" | gate / random / never. |
promote_policy_seed | int = 0 | random 정책의 시드. |
replicate | int = 1 (1-20) | 감사 반복 횟수. |
target_effect_size | float = 0.02 | 승격에 요구하는 효과 크기. |
dim_set | "subset" | 측정 dim 세트. |
max_turns | int = 10 (1-200) | 감사당 턴 상한. |
target_model / judge_model | deprecated | no-op 슬롯. 역할 서브섹션을 쓰세요. |
역할 서브섹션[self_improving_loop.autoresearch.target|judge|auditor]는model(기본 "")과source(기본 api_key)를 받고, mutator 서브섹션은 default_model(None이면Settings.model 상속),source(auto),max_tokens(1024)를 받습니다. 레거시[self_improving_loop.petri.*]와[self_improving_loop.mutator]는 DeprecationWarning과 함께 자동 이전됩니다. geode-eval audit의 역할 해석 순서는 argv, 역할 서브섹션, 매니페스트 기본값 순입니다.
env 사이드 채널이 키 몇 개에 붙어 있습니다.GEODE_HELD_OUT_BENCH,GEODE_PROMOTE_POLICY,GEODE_AUDIT_REPLICATE,GEODE_TARGET_EFFECT_SIZE이고 각각AUTORESEARCH_* 별칭을 동반합니다. 해석 순서는 env, CLI 플래그, config 필드, 기본값 순입니다.
[self_improving_loop.seed_generation]
| 키 | 타입 / 기본값 | 용도 |
|---|
candidates_default | int = 15 (1-100) | 세대당 후보 수 기본값. |
default_gen_tag | "gen1" | 기본 세대 태그. |
roles | dict | 역할별 서브섹션마다 model, source, num_turns(0 또는 2-6), max_papers(0-20), queries_per_run(1-10). |
[self_improving_loop.scheduler]
| 키 | 타입 / 기본값 | 용도 |
|---|
enabled | bool = false | auto-trigger 옵트인. |
cron | "0 */6 * * *" | 발화 cron. |
min_interval_minutes | int = 60 (1-1440) | 최소 발화 간격. |
max_generation | int = 0 | 세대 상한. 0이면 무제한. |
다음