Repository navigation
Expand file tree
/
Copy path.toad.yaml.example
More file actions
156 lines (141 loc) Β· 9.14 KB
/
Copy path.toad.yaml.example
File metadata and controls
156 lines (141 loc) Β· 9.14 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
# Copy to .toad.yaml β see SETUP.md
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Slack Connection
# ββββββββββββββββββββββββββββββββββββββββββββββ
slack:
# Tokens (can also use TOAD_SLACK_APP_TOKEN / TOAD_SLACK_BOT_TOKEN env vars)
app_token: "xapp-1-..."
bot_token: "xoxb-..."
# Channels to monitor (use channel names, not IDs).
# Leave empty to auto-join and monitor all public channels.
channels: []
# channels:
# - "engineering"
# What triggers toad
triggers:
keywords:
- "toad fix"
- "toad help"
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Repositories β read-only context for investigations.
# Toad never commits, pushes, or opens anything against these.
# ββββββββββββββββββββββββββββββββββββββββββββββ
repos:
sync_minutes: 10 # periodic git fetch interval (0 = disabled)
list:
- name: "my-app" # unique short name
path: "/path/to/repo" # absolute (or relative, resolved to absolute)
# description: "" # optional; auto-detected / falls back to README
primary: true # fallback repo when a message's repo is ambiguous
default_branch: "main"
# Per-repo VCS override (defaults to the global `vcs:` section below):
# vcs:
# platform: "gitlab"
# host: "gitlab.company.com"
# bot_usernames: ["renovate-bot"]
# Add more repos:
# list:
# - name: "frontend"
# path: "/path/to/frontend"
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Safety Limits
# ββββββββββββββββββββββββββββββββββββββββββββββ
limits:
max_concurrent: 2 # max concurrent investigations; ribbit pool is 3x this
timeout_minutes: 10 # ribbit run timeout
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Triage β message classification
# ββββββββββββββββββββββββββββββββββββββββββββββ
triage:
model: "haiku" # fast, cheap classification (~1s)
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Intake β bot message allowlist
# Only these Slack Bot IDs (e.g. your Sentry integration) are let into
# triage as intake; this is also what makes a finding "Sentry-corroborated"
# for the ticket auto-file gate below. See SETUP.md for how to find a bot ID.
# ββββββββββββββββββββββββββββββββββββββββββββββ
# intake:
# bot_allowlist:
# - "B0123456789"
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Ticket β Linear auto-filing gate
# ββββββββββββββββββββββββββββββββββββββββββββββ
ticket:
auto_file: true # auto-file when Sentry-corroborated + confident + feasible
auto_file_confidence: 0.85 # confidence floor to clear the gate; else propose via CTA
# triage_state_id: "" # optional Linear workflow state ID for newly filed tickets
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Toad King β passive digest monitoring
# ββββββββββββββββββββββββββββββββββββββββββββββ
digest:
enabled: false # opt-in batch analysis
batch_minutes: 5 # how often to analyze batched messages
min_confidence: 0.8 # confidence floor for digest proposals
max_auto_spawn_hour: 3 # max auto-filed tickets per hour
allowed_categories: ["bug"] # categories eligible for auto-file
max_est_size: "medium" # max estimated fix size
# max_chunk_size: 50 # messages per analysis batch
# chunk_timeout_secs: 120 # batch analysis timeout
# investigate_timeout_secs: 600 # investigation time limit (default: 10 min)
# bot_list: [] # bot IDs eligible for active outreach (empty = all)
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Issue Tracker β the tracker connection itself.
# `ticket.auto_file` above is the separate gate on top of this.
# ββββββββββββββββββββββββββββββββββββββββββββββ
issue_tracker:
enabled: false # enable Linear integration
provider: "linear" # "linear" is the only supported provider
# api_token: "" # or use TOAD_LINEAR_API_TOKEN env var
# team_id: "" # Linear team ID (required when create_issues is true)
create_issues: false # both this and `enabled` must be true to file tickets
# bug_label_id: "" # optional Linear label for bugs
# feature_label_id: "" # optional Linear label for features
# respect_assignees: false # defer to ticket assignee instead of re-filing
stale_days: 7 # ignore assignments older than this many days
# ββββββββββββββββββββββββββββββββββββββββββββββ
# VCS Platform β read-only PR/CI/issue lookups for ribbit (investigations
# get no gh/glab access at all β Read/Glob/Grep + MCP only)
# ββββββββββββββββββββββββββββββββββββββββββββββ
vcs:
platform: "github" # "github" or "gitlab"
# host: "" # self-hosted GitLab hostname (or TOAD_GITLAB_HOST env)
# bot_usernames: [] # usernames to treat as bots (GitLab)
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Agent β investigation, triage, and ribbit runs
# ββββββββββββββββββββββββββββββββββββββββββββββ
agent:
platform: "claude"
model: "sonnet"
# append_system_prompt: "" # extra instructions for all agent runs
# fallback_api_key_env: "ANTHROPIC_API_KEY" # env var to retry with when the CLI seat is throttled
# mcp_servers: # MCP servers available during read-only investigations
# sentry:
# url: "https://mcp.sentry.dev/mcp"
# auth_token_env: "TOAD_SENTRY_MCP_TOKEN"
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Release Notes β announce a new toad version to Slack on startup
# ββββββββββββββββββββββββββββββββββββββββββββββ
# release_notes:
# channel: "toad-dev" # channel NAME; empty (default) disables the feature
# ββββββββββββββββββββββββββββββββββββββββββββββ
# Logging
# ββββββββββββββββββββββββββββββββββββββββββββββ
log:
level: "info" # debug, info, warn, error
# file: "~/.toad/toad.log" # default log file location
# ββββββββββββββββββββββββββββββββββββββββββββββ
# MCP Server β ask/logs/investigations/query tools for Claude Desktop/Code
# ββββββββββββββββββββββββββββββββββββββββββββββ
# mcp:
# enabled: false
# host: "localhost"
# port: 8099
# # tls: false # serve the MCP endpoint over real TLS (not just cosmetic) β
# # requires cert_file and key_file below, and affects the URL
# # shown in /toad mcp connect DMs
# # cert_file: "" # TLS certificate path; required when tls is true
# # key_file: "" # TLS private key path; required when tls is true
# # token_ttl_days: 90 # MCP bearer token lifetime in days; 0 = tokens never expire
# devs: # Slack user IDs with dev role (logs/query/investigations)
# - "U0123456789"
# message: "" # optional message included in the connect DM