-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy path.env.example
More file actions
102 lines (85 loc) · 4.65 KB
/
Copy path.env.example
File metadata and controls
102 lines (85 loc) · 4.65 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
# [Required] Your Telegram bot token, from BotFather.
TELEGRAM_BOT_TOKEN=
# [Required] Your Telegram user ID (integer). Used to restrict bot access to just you. You can find it by sending a message to @userinfobot on Telegram.
HAMROH_OWNER_ID=
# [Required] Claude Code auth. This is how the bot logs in to Claude — the
# same on Linux, macOS, and Windows. Do NOT rely on `claude login` /
# Keychain / mounted credentials: the container can't read those.
#
# Generate a long-lived token on the host (interactive, opens a browser):
# claude setup-token
# It prints a token starting with `sk-ant-oat01-...`. Paste it below.
# The token is long-lived, so you set it once. `docker compose restart`
# after changing it.
CLAUDE_CODE_OAUTH_TOKEN=
# [Required] Claude settings — no defaults, must be set.
# HAMROH_EFFORT: low / medium / high / xhigh / max
HAMROH_MODEL=claude-sonnet-4-6
HAMROH_EFFORT=high
# [Default] Claude settings — these have working defaults, so only set
# them if you want to change them.
# CLAUDE_CODE_BIN=claude
# HAMROH_DATA_DIR=./data
# HAMROH_DEBOUNCE_MS=0
# HAMROH_RATE_LIMIT_PER_MIN=20 # raise to ~120 if you run the burst e2e test
# Tool surface (subagents, bash, code, MCPs, built-in tools, skills)
# is configured in `plugins.json`, not in this file. Copy the shipped
# template once: `cp plugins.json.example plugins.json` and edit. See
# `docs/tools.md` for the schema.
# Settings below have working defaults. Uncomment only if you want to
# change them. All settings are read in hamroh/config.py.
# [Default] Stuck-process watcher — if Claude goes silent mid-turn, kill it and
# start it again.
# HAMROH_LIVENESS_TIMEOUT_SECONDS=600 # max silence in seconds
# HAMROH_LIVENESS_POLL_SECONDS=30 # how often the watcher checks
# [Default] Tool errors — stop a turn that keeps failing tool calls.
# HAMROH_TOOL_ERROR_MAX_COUNT=10 # how many errors before stopping
# HAMROH_TOOL_ERROR_WINDOW_SECONDS=600 # or stop if errors keep coming this long
# [Default] Crash handling — wait before restarting Claude after a crash. The wait
# doubles each time, up to the cap. If too many crashes happen in the
# time window, the bot exits and something outside (systemd, docker)
# is expected to restart it.
# HAMROH_CRASH_BACKOFF_BASE=2 # first wait, in seconds
# HAMROH_CRASH_BACKOFF_CAP=64 # longest wait, in seconds
# HAMROH_CRASH_LIMIT=10 # too-many-crashes threshold
# HAMROH_CRASH_WINDOW_SECONDS=600 # the time window for the threshold
# [Optional] The daily self-reflection loop. On by default.
# Set to false/0/no/off to disable; the bot can't switch it on or off itself.
# HAMROH_SELF_REFLECTION_ENABLED=true
# [Default] When the daily self-reflection task runs (UTC cron). Only used
# when HAMROH_SELF_REFLECTION_ENABLED is on. Default: midnight UTC every day.
# HAMROH_SELF_REFLECTION_CRON=0 0 * * *
# [Optional] Show the browser. The browser_* tools (and renders) run headless by
# default. Set to false to watch a real Chromium window drive the page — handy
# for debugging a flow locally. Needs a display, so leave it true on servers/CI.
# HAMROH_BROWSER_HEADLESS=true
# [Optional] Root log level for the console and the JSON log file
# (data/logs/hamroh.log, rotated daily, 7 days kept). One of
# DEBUG / INFO / WARNING / ERROR. Default: INFO.
# HAMROH_LOG_LEVEL=INFO
# [Optional MCP extension] External-MCP credentials — referenced by the default
# `plugins.json` via ${VAR}. An MCP whose ${VAR} resolves empty is
# silently skipped at boot. To stop advertising an MCP without
# clearing credentials, flip `enabled: false` on its entry instead.
# [Optional MCP extension] GitHub — used by the `github` plugin entry.
# Only for GitHub Enterprise; also add `"GITHUB_HOST": "${GITHUB_HOST}"` to the entry's env block in plugins.json
# GITHUB_PERSONAL_ACCESS_TOKEN=
# GITHUB_HOST=
# [Optional MCP extension] GitLab — used by the `mcp-gitlab` plugin entry.
# GITLAB_URL=
# GITLAB_TOKEN=
# [Optional, e2e tests] Credentials for the tester's Telegram *user* account
# (Telethon), used only by `tests/e2e`. The suite skips cleanly when these are
# unset. The e2e bot runs with the same TELEGRAM_BOT_TOKEN / HAMROH_* /
# plugins.json / access.json as above — no separate test config.
#
# 1. Set E2E_BOT_USERNAME (the bot's @handle). The test group(s) are read from
# access.json's allowed_chats (round-robin if several; group tests error if
# none) — there is no E2E_GROUP_ID.
# 2. Run: python tests/e2e/make_session.py
# It fills E2E_TG_API_ID / E2E_TG_API_HASH / E2E_TG_SESSION and your
# HAMROH_OWNER_ID, preserving every other line in this file.
# E2E_BOT_USERNAME=
# E2E_TG_API_ID=
# E2E_TG_API_HASH=
# E2E_TG_SESSION=