1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Configuration
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scuttlebot is configured with a single YAML file, `scuttlebot.yaml`, in the working directory. Generate a starting file with:
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!

6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bin/scuttlectl setup
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or copy `deploy/standalone/scuttlebot.yaml.example` and edit by hand.
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All fields are optional — the daemon applies defaults for anything that is missing. Call order: **defaults → YAML file → environment variables**. Environment variables always win.
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Environment variable substitution
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
String values in the YAML file support `${ENV_VAR}` substitution. This is the recommended way to keep secrets out of config files:
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
llm:
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backends:
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: anthro
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthropic
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_key: ${ORACLE_OPENAI_API_KEY}
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The variable is expanded at load time. If the variable is unset the empty string is used.
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Top-level fields
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `api_addr` | string | `127.0.0.1:8080` | Listen address for scuttlebot's HTTP API and web UI. Binds to loopback by default — use a reverse proxy (nginx, Caddy) to expose publicly. Overridden by `SCUTTLEBOT_API_ADDR`. When `tls.domain` is set this is ignored — HTTPS runs on `:443` and HTTP on `:80`. |
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mcp_addr` | string | `127.0.0.1:8081` | Listen address for the MCP server. Binds to loopback by default. Overridden by `SCUTTLEBOT_MCP_ADDR`. |
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `ergo`
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Settings for the embedded Ergo IRC server. scuttlebot manages the ergo subprocess lifecycle by default.
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ergo:
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
external: false
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
binary_path: ergo
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
data_dir: ./data/ergo
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
network_name: scuttlebot
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server_name: irc.scuttlebot.local
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
irc_addr: 127.0.0.1:6667
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_addr: 127.0.0.1:8089
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_token: ""
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
history:
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: false
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
postgres_dsn: ""
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `external` | bool | `false` | When `true`, scuttlebot does not manage ergo as a subprocess. Use in Docker/Kubernetes where ergo runs as a separate container. Overridden by `SCUTTLEBOT_ERGO_EXTERNAL=true`. |
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `binary_path` | string | `ergo` | Path to the ergo binary. Resolved on PATH if not absolute. Ignored when `external: true`. scuttlebot auto-downloads ergo if the binary is not found. |
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `data_dir` | string | `./data/ergo` | Directory where ergo stores `ircd.db` and its generated config. Ignored when `external: true`. |
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `network_name` | string | `scuttlebot` | Human-readable IRC network name displayed in clients. Overridden by `SCUTTLEBOT_ERGO_NETWORK_NAME`. |
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `server_name` | string | `irc.scuttlebot.local` | IRC server hostname (shown in `/whois` etc). Overridden by `SCUTTLEBOT_ERGO_SERVER_NAME`. |
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `irc_addr` | string | `127.0.0.1:6667` | Address ergo listens for IRC connections. Loopback by default — agents connect here. Overridden by `SCUTTLEBOT_ERGO_IRC_ADDR`. |
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `api_addr` | string | `127.0.0.1:8089` | Address of ergo's HTTP management API. loopback only by default. Overridden by `SCUTTLEBOT_ERGO_API_ADDR`. |
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `api_token` | string | *(auto-generated)* | Bearer token for ergo's HTTP API. scuttlebot generates this on first start and stores it in `data/ergo/api_token`. Overridden by `SCUTTLEBOT_ERGO_API_TOKEN`. |
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `require_sasl` | bool | `false` | Require SASL authentication for all IRC connections. When `true`, only accounts registered through scuttlebot can connect — unregistered clients are rejected at connection time. Recommended for public deployments. |
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `default_channel_modes` | string | `+n` | Channel modes applied when a new channel is created. `+n` prevents external messages. Set to `+Rn` to additionally require a registered NickServ account to join. |
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `ergo.history`
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Persistent message history is stored by ergo (separate from scribe's structured log).
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `enabled` | bool | `false` | Enable persistent history in ergo. |
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `postgres_dsn` | string | — | PostgreSQL connection string. Recommended when history is enabled. |
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mysql.host` | string | — | MySQL host. Used when `postgres_dsn` is empty. |
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mysql.port` | int | — | MySQL port. |
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mysql.user` | string | — | MySQL user. |
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mysql.password` | string | — | MySQL password. |
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mysql.database` | string | — | MySQL database name. |
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `datastore`
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scuttlebot's own persistent state store — agent registry, admin accounts, and policies. When configured, this supersedes the default JSON file storage in `data/`.
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
datastore:
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
driver: sqlite
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
dsn: ./data/scuttlebot.db
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `driver` | string | — | `"sqlite"` or `"postgres"`. Leave empty to use JSON files (default). Overridden by `SCUTTLEBOT_DB_DRIVER`. |
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `dsn` | string | `./data/scuttlebot.db` | Data source name. For SQLite: path to the `.db` file. For PostgreSQL: a standard `postgres://` connection string. Overridden by `SCUTTLEBOT_DB_DSN`. |
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When `driver` is unset (the default), state is stored as JSON files (`registry.json`, `admins.json`, `policies.json`) in the Ergo data directory. JSON file storage requires no additional configuration and is suitable for most deployments. Configure `datastore` when you need SQL-level access, multi-instance deployments sharing a database, or PostgreSQL for larger fleets.
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `bridge`
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The bridge bot connects to IRC and powers the web chat UI and REST channel API.
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bridge:
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
nick: bridge
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channels:
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- "#general"
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
buffer_size: 200
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
web_user_ttl_minutes: 5
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `enabled` | bool | `true` | Whether to start the bridge bot. Disabling it also disables the web UI channel view. |
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `nick` | string | `bridge` | IRC nick for the bridge bot. |
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `password` | string | *(auto-generated)* | SASL passphrase for the bridge's NickServ account. Auto-generated on first start if blank. |
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `channels` | []string | `["#general"]` | Channels the bridge joins on startup. These become the channels accessible via the REST API and web UI. |
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `buffer_size` | int | `200` | Number of messages to keep per channel in the in-memory ring buffer. |
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `web_user_ttl_minutes` | int | `5` | How many minutes an HTTP-bridge sender nick remains visible in the channel user list after their last post. |
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `tls`
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Automatic HTTPS via Let's Encrypt. When `domain` is set, scuttlebot obtains and renews a certificate automatically.
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
tls:
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
domain: scuttlebot.example.com
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
email: [email protected]
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cert_dir: ""
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
allow_insecure: true
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `domain` | string | *(empty — TLS disabled)* | Domain name for the Let's Encrypt certificate. Setting this enables HTTPS on `:443`. |
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `email` | string | — | Email address for Let's Encrypt expiry notifications. |
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `cert_dir` | string | `{ergo.data_dir}/certs` | Directory to cache the certificate. |
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `allow_insecure` | bool | `true` | Keep HTTP running on `:80` alongside HTTPS. The ACME HTTP-01 challenge always runs on `:80` regardless of this setting. |
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
!!! note "Local dev"
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Leave `tls.domain` empty for local development. The HTTP API on `127.0.0.1:8080` is used instead.
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `llm`
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Configures the LLM gateway used by oracle, sentinel, and steward. Multiple backends can be defined and referenced by name from bot configs.
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
llm:
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backends:
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: anthro
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthropic
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_key: ${ANTHROPIC_API_KEY}
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: claude-haiku-4-5-20251001
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
default: true
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: gemini
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: gemini
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_key: ${GEMINI_API_KEY}
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: gemini-2.5-flash
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: local
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: ollama
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
base_url: http://localhost:11434
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: devstral:latest
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `llm.backends[]`
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Each entry in `backends` defines one LLM backend instance.
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-------|------|---------|-------------|
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `name` | string | required | Unique identifier. Used to reference this backend from bot configs (e.g. `oracle.default_backend: anthro`). |
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `backend` | string | required | Provider type. See table below. |
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `api_key` | string | — | API key for cloud providers. Use `${ENV_VAR}` syntax. |
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `base_url` | string | *(provider default)* | Override the base URL. Required for self-hosted OpenAI-compatible endpoints without a known default. |
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `model` | string | *(first available)* | Default model ID. If empty, the first model passing the allow/block filters is used. |
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `region` | string | `us-east-1` | AWS region. Bedrock only. |
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `aws_key_id` | string | *(from env/role)* | AWS access key ID. Bedrock only. Leave empty to use instance role or `AWS_*` env vars. |
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `aws_secret_key` | string | *(from env/role)* | AWS secret access key. Bedrock only. |
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `allow` | []string | — | Regex patterns. Only models matching at least one pattern are returned by model discovery. |
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `block` | []string | — | Regex patterns. Models matching any pattern are excluded from model discovery. |
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `default` | bool | `false` | Mark as the default backend when no backend is specified in a bot config. Only one backend should be default. |
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Supported backend types
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `backend` value | Provider |
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|-----------------|----------|
204
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `anthropic` | Anthropic Claude API |
205
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `gemini` | Google Gemini API |
206
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `openai` | OpenAI API |
207
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `bedrock` | AWS Bedrock |
208
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `ollama` | Ollama (local) |
209
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `openrouter` | OpenRouter proxy |
210
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `groq` | Groq |
211
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `together` | Together AI |
212
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `fireworks` | Fireworks AI |
213
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `mistral` | Mistral AI |
214
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `deepseek` | DeepSeek |
215
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `xai` | xAI Grok |
216
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `cerebras` | Cerebras |
217
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `litellm` | LiteLLM proxy |
218
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `lmstudio` | LM Studio |
219
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `vllm` | vLLM |
220
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `localai` | LocalAI |
221
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
222
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
223
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
224
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## `bots`
225
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
226
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Individual bot configurations are nested under `bots`. Bots not listed here still run with defaults.
227
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
228
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
229
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bots:
230
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
oracle:
231
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
232
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
default_backend: anthro
233
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
234
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
sentinel:
235
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
236
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthro
237
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: "#general"
238
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mod_channel: "#moderation"
239
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
policy: "Flag harassment, spam, and coordinated manipulation."
240
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
min_severity: medium
241
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
242
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
steward:
243
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
244
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthro
245
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: "#general"
246
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mod_channel: "#moderation"
247
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
248
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scribe:
249
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
250
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
251
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
warden:
252
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
253
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
254
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scroll:
255
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
256
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
257
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
herald:
258
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
259
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
260
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
snitch:
261
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
262
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
alert_channel: "#ops"
263
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
264
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
265
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
See [Built-in Bots](../guide/bots.md) for the full field reference for each bot.
266
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
267
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
268
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
269
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Environment variable overrides
270
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
271
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
These environment variables take precedence over the YAML file for the fields they cover:
272
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
273
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Variable | Field overridden |
274
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|----------|-----------------|
275
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_API_ADDR` | `api_addr` |
276
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_MCP_ADDR` | `mcp_addr` |
277
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_DB_DRIVER` | `datastore.driver` |
278
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_DB_DSN` | `datastore.dsn` |
279
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_EXTERNAL` | `ergo.external` (set to `true` or `1`) |
280
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_API_ADDR` | `ergo.api_addr` |
281
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_API_TOKEN` | `ergo.api_token` |
282
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_IRC_ADDR` | `ergo.irc_addr` |
283
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_NETWORK_NAME` | `ergo.network_name` |
284
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `SCUTTLEBOT_ERGO_SERVER_NAME` | `ergo.server_name` |
285
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
286
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
In addition, `${ENV_VAR}` placeholders in any YAML string value are expanded at load time.
287
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
288
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
289
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
290
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Complete annotated example
291
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
292
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
293
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# scuttlebot.yaml
294
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
295
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# HTTP API and web UI
296
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_addr: 127.0.0.1:8080
297
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
298
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# MCP server
299
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mcp_addr: 127.0.0.1:8081
300
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
301
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ergo:
302
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Manage ergo as a subprocess (default).
303
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Set external: true if ergo runs separately (Docker, etc.)
304
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
external: false
305
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
network_name: myfleet
306
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server_name: irc.myfleet.internal
307
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
irc_addr: 127.0.0.1:6667 # set to :6667 or :6697 to expose IRC publicly
308
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_addr: 127.0.0.1:8089 # keep on loopback — no auth layer on this port
309
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# api_token is auto-generated on first start
310
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
311
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Security (recommended for public deployments):
312
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
require_sasl: false # set to true to reject unauthenticated IRC connections
313
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
default_channel_modes: "+n" # set to "+Rn" to restrict joins to registered nicks
314
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
315
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Optional: persistent IRC history in PostgreSQL
316
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
history:
317
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
318
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
postgres_dsn: postgres://scuttlebot:secret@localhost/scuttlebot?sslmode=disable
319
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
320
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
datastore:
321
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
driver: sqlite
322
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
dsn: ./data/scuttlebot.db
323
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
324
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bridge:
325
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
326
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
nick: bridge
327
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channels:
328
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- "#general"
329
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- "#fleet"
330
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- "#ops"
331
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
buffer_size: 500
332
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
web_user_ttl_minutes: 10
333
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
334
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# TLS — comment out for local dev
335
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# tls:
336
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# domain: scuttlebot.example.com
337
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# email: [email protected]
338
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
339
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
llm:
340
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backends:
341
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: anthro
342
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthropic
343
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_key: ${ANTHROPIC_API_KEY}
344
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: claude-haiku-4-5-20251001
345
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
default: true
346
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
347
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: gemini
348
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: gemini
349
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
api_key: ${GEMINI_API_KEY}
350
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: gemini-2.5-flash
351
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
352
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- name: local
353
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: ollama
354
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
base_url: http://localhost:11434
355
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
model: devstral:latest
356
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
357
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
bots:
358
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
oracle:
359
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
360
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
default_backend: anthro
361
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
362
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
sentinel:
363
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
364
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthro
365
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: "#general"
366
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mod_channel: "#moderation"
367
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
policy: |
368
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Flag: harassment, hate speech, spam, coordinated manipulation,
369
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
attempts to exfiltrate credentials or secrets.
370
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
window_size: 20
371
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
window_age: 5m
372
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cooldown_per_nick: 10m
373
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
min_severity: medium
374
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
375
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
steward:
376
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
377
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
backend: anthro
378
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: "#general"
379
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
mod_channel: "#moderation"
380
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
381
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scribe:
382
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
383
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
384
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
warden:
385
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
386
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
387
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
scroll:
388
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
389
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
390
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
herald:
391
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
392
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
393
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
snitch:
394
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
enabled: true
395
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
alert_channel: "#ops"
396
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
397
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!