-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
255 lines (215 loc) · 12.9 KB
/
.env.example
File metadata and controls
255 lines (215 loc) · 12.9 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
# ──────────────────────────────────────────────────────────────────────────────
# Autonoma — .env example
#
# Every documented knob here maps to a field on `Settings` in
# src/autonoma/config.py. Keep this file in sync with that module — a
# line here with no matching field is just noise (pydantic-settings
# silently ignores unknown vars with the AUTONOMA_ prefix).
#
# Conventions:
# • Uncomment a line to override the default.
# • Values shown after `=` are the production defaults.
# • Lines marked REQUIRED have no safe default in production.
# ──────────────────────────────────────────────────────────────────────────────
# ── Deployment environment ────────────────────────────────────────────────────
# `development` expands the CORS allow-list to include localhost:3000/3478 so
# the local dev server works out of the box. `production` ships no defaults —
# you must supply AUTONOMA_CORS_ALLOW_ORIGINS below.
# AUTONOMA_ENVIRONMENT=production
# Comma-separated origins to allow. Merged with the environment default.
# Wildcards are not supported (allow_credentials=True requires explicit origins).
# AUTONOMA_CORS_ALLOW_ORIGINS=https://your-domain.com,https://admin.your-domain.com
# ── Admin account (legacy server-key login) ───────────────────────────────────
# Set to enable the admin login in the UI. If empty, every user must supply
# their own provider API key.
AUTONOMA_ADMIN_PASSWORD=
# ── Session security ──────────────────────────────────────────────────────────
# REQUIRED in production: long random string used to sign the session cookie.
# Without this, a random per-process secret is generated at startup, so every
# restart logs every user out.
# Generate with: python -c "import secrets; print(secrets.token_hex(32))"
AUTONOMA_SESSION_SECRET=
# ── LLM provider — pick ONE and fill in its key ───────────────────────────────
# Option A: Anthropic Claude (default)
ANTHROPIC_API_KEY=sk-ant-api03-xxxxx
AUTONOMA_PROVIDER=anthropic
AUTONOMA_MODEL=claude-sonnet-4-6
# Option B: OpenAI
# OPENAI_API_KEY=sk-proj-xxxxx
# AUTONOMA_PROVIDER=openai
# AUTONOMA_MODEL=gpt-4o
# Option C: vLLM (OpenAI-compatible, self-hosted)
# AUTONOMA_PROVIDER=vllm
# AUTONOMA_VLLM_BASE_URL=http://localhost:8080/v1
# AUTONOMA_VLLM_API_KEY= # leave blank if unauthenticated
# AUTONOMA_MODEL=Llama-3-8B-Instruct
# LLM request tuning
# AUTONOMA_MAX_TOKENS=8192
# AUTONOMA_TEMPERATURE=0.1
# ── Workspace ─────────────────────────────────────────────────────────────────
# AUTONOMA_OUTPUT_DIR=./output # where agent-generated files land
# ── Persistent character database ─────────────────────────────────────────────
# SQLite file location + filename. In Docker, data_dir is usually a named volume
# (`autonoma_db:/app/data`).
# AUTONOMA_DATA_DIR=./data
# AUTONOMA_DB_FILENAME=autonoma.db
# Disable to get fresh characters every run (useful for tests/CI).
# AUTONOMA_PERSISTENT_CHARACTERS=true
# ── Swarm tuning ──────────────────────────────────────────────────────────────
# AUTONOMA_MAX_AGENTS=8 # concurrent agent cap
# AUTONOMA_TICK_RATE=0.15 # TUI animation tick (seconds)
# ── Sandbox (agent code execution) ────────────────────────────────────────────
# AUTONOMA_SANDBOX_MAX_CONCURRENT=2 # parallel sandboxes across the room
# AUTONOMA_SANDBOX_WALL_TIME_SEC=8.0
# AUTONOMA_SANDBOX_CPU_TIME_SEC=5
# AUTONOMA_SANDBOX_MEMORY_MB=384
# AUTONOMA_SANDBOX_MAX_OUTPUT_BYTES=65536
# ── Observability ─────────────────────────────────────────────────────────────
# AUTONOMA_TRACE_ENABLED=true
# AUTONOMA_TRACE_DIR=./traces
# ── TTS (agent voices) ────────────────────────────────────────────────────────
# OmniVoice zero-shot cloning — https://github.com/k2-fsa/OmniVoice
# Install: pip install omnivoice torch soundfile
# Reference audio + transcript per character are configured at runtime in the
# /voice admin page (no static ref.wav). Device is auto-detected:
# CUDA > Apple Silicon (MPS) > CPU. CPU works but is slow; keep samples short.
#
# Master kill-switch. When false no TTS module runs; agents are silent.
# AUTONOMA_TTS_ENABLED=false
# Backend: "omnivoice" | "none". `none` emits audio-start/end events without
# bytes — handy for UI dev without the OmniVoice package installed.
# AUTONOMA_TTS_PROVIDER=none
# Budgets + rate limits. Exceeded round budgets drop the line and emit
# `agent.speech_audio_dropped`.
# AUTONOMA_TTS_CHAR_BUDGET_PER_ROUND=800
# AUTONOMA_TTS_CHAR_BUDGET_PER_SESSION=20000
# AUTONOMA_TTS_RATE_LIMIT_PER_MINUTE=40
# Room-owner-only TTS (server-side gate; strips viewer audio).
# AUTONOMA_TTS_REQUIRE_OWNER=false
# Voice selection pool language: "ko" picks Korean voices by default.
# AUTONOMA_TTS_DEFAULT_LANGUAGE=ko
# ── 2026-04 feature pack ─────────────────────────────────────────────────────
# Live / broadcast (features #1 #2). Shared secret for the Twitch/YouTube
# chat bridge + donation webhook. Requests without it in X-Autonoma-Signature
# are rejected. Empty value disables the feature entirely.
# AUTONOMA_LIVE_WEBHOOK_SECRET=change-me-to-a-long-random-string
# AUTONOMA_LIVE_AUTOCLIP_ENABLED=true
# AUTONOMA_LIVE_AUTOCLIP_SECONDS=20
# Vision Agent (feature #3). Uses whichever admin LLM is configured
# (see AUTONOMA_PROVIDER above). Each accepted screenshot costs tokens,
# so off by default.
# AUTONOMA_VISION_AGENT_ENABLED=false
# AUTONOMA_VISION_AGENT_COOLDOWN_S=60
# Persistent agent identities (feature #5).
# AUTONOMA_PERSISTENT_AGENT_IDENTITIES=true
# Standup podcast (feature #10). Output dir must be writable by the
# API process (and served via a static mount if you want listeners to
# fetch the WAV without an auth round-trip).
# AUTONOMA_STANDUP_ENABLED=false
# AUTONOMA_STANDUP_OUTPUT_DIR=./output/standups
# Slack / Discord bridges (feature #8). Slack uses the official Events
# API HMAC scheme (v0:{ts}:{body}); Discord expects a shared secret
# passed by a forwarder bot (we deliberately do not own Discord's OAuth).
# AUTONOMA_SLACK_SIGNING_SECRET= # from Slack app → Basic Info
# AUTONOMA_DISCORD_WEBHOOK_SECRET= # shared with your forwarder
# Git native PR tool (feature #9). Four deployment options — see
# docs/git-pr-setup.md for the full walkthrough. Resolution order:
# (1) per-agent: AUTONOMA_AGENT_GH_TOKEN_<UPPER_NAME>
# (2) shared: GH_TOKEN
# (3) sidecar: GH_TOKEN_FILE=/shared/gh.env (GitHub App refresher)
#
# -- Option D (personal PAT, solo dev): just set GH_TOKEN --
# GH_TOKEN=github_pat_yourpersonalpat
#
# -- Option B (single bot account): same as D but with a bot's PAT --
# GH_TOKEN=github_pat_autonomabotpat
#
# -- Option C (GitHub App, recommended for public streaming): the
# `scripts/gh_app_token.py --daemon` sidecar writes to a file, we
# read it per-request --
# GH_TOKEN_FILE=/shared/gh.env
# GH_APP_ID=123456 # used by the sidecar script
# GH_APP_INSTALL_ID=78901234 # used by the sidecar script
#
# -- Option A (per-agent bot accounts): one token + optional git
# identity per agent so commits attribute to the right bot --
# AUTONOMA_AGENT_GH_TOKEN_MIDORI=github_pat_midori
# AUTONOMA_AGENT_GH_NAME_MIDORI=midori-bot
# AUTONOMA_AGENT_GH_EMAIL_MIDORI=12345+midori-bot@users.noreply.github.com
# AUTONOMA_AGENT_GH_TOKEN_BEAR=github_pat_bear
# AUTONOMA_AGENT_GH_NAME_BEAR=bear-bot
# AUTONOMA_AGENT_GH_EMAIL_BEAR=67890+bear-bot@users.noreply.github.com
# ── Frontend (Next.js) ────────────────────────────────────────────────────────
# These are not Settings fields — they're NEXT_PUBLIC_* env vars consumed by
# the web build. Set them in web/.env.local or wherever your Next.js runtime
# reads env vars.
#
# Default WS endpoint is wss://autonoma.koala.ai.kr/api/ws. Override for custom
# deployments:
# NEXT_PUBLIC_WS_URL=wss://your-domain.com/api/ws
# NEXT_PUBLIC_API_URL=https://your-domain.com
# Default vLLM base URL shown in the Model Settings modal. Override to point
# the UI at a non-localhost vLLM server.
# NEXT_PUBLIC_VLLM_BASE_URL=http://localhost:8080/v1
# ── 2026-05 feature pack ─────────────────────────────────────────────────────
# Feature #1 — Swarm-vs-swarm coordinator. Set to a coordinator URL on
# another Autonoma instance to participate in matchmaking + ELO.
# AUTONOMA_COORDINATOR_URL=https://coord.example.com
# Shared HMAC token for the coordinator + MCP server. Rejects requests
# without it in `X-Autonoma-Coord-Token` (or `X-MCP-Token` for MCP).
# AUTONOMA_COORDINATOR_TOKEN=change-me-to-a-long-random-string
# Feature #3 — Memoir compaction. 0 disables; otherwise compaction
# fires every N rounds for any character whose journal has grown past
# `memoir_compact_min_journal_chars`.
# AUTONOMA_MEMOIR_COMPACT_EVERY_ROUNDS=25
# AUTONOMA_MEMOIR_COMPACT_MIN_JOURNAL_CHARS=4000
# Feature #2 — Honourable retirement. Characters who survived
# ≥ `retirement_min_runs` runs at level ≥ `retirement_min_level` retire
# at session end and become ghost-cameos in future runs.
# AUTONOMA_RETIREMENT_ENABLED=true
# AUTONOMA_RETIREMENT_MIN_RUNS=12
# AUTONOMA_RETIREMENT_MIN_LEVEL=8
# Feature #5 — Auto highlight reel. Server-side detection of clip-worthy
# moments; the OBS overlay records the actual MP4.
# AUTONOMA_HIGHLIGHTS_ENABLED=true
# AUTONOMA_HIGHLIGHTS_MAX_CLIPS=8
# Feature #8 — MCP server. Mounts `/mcp/jsonrpc` exposing core swarm
# tools (list_sessions, start_swarm_headless, fetch_run_summary, ...).
# Auth uses AUTONOMA_COORDINATOR_TOKEN. Off by default — flipping this
# changes the security surface.
# AUTONOMA_MCP_SERVER_ENABLED=false
# Feature #9 — CI loop. Every agent-created file is sandbox-checked
# (ruff for .py, tsc for .ts/.tsx, json.loads for .json). Failures fold
# back into the agent's inbox as a fix-task.
# AUTONOMA_CI_LOOP_ENABLED=false
# AUTONOMA_CI_LOOP_TIMEOUT_SEC=30.0
# Override the auto-detected checker. Use `{file}` placeholder.
# AUTONOMA_CI_LOOP_COMMAND=ruff check --output-format=concise {file}
# Feature #10 — OpenTelemetry/Prometheus. `/metrics` is always served
# when `prometheus_metrics_enabled` is true; OTLP is a separate flag.
# AUTONOMA_OTEL_ENDPOINT=http://localhost:4318
# AUTONOMA_OTEL_SERVICE_NAME=autonoma
# AUTONOMA_PROMETHEUS_METRICS_ENABLED=true
# Feature #11 — Goal recommender (`/api/inspire`).
# AUTONOMA_INSPIRE_ENABLED=true
# Feature #15 — Voice cloning consent. When true, a profile must be
# accompanied by a recording of the consent phrase before it is usable
# as a TTS source.
# AUTONOMA_VOICE_CONSENT_REQUIRED=false
# AUTONOMA_VOICE_CONSENT_PHRASE_KO=나는 이 음성을 Autonoma에서 사용하는 것에 동의합니다.
# AUTONOMA_VOICE_CONSENT_PHRASE_EN=I consent to using this voice in Autonoma.
# Feature #16 — VMC/OSC bridge to VRChat / VMC4U / NeosVR. UDP socket.
# Requires the `/mocap/live` WS to be receiving frames from the browser.
# AUTONOMA_VMC_BRIDGE_ENABLED=false
# AUTONOMA_VMC_HOST=127.0.0.1
# AUTONOMA_VMC_PORT=39539
# Feature #18 — Session anomaly detection (repetition, mood drift,
# file churn, LLM error bursts).
# AUTONOMA_ANOMALY_DETECTION_ENABLED=true
# Sliding-window size in rounds. Default 10 is fine for short demos;
# bump to 30-50 for long headless runs (>200 rounds) so a single
# noisy round doesn't dominate the verdict.
# AUTONOMA_ANOMALY_WINDOW_ROUNDS=10
# Feature #4 — Viewer betting (channel-points style). Off by default
# because it interacts with chat moderation policy in some regions.
# AUTONOMA_VIEWER_BETTING_ENABLED=false