-
Notifications
You must be signed in to change notification settings - Fork 98
Expand file tree
/
Copy pathconfig.toml.example
More file actions
140 lines (121 loc) · 6.12 KB
/
config.toml.example
File metadata and controls
140 lines (121 loc) · 6.12 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
# Enable one or more adapters. At least one [discord] or [slack] section is required.
[discord]
bot_token = "${DISCORD_BOT_TOKEN}"
# allow_all_channels = true # true = allow all channels; false = only allowed_channels
# # omitted = auto-detect from list (non-empty → false, empty → true)
allowed_channels = ["1234567890"] # ↑ omitted + non-empty list → auto-detected as false
# allow_all_users = true # true = any user; false = only allowed_users
# # omitted = auto-detect from list (non-empty → false, empty → true)
# allowed_users = ["<YOUR_DISCORD_USER_ID>"] # ↑ omitted + empty/absent list → auto-detected as true
# allow_bot_messages = "off" # "off" (default) | "mentions" | "all"
# "mentions" is recommended for multi-agent collaboration
# trusted_bot_ids = [] # empty = any bot (mode permitting); set to restrict
# allow_user_messages = "involved" # "involved" (default) | "mentions"
# "involved" = reply in threads bot owns or has participated in
# "mentions" = always require @mention
# [slack]
# bot_token = "${SLACK_BOT_TOKEN}" # Bot User OAuth Token (xoxb-...)
# app_token = "${SLACK_APP_TOKEN}" # App-Level Token (xapp-...) for Socket Mode
# allow_all_channels = true # true (default) = allow all channels; false = only allowed_channels
# allowed_channels = ["C0123456789"] # only checked when allow_all_channels = false
# allow_all_users = true # true (default) = any user; false = only allowed_users
# allowed_users = ["U0123456789"] # only checked when allow_all_users = false
# allow_bot_messages = "off" # "off" (default) | "mentions" | "all"
# trusted_bot_ids = [] # empty = any bot (mode permitting); set to restrict
# allow_user_messages = "involved" # "involved" (default) | "mentions" | "multibot-mentions"
# "involved" = reply in threads bot has participated in
# "mentions" = always require @mention
# "multibot-mentions" = like "involved", but require @mention
# once another bot has posted in the thread
# max_bot_turns = 20 # soft cap on consecutive bot turns per thread (human msg resets)
# [gateway]
# url = "ws://openab-gateway:8080/ws" # WebSocket URL of the custom gateway
# platform = "line" # "telegram" (default) | "line"
# token = "${GATEWAY_TOKEN}" # shared token for WebSocket auth (optional but recommended)
# bot_username = "my_bot" # for @mention gating in groups
# allow_all_channels = true # true = allow all channels; false = only allowed_channels
# # omitted = auto-detect from list (non-empty → false, empty → true)
# allowed_channels = ["C1234"] # only checked when allow_all_channels = false
# allow_all_users = true # true = any user; false = only allowed_users
# # omitted = auto-detect from list (non-empty → false, empty → true)
# allowed_users = ["U5678"] # only checked when allow_all_users = false
[agent]
command = "kiro-cli"
args = ["acp", "--trust-all-tools"]
working_dir = "/home/agent"
# [agent]
# command = "claude"
# args = ["--acp"]
# working_dir = "/home/agent"
# env = { ANTHROPIC_API_KEY = "${ANTHROPIC_API_KEY}" }
# [agent]
# command = "codex"
# args = ["--acp"]
# working_dir = "/home/agent"
# env = { OPENAI_API_KEY = "${OPENAI_API_KEY}" }
# [agent]
# command = "gemini"
# args = ["--acp"]
# working_dir = "/home/agent"
# env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" }
# [agent]
# command = "copilot"
# args = ["--acp", "--stdio"]
# working_dir = "/home/agent"
# env = {} # Auth via: kubectl exec -it <pod> -- gh auth login -p https -w
# [agent]
# command = "opencode"
# args = ["acp"]
# working_dir = "/home/node"
# # Note: opencode handles tool authorization internally and never emits
# # session/request_permission — all tools run without user confirmation,
# # equivalent to --trust-all-tools on other backends.
# # Run `opencode auth login` once before starting openab.
# [agent]
# command = "cursor-agent"
# args = ["acp", "--model", "auto", "--workspace", "/home/agent"]
# working_dir = "/home/agent"
# env = {} # Auth via: kubectl exec -it <pod> -- cursor-agent login
[pool]
max_sessions = 10
session_ttl_hours = 24
[markdown]
tables = "code" # "code" (default) | "bullets" | "off"
# code: wrap tables in fenced code blocks with aligned columns
# bullets: convert each row into bullet points (• Header: Value)
# off: pass through unchanged
[reactions]
enabled = true
remove_after_reply = false
[reactions.emojis]
queued = "👀"
thinking = "🤔"
tool = "🔥"
coding = "👨💻"
web = "⚡"
done = "🆗"
error = "😱"
[reactions.timing]
debounce_ms = 700
stall_soft_ms = 10000
stall_hard_ms = 30000
done_hold_ms = 1500
error_hold_ms = 2500
# --- Scheduled messages (config-driven cron) ---
# Everything cron-related lives under [cron].
# [cron]
# usercron_enabled = true # enable hot-reload (default: false)
# usercron_path = "cronjob.toml" # relative to $HOME, or absolute
# [[cron.jobs]]
# enabled = true # optional, default: true
# schedule = "0 9 * * 1-5" # weekdays at 9:00 AM
# channel = "123456789" # target channel/thread ID
# message = "summarize yesterday's merged PRs" # prompt for the agent
# platform = "discord" # "discord" or "slack"
# sender_name = "DailyOps" # attribution (default: "openab-cron")
# timezone = "America/New_York" # IANA timezone (default: "UTC")
# thread_id = "" # optional: post to existing thread
# [[cron.jobs]]
# schedule = "0 0 * * 0"
# channel = "123456789"
# message = "generate weekly status report"