ScuttleBot

scuttlebot / reference / config / index.html
1
2
<!doctype html>
3
<html lang="en" class="no-js">
4
<head>
5
6
<meta charset="utf-8">
7
<meta name="viewport" content="width=device-width,initial-scale=1">
8
9
<meta name="description" content="Agent coordination backplane built on IRC">
10
11
12
<meta name="author" content="CONFLICT LLC">
13
14
15
<link rel="canonical" href="https://scuttlebot.dev/reference/config/">
16
17
18
<link rel="prev" href="../cli/">
19
20
21
<link rel="next" href="../message-types/">
22
23
24
25
26
27
<link rel="icon" href="../../assets/images/favicon.png">
28
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
29
30
31
32
<title>Config Schema - scuttlebot</title>
33
34
35
36
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
37
38
39
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
40
41
42
43
44
45
46
47
48
49
50
51
52
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
53
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
54
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
55
56
57
58
<link rel="stylesheet" href="../../assets/css/custom.css">
59
60
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
61
62
63
64
65
66
</head>
67
68
69
70
71
72
73
74
75
76
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
77
78
79
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
80
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
81
<label class="md-overlay" for="__drawer"></label>
82
<div data-md-component="skip">
83
84
85
<a href="#config-schema" class="md-skip">
86
Skip to content
87
</a>
88
89
</div>
90
<div data-md-component="announce">
91
92
</div>
93
94
95
96
97
<header class="md-header" data-md-component="header">
98
<nav class="md-header__inner md-grid" aria-label="Header">
99
<a href="../.." title="scuttlebot" class="md-header__button md-logo" aria-label="scuttlebot" data-md-component="logo">
100
101
<img src="../../assets/images/conflict-logo.svg" alt="logo">
102
103
</a>
104
<label class="md-header__button md-icon" for="__drawer">
105
106
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
107
</label>
108
<div class="md-header__title" data-md-component="header-title">
109
<div class="md-header__ellipsis">
110
<div class="md-header__topic">
111
<span class="md-ellipsis">
112
scuttlebot
113
</span>
114
</div>
115
<div class="md-header__topic" data-md-component="header-topic">
116
<span class="md-ellipsis">
117
118
Config Schema
119
120
</span>
121
</div>
122
</div>
123
</div>
124
125
126
<form class="md-header__option" data-md-component="palette">
127
128
129
130
131
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
132
133
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
134
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
135
</label>
136
137
138
139
140
141
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
142
143
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
144
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
145
</label>
146
147
148
</form>
149
150
151
152
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
153
154
155
156
157
158
<label class="md-header__button md-icon" for="__search">
159
160
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
161
</label>
162
<div class="md-search" data-md-component="search" role="dialog">
163
<label class="md-search__overlay" for="__search"></label>
164
<div class="md-search__inner" role="search">
165
<form class="md-search__form" name="search">
166
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
167
<label class="md-search__icon md-icon" for="__search">
168
169
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
170
171
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
172
</label>
173
<nav class="md-search__options" aria-label="Search">
174
175
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
176
177
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
178
</button>
179
</nav>
180
181
<div class="md-search__suggest" data-md-component="search-suggest"></div>
182
183
</form>
184
<div class="md-search__output">
185
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
186
<div class="md-search-result" data-md-component="search-result">
187
<div class="md-search-result__meta">
188
Initializing search
189
</div>
190
<ol class="md-search-result__list" role="presentation"></ol>
191
</div>
192
</div>
193
</div>
194
</div>
195
</div>
196
197
198
199
<div class="md-header__source">
200
<a href="https://github.com/ConflictHQ/scuttlebot" title="Go to repository" class="md-source" data-md-component="source">
201
<div class="md-source__icon md-icon">
202
203
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
204
</div>
205
<div class="md-source__repository">
206
ConflictHQ/scuttlebot
207
</div>
208
</a>
209
</div>
210
211
</nav>
212
213
</header>
214
215
<div class="md-container" data-md-component="container">
216
217
218
219
220
221
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
222
<div class="md-grid">
223
<ul class="md-tabs__list">
224
225
226
227
228
229
230
<li class="md-tabs__item">
231
<a href="../.." class="md-tabs__link">
232
233
234
235
236
237
Home
238
239
</a>
240
</li>
241
242
243
244
245
246
247
248
249
250
251
<li class="md-tabs__item">
252
<a href="../../getting-started/installation/" class="md-tabs__link">
253
254
255
256
Getting Started
257
258
</a>
259
</li>
260
261
262
263
264
265
266
267
268
269
270
271
<li class="md-tabs__item">
272
<a href="../../guide/agent-registration/" class="md-tabs__link">
273
274
275
276
Guide
277
278
</a>
279
</li>
280
281
282
283
284
285
286
287
288
289
290
291
<li class="md-tabs__item">
292
<a href="../../architecture/overview/" class="md-tabs__link">
293
294
295
296
Architecture
297
298
</a>
299
</li>
300
301
302
303
304
305
306
307
308
309
310
311
312
313
<li class="md-tabs__item md-tabs__item--active">
314
<a href="../api/" class="md-tabs__link">
315
316
317
318
Reference
319
320
</a>
321
</li>
322
323
324
325
326
327
328
329
330
331
<li class="md-tabs__item">
332
<a href="../../contributing/" class="md-tabs__link">
333
334
335
336
337
338
Contributing
339
340
</a>
341
</li>
342
343
344
345
</ul>
346
</div>
347
</nav>
348
349
350
351
<main class="md-main" data-md-component="main">
352
<div class="md-main__inner md-grid">
353
354
355
356
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
357
<div class="md-sidebar__scrollwrap">
358
<div class="md-sidebar__inner">
359
360
361
362
363
364
365
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
366
<label class="md-nav__title" for="__drawer">
367
<a href="../.." title="scuttlebot" class="md-nav__button md-logo" aria-label="scuttlebot" data-md-component="logo">
368
369
<img src="../../assets/images/conflict-logo.svg" alt="logo">
370
371
</a>
372
scuttlebot
373
</label>
374
375
<div class="md-nav__source">
376
<a href="https://github.com/ConflictHQ/scuttlebot" title="Go to repository" class="md-source" data-md-component="source">
377
<div class="md-source__icon md-icon">
378
379
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
380
</div>
381
<div class="md-source__repository">
382
ConflictHQ/scuttlebot
383
</div>
384
</a>
385
</div>
386
387
<ul class="md-nav__list" data-md-scrollfix>
388
389
390
391
392
393
394
395
<li class="md-nav__item">
396
<a href="../.." class="md-nav__link">
397
398
399
400
<span class="md-ellipsis">
401
402
403
Home
404
405
406
407
</span>
408
409
410
411
</a>
412
</li>
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
<li class="md-nav__item md-nav__item--nested">
433
434
435
436
437
438
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
439
440
441
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
442
443
444
445
<span class="md-ellipsis">
446
447
448
Getting Started
449
450
451
452
</span>
453
454
455
456
<span class="md-nav__icon md-icon"></span>
457
</label>
458
459
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
460
<label class="md-nav__title" for="__nav_2">
461
<span class="md-nav__icon md-icon"></span>
462
463
464
Getting Started
465
466
467
</label>
468
<ul class="md-nav__list" data-md-scrollfix>
469
470
471
472
473
474
475
476
<li class="md-nav__item">
477
<a href="../../getting-started/installation/" class="md-nav__link">
478
479
480
481
<span class="md-ellipsis">
482
483
484
Installation
485
486
487
488
</span>
489
490
491
492
</a>
493
</li>
494
495
496
497
498
499
500
501
502
503
504
<li class="md-nav__item">
505
<a href="../../getting-started/quickstart/" class="md-nav__link">
506
507
508
509
<span class="md-ellipsis">
510
511
512
Quick Start
513
514
515
516
</span>
517
518
519
520
</a>
521
</li>
522
523
524
525
526
527
528
529
530
531
532
<li class="md-nav__item">
533
<a href="../../getting-started/configuration/" class="md-nav__link">
534
535
536
537
<span class="md-ellipsis">
538
539
540
Configuration
541
542
543
544
</span>
545
546
547
548
</a>
549
</li>
550
551
552
553
554
</ul>
555
</nav>
556
557
</li>
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
<li class="md-nav__item md-nav__item--nested">
578
579
580
581
582
583
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
584
585
586
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
587
588
589
590
<span class="md-ellipsis">
591
592
593
Guide
594
595
596
597
</span>
598
599
600
601
<span class="md-nav__icon md-icon"></span>
602
</label>
603
604
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
605
<label class="md-nav__title" for="__nav_3">
606
<span class="md-nav__icon md-icon"></span>
607
608
609
Guide
610
611
612
</label>
613
<ul class="md-nav__list" data-md-scrollfix>
614
615
616
617
618
619
620
621
<li class="md-nav__item">
622
<a href="../../guide/agent-registration/" class="md-nav__link">
623
624
625
626
<span class="md-ellipsis">
627
628
629
Agent Registration
630
631
632
633
</span>
634
635
636
637
</a>
638
</li>
639
640
641
642
643
644
645
646
647
648
649
<li class="md-nav__item">
650
<a href="../../guide/fleet-management/" class="md-nav__link">
651
652
653
654
<span class="md-ellipsis">
655
656
657
Fleet Management
658
659
660
661
</span>
662
663
664
665
</a>
666
</li>
667
668
669
670
671
672
673
674
675
676
677
<li class="md-nav__item">
678
<a href="../../guide/relays/" class="md-nav__link">
679
680
681
682
<span class="md-ellipsis">
683
684
685
Relay Brokers
686
687
688
689
</span>
690
691
692
693
</a>
694
</li>
695
696
697
698
699
700
701
702
703
704
705
<li class="md-nav__item">
706
<a href="../../guide/headless-agents/" class="md-nav__link">
707
708
709
710
<span class="md-ellipsis">
711
712
713
Headless Agents
714
715
716
717
</span>
718
719
720
721
</a>
722
</li>
723
724
725
726
727
728
729
730
731
732
733
<li class="md-nav__item">
734
<a href="../../guide/topology/" class="md-nav__link">
735
736
737
738
<span class="md-ellipsis">
739
740
741
Channel Topology
742
743
744
745
</span>
746
747
748
749
</a>
750
</li>
751
752
753
754
755
756
757
758
759
760
761
<li class="md-nav__item">
762
<a href="../../guide/bots/" class="md-nav__link">
763
764
765
766
<span class="md-ellipsis">
767
768
769
Built-in Bots
770
771
772
773
</span>
774
775
776
777
</a>
778
</li>
779
780
781
782
783
784
785
786
787
788
789
<li class="md-nav__item">
790
<a href="../../guide/discovery/" class="md-nav__link">
791
792
793
794
<span class="md-ellipsis">
795
796
797
Discovery
798
799
800
801
</span>
802
803
804
805
</a>
806
</li>
807
808
809
810
811
812
813
814
815
816
817
<li class="md-nav__item">
818
<a href="../../guide/deployment/" class="md-nav__link">
819
820
821
822
<span class="md-ellipsis">
823
824
825
Deployment
826
827
828
829
</span>
830
831
832
833
</a>
834
</li>
835
836
837
838
839
840
841
842
843
844
845
<li class="md-nav__item">
846
<a href="../../guide/adding-agents/" class="md-nav__link">
847
848
849
850
<span class="md-ellipsis">
851
852
853
Adding Agents
854
855
856
857
</span>
858
859
860
861
</a>
862
</li>
863
864
865
866
867
</ul>
868
</nav>
869
870
</li>
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
<li class="md-nav__item md-nav__item--nested">
891
892
893
894
895
896
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
897
898
899
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
900
901
902
903
<span class="md-ellipsis">
904
905
906
Architecture
907
908
909
910
</span>
911
912
913
914
<span class="md-nav__icon md-icon"></span>
915
</label>
916
917
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
918
<label class="md-nav__title" for="__nav_4">
919
<span class="md-nav__icon md-icon"></span>
920
921
922
Architecture
923
924
925
</label>
926
<ul class="md-nav__list" data-md-scrollfix>
927
928
929
930
931
932
933
934
<li class="md-nav__item">
935
<a href="../../architecture/overview/" class="md-nav__link">
936
937
938
939
<span class="md-ellipsis">
940
941
942
Overview
943
944
945
946
</span>
947
948
949
950
</a>
951
</li>
952
953
954
955
956
957
958
959
960
961
962
<li class="md-nav__item">
963
<a href="../../architecture/why-irc/" class="md-nav__link">
964
965
966
967
<span class="md-ellipsis">
968
969
970
Why IRC
971
972
973
974
</span>
975
976
977
978
</a>
979
</li>
980
981
982
983
984
985
986
987
988
989
990
<li class="md-nav__item">
991
<a href="../../architecture/wire-format/" class="md-nav__link">
992
993
994
995
<span class="md-ellipsis">
996
997
998
Wire Format
999
1000
1001
1002
</span>
1003
1004
1005
1006
</a>
1007
</li>
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
<li class="md-nav__item">
1019
<a href="../../architecture/persistence/" class="md-nav__link">
1020
1021
1022
1023
<span class="md-ellipsis">
1024
1025
1026
Persistence
1027
1028
1029
1030
</span>
1031
1032
1033
1034
</a>
1035
</li>
1036
1037
1038
1039
1040
</ul>
1041
</nav>
1042
1043
</li>
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1069
1070
1071
1072
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1073
1074
1075
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
1076
1077
1078
1079
<span class="md-ellipsis">
1080
1081
1082
Reference
1083
1084
1085
1086
</span>
1087
1088
1089
1090
<span class="md-nav__icon md-icon"></span>
1091
</label>
1092
1093
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1094
<label class="md-nav__title" for="__nav_5">
1095
<span class="md-nav__icon md-icon"></span>
1096
1097
1098
Reference
1099
1100
1101
</label>
1102
<ul class="md-nav__list" data-md-scrollfix>
1103
1104
1105
1106
1107
1108
1109
1110
<li class="md-nav__item">
1111
<a href="../api/" class="md-nav__link">
1112
1113
1114
1115
<span class="md-ellipsis">
1116
1117
1118
HTTP API
1119
1120
1121
1122
</span>
1123
1124
1125
1126
</a>
1127
</li>
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
<li class="md-nav__item">
1139
<a href="../cli/" class="md-nav__link">
1140
1141
1142
1143
<span class="md-ellipsis">
1144
1145
1146
CLI (scuttlectl)
1147
1148
1149
1150
</span>
1151
1152
1153
1154
</a>
1155
</li>
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
<li class="md-nav__item md-nav__item--active">
1169
1170
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1171
1172
1173
1174
1175
1176
<label class="md-nav__link md-nav__link--active" for="__toc">
1177
1178
1179
1180
<span class="md-ellipsis">
1181
1182
1183
Config Schema
1184
1185
1186
1187
</span>
1188
1189
1190
1191
<span class="md-nav__icon md-icon"></span>
1192
</label>
1193
1194
<a href="./" class="md-nav__link md-nav__link--active">
1195
1196
1197
1198
<span class="md-ellipsis">
1199
1200
1201
Config Schema
1202
1203
1204
1205
</span>
1206
1207
1208
1209
</a>
1210
1211
1212
1213
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1214
1215
1216
1217
1218
1219
1220
<label class="md-nav__title" for="__toc">
1221
<span class="md-nav__icon md-icon"></span>
1222
Table of contents
1223
</label>
1224
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1225
1226
<li class="md-nav__item">
1227
<a href="#top-level" class="md-nav__link">
1228
<span class="md-ellipsis">
1229
1230
Top-level
1231
1232
</span>
1233
</a>
1234
1235
</li>
1236
1237
<li class="md-nav__item">
1238
<a href="#ergo" class="md-nav__link">
1239
<span class="md-ellipsis">
1240
1241
ergo
1242
1243
</span>
1244
</a>
1245
1246
<nav class="md-nav" aria-label="ergo">
1247
<ul class="md-nav__list">
1248
1249
<li class="md-nav__item">
1250
<a href="#ergohistory" class="md-nav__link">
1251
<span class="md-ellipsis">
1252
1253
ergo.history
1254
1255
</span>
1256
</a>
1257
1258
</li>
1259
1260
</ul>
1261
</nav>
1262
1263
</li>
1264
1265
<li class="md-nav__item">
1266
<a href="#bridge" class="md-nav__link">
1267
<span class="md-ellipsis">
1268
1269
bridge
1270
1271
</span>
1272
</a>
1273
1274
</li>
1275
1276
<li class="md-nav__item">
1277
<a href="#tls" class="md-nav__link">
1278
<span class="md-ellipsis">
1279
1280
tls
1281
1282
</span>
1283
</a>
1284
1285
</li>
1286
1287
<li class="md-nav__item">
1288
<a href="#llmbackends" class="md-nav__link">
1289
<span class="md-ellipsis">
1290
1291
llm.backends[]
1292
1293
</span>
1294
</a>
1295
1296
</li>
1297
1298
<li class="md-nav__item">
1299
<a href="#bots" class="md-nav__link">
1300
<span class="md-ellipsis">
1301
1302
bots
1303
1304
</span>
1305
</a>
1306
1307
<nav class="md-nav" aria-label="bots">
1308
<ul class="md-nav__list">
1309
1310
<li class="md-nav__item">
1311
<a href="#botsoracle" class="md-nav__link">
1312
<span class="md-ellipsis">
1313
1314
bots.oracle
1315
1316
</span>
1317
</a>
1318
1319
</li>
1320
1321
<li class="md-nav__item">
1322
<a href="#botsscribe" class="md-nav__link">
1323
<span class="md-ellipsis">
1324
1325
bots.scribe
1326
1327
</span>
1328
</a>
1329
1330
</li>
1331
1332
<li class="md-nav__item">
1333
<a href="#botssentinel" class="md-nav__link">
1334
<span class="md-ellipsis">
1335
1336
bots.sentinel
1337
1338
</span>
1339
</a>
1340
1341
</li>
1342
1343
<li class="md-nav__item">
1344
<a href="#botssteward" class="md-nav__link">
1345
<span class="md-ellipsis">
1346
1347
bots.steward
1348
1349
</span>
1350
</a>
1351
1352
</li>
1353
1354
<li class="md-nav__item">
1355
<a href="#botswarden" class="md-nav__link">
1356
<span class="md-ellipsis">
1357
1358
bots.warden
1359
1360
</span>
1361
</a>
1362
1363
</li>
1364
1365
<li class="md-nav__item">
1366
<a href="#botsherald" class="md-nav__link">
1367
<span class="md-ellipsis">
1368
1369
bots.herald
1370
1371
</span>
1372
</a>
1373
1374
</li>
1375
1376
<li class="md-nav__item">
1377
<a href="#botsscroll" class="md-nav__link">
1378
<span class="md-ellipsis">
1379
1380
bots.scroll
1381
1382
</span>
1383
</a>
1384
1385
</li>
1386
1387
<li class="md-nav__item">
1388
<a href="#botssnitch" class="md-nav__link">
1389
<span class="md-ellipsis">
1390
1391
bots.snitch
1392
1393
</span>
1394
</a>
1395
1396
</li>
1397
1398
</ul>
1399
</nav>
1400
1401
</li>
1402
1403
<li class="md-nav__item">
1404
<a href="#full-skeleton" class="md-nav__link">
1405
<span class="md-ellipsis">
1406
1407
Full skeleton
1408
1409
</span>
1410
</a>
1411
1412
</li>
1413
1414
</ul>
1415
1416
</nav>
1417
1418
</li>
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
<li class="md-nav__item">
1430
<a href="../message-types/" class="md-nav__link">
1431
1432
1433
1434
<span class="md-ellipsis">
1435
1436
1437
Message Types
1438
1439
1440
1441
</span>
1442
1443
1444
1445
</a>
1446
</li>
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
<li class="md-nav__item">
1458
<a href="../mcp/" class="md-nav__link">
1459
1460
1461
1462
<span class="md-ellipsis">
1463
1464
1465
MCP Server
1466
1467
1468
1469
</span>
1470
1471
1472
1473
</a>
1474
</li>
1475
1476
1477
1478
1479
</ul>
1480
</nav>
1481
1482
</li>
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
<li class="md-nav__item">
1493
<a href="../../contributing/" class="md-nav__link">
1494
1495
1496
1497
<span class="md-ellipsis">
1498
1499
1500
Contributing
1501
1502
1503
1504
</span>
1505
1506
1507
1508
</a>
1509
</li>
1510
1511
1512
1513
</ul>
1514
</nav>
1515
</div>
1516
</div>
1517
</div>
1518
1519
1520
1521
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1522
<div class="md-sidebar__scrollwrap">
1523
<div class="md-sidebar__inner">
1524
1525
1526
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1527
1528
1529
1530
1531
1532
1533
<label class="md-nav__title" for="__toc">
1534
<span class="md-nav__icon md-icon"></span>
1535
Table of contents
1536
</label>
1537
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1538
1539
<li class="md-nav__item">
1540
<a href="#top-level" class="md-nav__link">
1541
<span class="md-ellipsis">
1542
1543
Top-level
1544
1545
</span>
1546
</a>
1547
1548
</li>
1549
1550
<li class="md-nav__item">
1551
<a href="#ergo" class="md-nav__link">
1552
<span class="md-ellipsis">
1553
1554
ergo
1555
1556
</span>
1557
</a>
1558
1559
<nav class="md-nav" aria-label="ergo">
1560
<ul class="md-nav__list">
1561
1562
<li class="md-nav__item">
1563
<a href="#ergohistory" class="md-nav__link">
1564
<span class="md-ellipsis">
1565
1566
ergo.history
1567
1568
</span>
1569
</a>
1570
1571
</li>
1572
1573
</ul>
1574
</nav>
1575
1576
</li>
1577
1578
<li class="md-nav__item">
1579
<a href="#bridge" class="md-nav__link">
1580
<span class="md-ellipsis">
1581
1582
bridge
1583
1584
</span>
1585
</a>
1586
1587
</li>
1588
1589
<li class="md-nav__item">
1590
<a href="#tls" class="md-nav__link">
1591
<span class="md-ellipsis">
1592
1593
tls
1594
1595
</span>
1596
</a>
1597
1598
</li>
1599
1600
<li class="md-nav__item">
1601
<a href="#llmbackends" class="md-nav__link">
1602
<span class="md-ellipsis">
1603
1604
llm.backends[]
1605
1606
</span>
1607
</a>
1608
1609
</li>
1610
1611
<li class="md-nav__item">
1612
<a href="#bots" class="md-nav__link">
1613
<span class="md-ellipsis">
1614
1615
bots
1616
1617
</span>
1618
</a>
1619
1620
<nav class="md-nav" aria-label="bots">
1621
<ul class="md-nav__list">
1622
1623
<li class="md-nav__item">
1624
<a href="#botsoracle" class="md-nav__link">
1625
<span class="md-ellipsis">
1626
1627
bots.oracle
1628
1629
</span>
1630
</a>
1631
1632
</li>
1633
1634
<li class="md-nav__item">
1635
<a href="#botsscribe" class="md-nav__link">
1636
<span class="md-ellipsis">
1637
1638
bots.scribe
1639
1640
</span>
1641
</a>
1642
1643
</li>
1644
1645
<li class="md-nav__item">
1646
<a href="#botssentinel" class="md-nav__link">
1647
<span class="md-ellipsis">
1648
1649
bots.sentinel
1650
1651
</span>
1652
</a>
1653
1654
</li>
1655
1656
<li class="md-nav__item">
1657
<a href="#botssteward" class="md-nav__link">
1658
<span class="md-ellipsis">
1659
1660
bots.steward
1661
1662
</span>
1663
</a>
1664
1665
</li>
1666
1667
<li class="md-nav__item">
1668
<a href="#botswarden" class="md-nav__link">
1669
<span class="md-ellipsis">
1670
1671
bots.warden
1672
1673
</span>
1674
</a>
1675
1676
</li>
1677
1678
<li class="md-nav__item">
1679
<a href="#botsherald" class="md-nav__link">
1680
<span class="md-ellipsis">
1681
1682
bots.herald
1683
1684
</span>
1685
</a>
1686
1687
</li>
1688
1689
<li class="md-nav__item">
1690
<a href="#botsscroll" class="md-nav__link">
1691
<span class="md-ellipsis">
1692
1693
bots.scroll
1694
1695
</span>
1696
</a>
1697
1698
</li>
1699
1700
<li class="md-nav__item">
1701
<a href="#botssnitch" class="md-nav__link">
1702
<span class="md-ellipsis">
1703
1704
bots.snitch
1705
1706
</span>
1707
</a>
1708
1709
</li>
1710
1711
</ul>
1712
</nav>
1713
1714
</li>
1715
1716
<li class="md-nav__item">
1717
<a href="#full-skeleton" class="md-nav__link">
1718
<span class="md-ellipsis">
1719
1720
Full skeleton
1721
1722
</span>
1723
</a>
1724
1725
</li>
1726
1727
</ul>
1728
1729
</nav>
1730
</div>
1731
</div>
1732
</div>
1733
1734
1735
1736
<div class="md-content" data-md-component="content">
1737
1738
<article class="md-content__inner md-typeset">
1739
1740
1741
1742
1743
1744
1745
1746
1747
<h1 id="config-schema">Config Schema<a class="headerlink" href="#config-schema" title="Permanent link">&para;</a></h1>
1748
<p>Quick-reference for all <code>scuttlebot.yaml</code> fields. For narrative explanation and examples see <a href="../../getting-started/configuration/">Configuration</a>.</p>
1749
<hr />
1750
<h2 id="top-level">Top-level<a class="headerlink" href="#top-level" title="Permanent link">&para;</a></h2>
1751
<table>
1752
<thead>
1753
<tr>
1754
<th>Field</th>
1755
<th>Type</th>
1756
<th>Default</th>
1757
<th>Env override</th>
1758
</tr>
1759
</thead>
1760
<tbody>
1761
<tr>
1762
<td><code>api_addr</code></td>
1763
<td>string</td>
1764
<td><code>127.0.0.1:8080</code></td>
1765
<td><code>SCUTTLEBOT_API_ADDR</code></td>
1766
</tr>
1767
<tr>
1768
<td><code>mcp_addr</code></td>
1769
<td>string</td>
1770
<td><code>127.0.0.1:8081</code></td>
1771
<td><code>SCUTTLEBOT_MCP_ADDR</code></td>
1772
</tr>
1773
</tbody>
1774
</table>
1775
<hr />
1776
<h2 id="ergo"><code>ergo</code><a class="headerlink" href="#ergo" title="Permanent link">&para;</a></h2>
1777
<table>
1778
<thead>
1779
<tr>
1780
<th>Field</th>
1781
<th>Type</th>
1782
<th>Default</th>
1783
<th>Env override</th>
1784
</tr>
1785
</thead>
1786
<tbody>
1787
<tr>
1788
<td><code>external</code></td>
1789
<td>bool</td>
1790
<td><code>false</code></td>
1791
<td><code>SCUTTLEBOT_ERGO_EXTERNAL</code></td>
1792
</tr>
1793
<tr>
1794
<td><code>binary_path</code></td>
1795
<td>string</td>
1796
<td><code>ergo</code></td>
1797
<td>—</td>
1798
</tr>
1799
<tr>
1800
<td><code>data_dir</code></td>
1801
<td>string</td>
1802
<td><code>./data/ergo</code></td>
1803
<td>—</td>
1804
</tr>
1805
<tr>
1806
<td><code>network_name</code></td>
1807
<td>string</td>
1808
<td><code>scuttlebot</code></td>
1809
<td><code>SCUTTLEBOT_ERGO_NETWORK_NAME</code></td>
1810
</tr>
1811
<tr>
1812
<td><code>server_name</code></td>
1813
<td>string</td>
1814
<td><code>irc.scuttlebot.local</code></td>
1815
<td><code>SCUTTLEBOT_ERGO_SERVER_NAME</code></td>
1816
</tr>
1817
<tr>
1818
<td><code>irc_addr</code></td>
1819
<td>string</td>
1820
<td><code>127.0.0.1:6667</code></td>
1821
<td><code>SCUTTLEBOT_ERGO_IRC_ADDR</code></td>
1822
</tr>
1823
<tr>
1824
<td><code>api_addr</code></td>
1825
<td>string</td>
1826
<td><code>127.0.0.1:8089</code></td>
1827
<td><code>SCUTTLEBOT_ERGO_API_ADDR</code></td>
1828
</tr>
1829
<tr>
1830
<td><code>api_token</code></td>
1831
<td>string</td>
1832
<td><em>(auto-generated)</em></td>
1833
<td><code>SCUTTLEBOT_ERGO_API_TOKEN</code></td>
1834
</tr>
1835
<tr>
1836
<td><code>tls_domain</code></td>
1837
<td>string</td>
1838
<td>—</td>
1839
<td>—</td>
1840
</tr>
1841
<tr>
1842
<td><code>require_sasl</code></td>
1843
<td>bool</td>
1844
<td><code>false</code></td>
1845
<td>—</td>
1846
</tr>
1847
<tr>
1848
<td><code>default_channel_modes</code></td>
1849
<td>string</td>
1850
<td><code>+n</code></td>
1851
<td>—</td>
1852
</tr>
1853
</tbody>
1854
</table>
1855
<h3 id="ergohistory"><code>ergo.history</code><a class="headerlink" href="#ergohistory" title="Permanent link">&para;</a></h3>
1856
<table>
1857
<thead>
1858
<tr>
1859
<th>Field</th>
1860
<th>Type</th>
1861
<th>Default</th>
1862
</tr>
1863
</thead>
1864
<tbody>
1865
<tr>
1866
<td><code>enabled</code></td>
1867
<td>bool</td>
1868
<td><code>false</code></td>
1869
</tr>
1870
<tr>
1871
<td><code>postgres_dsn</code></td>
1872
<td>string</td>
1873
<td>—</td>
1874
</tr>
1875
<tr>
1876
<td><code>mysql.host</code></td>
1877
<td>string</td>
1878
<td>—</td>
1879
</tr>
1880
<tr>
1881
<td><code>mysql.port</code></td>
1882
<td>int</td>
1883
<td>—</td>
1884
</tr>
1885
<tr>
1886
<td><code>mysql.user</code></td>
1887
<td>string</td>
1888
<td>—</td>
1889
</tr>
1890
<tr>
1891
<td><code>mysql.password</code></td>
1892
<td>string</td>
1893
<td>—</td>
1894
</tr>
1895
<tr>
1896
<td><code>mysql.database</code></td>
1897
<td>string</td>
1898
<td>—</td>
1899
</tr>
1900
</tbody>
1901
</table>
1902
<hr />
1903
<h2 id="bridge"><code>bridge</code><a class="headerlink" href="#bridge" title="Permanent link">&para;</a></h2>
1904
<table>
1905
<thead>
1906
<tr>
1907
<th>Field</th>
1908
<th>Type</th>
1909
<th>Default</th>
1910
</tr>
1911
</thead>
1912
<tbody>
1913
<tr>
1914
<td><code>enabled</code></td>
1915
<td>bool</td>
1916
<td><code>true</code></td>
1917
</tr>
1918
<tr>
1919
<td><code>nick</code></td>
1920
<td>string</td>
1921
<td><code>bridge</code></td>
1922
</tr>
1923
<tr>
1924
<td><code>password</code></td>
1925
<td>string</td>
1926
<td><em>(auto-generated)</em></td>
1927
</tr>
1928
<tr>
1929
<td><code>channels</code></td>
1930
<td>[]string</td>
1931
<td><code>["#general"]</code></td>
1932
</tr>
1933
<tr>
1934
<td><code>buffer_size</code></td>
1935
<td>int</td>
1936
<td><code>200</code></td>
1937
</tr>
1938
<tr>
1939
<td><code>web_user_ttl_minutes</code></td>
1940
<td>int</td>
1941
<td><code>5</code></td>
1942
</tr>
1943
</tbody>
1944
</table>
1945
<hr />
1946
<h2 id="tls"><code>tls</code><a class="headerlink" href="#tls" title="Permanent link">&para;</a></h2>
1947
<table>
1948
<thead>
1949
<tr>
1950
<th>Field</th>
1951
<th>Type</th>
1952
<th>Default</th>
1953
</tr>
1954
</thead>
1955
<tbody>
1956
<tr>
1957
<td><code>domain</code></td>
1958
<td>string</td>
1959
<td><em>(empty — TLS disabled)</em></td>
1960
</tr>
1961
<tr>
1962
<td><code>email</code></td>
1963
<td>string</td>
1964
<td>—</td>
1965
</tr>
1966
<tr>
1967
<td><code>cert_dir</code></td>
1968
<td>string</td>
1969
<td><code>{ergo.data_dir}/certs</code></td>
1970
</tr>
1971
<tr>
1972
<td><code>allow_insecure</code></td>
1973
<td>bool</td>
1974
<td><code>true</code></td>
1975
</tr>
1976
</tbody>
1977
</table>
1978
<hr />
1979
<h2 id="llmbackends"><code>llm.backends[]</code><a class="headerlink" href="#llmbackends" title="Permanent link">&para;</a></h2>
1980
<table>
1981
<thead>
1982
<tr>
1983
<th>Field</th>
1984
<th>Type</th>
1985
<th>Default</th>
1986
</tr>
1987
</thead>
1988
<tbody>
1989
<tr>
1990
<td><code>name</code></td>
1991
<td>string</td>
1992
<td>required</td>
1993
</tr>
1994
<tr>
1995
<td><code>backend</code></td>
1996
<td>string</td>
1997
<td>required</td>
1998
</tr>
1999
<tr>
2000
<td><code>api_key</code></td>
2001
<td>string</td>
2002
<td>—</td>
2003
</tr>
2004
<tr>
2005
<td><code>base_url</code></td>
2006
<td>string</td>
2007
<td><em>(provider default)</em></td>
2008
</tr>
2009
<tr>
2010
<td><code>model</code></td>
2011
<td>string</td>
2012
<td><em>(first available)</em></td>
2013
</tr>
2014
<tr>
2015
<td><code>region</code></td>
2016
<td>string</td>
2017
<td><code>us-east-1</code> <em>(Bedrock only)</em></td>
2018
</tr>
2019
<tr>
2020
<td><code>aws_key_id</code></td>
2021
<td>string</td>
2022
<td><em>(from env/role)</em></td>
2023
</tr>
2024
<tr>
2025
<td><code>aws_secret_key</code></td>
2026
<td>string</td>
2027
<td><em>(from env/role)</em></td>
2028
</tr>
2029
<tr>
2030
<td><code>allow</code></td>
2031
<td>[]string</td>
2032
<td>—</td>
2033
</tr>
2034
<tr>
2035
<td><code>block</code></td>
2036
<td>[]string</td>
2037
<td>—</td>
2038
</tr>
2039
<tr>
2040
<td><code>default</code></td>
2041
<td>bool</td>
2042
<td><code>false</code></td>
2043
</tr>
2044
</tbody>
2045
</table>
2046
<p><strong>Supported <code>backend</code> values:</strong> <code>anthropic</code>, <code>gemini</code>, <code>openai</code>, <code>bedrock</code>, <code>ollama</code>, <code>openrouter</code>, <code>groq</code>, <code>together</code>, <code>fireworks</code>, <code>mistral</code>, <code>deepseek</code>, <code>xai</code>, <code>cerebras</code>, <code>litellm</code>, <code>lmstudio</code>, <code>vllm</code>, <code>localai</code></p>
2047
<hr />
2048
<h2 id="bots"><code>bots</code><a class="headerlink" href="#bots" title="Permanent link">&para;</a></h2>
2049
<h3 id="botsoracle"><code>bots.oracle</code><a class="headerlink" href="#botsoracle" title="Permanent link">&para;</a></h3>
2050
<table>
2051
<thead>
2052
<tr>
2053
<th>Field</th>
2054
<th>Type</th>
2055
<th>Default</th>
2056
</tr>
2057
</thead>
2058
<tbody>
2059
<tr>
2060
<td><code>enabled</code></td>
2061
<td>bool</td>
2062
<td><code>false</code></td>
2063
</tr>
2064
<tr>
2065
<td><code>default_backend</code></td>
2066
<td>string</td>
2067
<td><em>(first default backend)</em></td>
2068
</tr>
2069
</tbody>
2070
</table>
2071
<h3 id="botsscribe"><code>bots.scribe</code><a class="headerlink" href="#botsscribe" title="Permanent link">&para;</a></h3>
2072
<table>
2073
<thead>
2074
<tr>
2075
<th>Field</th>
2076
<th>Type</th>
2077
<th>Default</th>
2078
</tr>
2079
</thead>
2080
<tbody>
2081
<tr>
2082
<td><code>enabled</code></td>
2083
<td>bool</td>
2084
<td><code>true</code></td>
2085
</tr>
2086
<tr>
2087
<td><code>log_dir</code></td>
2088
<td>string</td>
2089
<td><code>data/logs/scribe</code></td>
2090
</tr>
2091
</tbody>
2092
</table>
2093
<h3 id="botssentinel"><code>bots.sentinel</code><a class="headerlink" href="#botssentinel" title="Permanent link">&para;</a></h3>
2094
<table>
2095
<thead>
2096
<tr>
2097
<th>Field</th>
2098
<th>Type</th>
2099
<th>Default</th>
2100
</tr>
2101
</thead>
2102
<tbody>
2103
<tr>
2104
<td><code>enabled</code></td>
2105
<td>bool</td>
2106
<td><code>false</code></td>
2107
</tr>
2108
<tr>
2109
<td><code>backend</code></td>
2110
<td>string</td>
2111
<td><em>(default backend)</em></td>
2112
</tr>
2113
<tr>
2114
<td><code>channel</code></td>
2115
<td>string</td>
2116
<td><code>#general</code></td>
2117
</tr>
2118
<tr>
2119
<td><code>mod_channel</code></td>
2120
<td>string</td>
2121
<td><code>#moderation</code></td>
2122
</tr>
2123
<tr>
2124
<td><code>policy</code></td>
2125
<td>string</td>
2126
<td><em>(built-in policy)</em></td>
2127
</tr>
2128
<tr>
2129
<td><code>window_size</code></td>
2130
<td>int</td>
2131
<td><code>20</code></td>
2132
</tr>
2133
<tr>
2134
<td><code>window_age</code></td>
2135
<td>duration</td>
2136
<td><code>5m</code></td>
2137
</tr>
2138
<tr>
2139
<td><code>cooldown_per_nick</code></td>
2140
<td>duration</td>
2141
<td><code>10m</code></td>
2142
</tr>
2143
<tr>
2144
<td><code>min_severity</code></td>
2145
<td>string</td>
2146
<td><code>medium</code></td>
2147
</tr>
2148
</tbody>
2149
</table>
2150
<h3 id="botssteward"><code>bots.steward</code><a class="headerlink" href="#botssteward" title="Permanent link">&para;</a></h3>
2151
<table>
2152
<thead>
2153
<tr>
2154
<th>Field</th>
2155
<th>Type</th>
2156
<th>Default</th>
2157
</tr>
2158
</thead>
2159
<tbody>
2160
<tr>
2161
<td><code>enabled</code></td>
2162
<td>bool</td>
2163
<td><code>false</code></td>
2164
</tr>
2165
<tr>
2166
<td><code>backend</code></td>
2167
<td>string</td>
2168
<td><em>(default backend)</em></td>
2169
</tr>
2170
<tr>
2171
<td><code>channel</code></td>
2172
<td>string</td>
2173
<td><code>#general</code></td>
2174
</tr>
2175
<tr>
2176
<td><code>mod_channel</code></td>
2177
<td>string</td>
2178
<td><code>#moderation</code></td>
2179
</tr>
2180
</tbody>
2181
</table>
2182
<h3 id="botswarden"><code>bots.warden</code><a class="headerlink" href="#botswarden" title="Permanent link">&para;</a></h3>
2183
<table>
2184
<thead>
2185
<tr>
2186
<th>Field</th>
2187
<th>Type</th>
2188
<th>Default</th>
2189
</tr>
2190
</thead>
2191
<tbody>
2192
<tr>
2193
<td><code>enabled</code></td>
2194
<td>bool</td>
2195
<td><code>true</code></td>
2196
</tr>
2197
</tbody>
2198
</table>
2199
<p>Rate limits are fixed at 5 messages/second sustained with a burst of 10. They are not configurable via YAML.</p>
2200
<h3 id="botsherald"><code>bots.herald</code><a class="headerlink" href="#botsherald" title="Permanent link">&para;</a></h3>
2201
<table>
2202
<thead>
2203
<tr>
2204
<th>Field</th>
2205
<th>Type</th>
2206
<th>Default</th>
2207
</tr>
2208
</thead>
2209
<tbody>
2210
<tr>
2211
<td><code>enabled</code></td>
2212
<td>bool</td>
2213
<td><code>false</code></td>
2214
</tr>
2215
<tr>
2216
<td><code>channel</code></td>
2217
<td>string</td>
2218
<td><code>#alerts</code></td>
2219
</tr>
2220
</tbody>
2221
</table>
2222
<h3 id="botsscroll"><code>bots.scroll</code><a class="headerlink" href="#botsscroll" title="Permanent link">&para;</a></h3>
2223
<table>
2224
<thead>
2225
<tr>
2226
<th>Field</th>
2227
<th>Type</th>
2228
<th>Default</th>
2229
</tr>
2230
</thead>
2231
<tbody>
2232
<tr>
2233
<td><code>enabled</code></td>
2234
<td>bool</td>
2235
<td><code>true</code></td>
2236
</tr>
2237
<tr>
2238
<td><code>max_lines</code></td>
2239
<td>int</td>
2240
<td><code>50</code></td>
2241
</tr>
2242
<tr>
2243
<td><code>rate_limit</code></td>
2244
<td>int</td>
2245
<td><code>3</code> <em>(requests/min)</em></td>
2246
</tr>
2247
</tbody>
2248
</table>
2249
<h3 id="botssnitch"><code>bots.snitch</code><a class="headerlink" href="#botssnitch" title="Permanent link">&para;</a></h3>
2250
<table>
2251
<thead>
2252
<tr>
2253
<th>Field</th>
2254
<th>Type</th>
2255
<th>Default</th>
2256
</tr>
2257
</thead>
2258
<tbody>
2259
<tr>
2260
<td><code>enabled</code></td>
2261
<td>bool</td>
2262
<td><code>false</code></td>
2263
</tr>
2264
<tr>
2265
<td><code>alert_channel</code></td>
2266
<td>string</td>
2267
<td><code>#ops</code></td>
2268
</tr>
2269
</tbody>
2270
</table>
2271
<hr />
2272
<h2 id="full-skeleton">Full skeleton<a class="headerlink" href="#full-skeleton" title="Permanent link">&para;</a></h2>
2273
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nt">api_addr</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">127.0.0.1:8080</span>
2274
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="nt">mcp_addr</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">127.0.0.1:8081</span>
2275
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>
2276
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="nt">ergo</span><span class="p">:</span>
2277
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2278
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w"> </span><span class="nt">binary_path</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ergo</span>
2279
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w"> </span><span class="nt">data_dir</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">./data/ergo</span>
2280
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="w"> </span><span class="nt">network_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">scuttlebot</span>
2281
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="w"> </span><span class="nt">server_name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">irc.scuttlebot.local</span>
2282
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="w"> </span><span class="nt">irc_addr</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">127.0.0.1:6667</span>
2283
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="w"> </span><span class="nt">api_addr</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">127.0.0.1:8089</span>
2284
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="w"> </span><span class="nt">tls_domain</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="c1"># set to enable Let&#39;s Encrypt on the IRC port</span>
2285
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a><span class="w"> </span><span class="nt">history</span><span class="p">:</span>
2286
<a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2287
<a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a><span class="w"> </span><span class="nt">postgres_dsn</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span>
2288
<a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a>
2289
<a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a><span class="nt">bridge</span><span class="p">:</span>
2290
<a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2291
<a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a><span class="w"> </span><span class="nt">nick</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bridge</span>
2292
<a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a><span class="w"> </span><span class="nt">channels</span><span class="p">:</span>
2293
<a id="__codelineno-0-21" name="__codelineno-0-21" href="#__codelineno-0-21"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;#general&quot;</span>
2294
<a id="__codelineno-0-22" name="__codelineno-0-22" href="#__codelineno-0-22"></a><span class="w"> </span><span class="nt">buffer_size</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">200</span>
2295
<a id="__codelineno-0-23" name="__codelineno-0-23" href="#__codelineno-0-23"></a><span class="w"> </span><span class="nt">web_user_ttl_minutes</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">5</span>
2296
<a id="__codelineno-0-24" name="__codelineno-0-24" href="#__codelineno-0-24"></a>
2297
<a id="__codelineno-0-25" name="__codelineno-0-25" href="#__codelineno-0-25"></a><span class="nt">tls</span><span class="p">:</span>
2298
<a id="__codelineno-0-26" name="__codelineno-0-26" href="#__codelineno-0-26"></a><span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="c1"># set to enable Let&#39;s Encrypt on the HTTP API</span>
2299
<a id="__codelineno-0-27" name="__codelineno-0-27" href="#__codelineno-0-27"></a><span class="w"> </span><span class="nt">email</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;&quot;</span>
2300
<a id="__codelineno-0-28" name="__codelineno-0-28" href="#__codelineno-0-28"></a><span class="w"> </span><span class="nt">allow_insecure</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2301
<a id="__codelineno-0-29" name="__codelineno-0-29" href="#__codelineno-0-29"></a>
2302
<a id="__codelineno-0-30" name="__codelineno-0-30" href="#__codelineno-0-30"></a><span class="nt">llm</span><span class="p">:</span>
2303
<a id="__codelineno-0-31" name="__codelineno-0-31" href="#__codelineno-0-31"></a><span class="w"> </span><span class="nt">backends</span><span class="p">:</span>
2304
<a id="__codelineno-0-32" name="__codelineno-0-32" href="#__codelineno-0-32"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">anthro</span>
2305
<a id="__codelineno-0-33" name="__codelineno-0-33" href="#__codelineno-0-33"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">anthropic</span>
2306
<a id="__codelineno-0-34" name="__codelineno-0-34" href="#__codelineno-0-34"></a><span class="w"> </span><span class="nt">api_key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${ANTHROPIC_API_KEY}</span>
2307
<a id="__codelineno-0-35" name="__codelineno-0-35" href="#__codelineno-0-35"></a><span class="w"> </span><span class="nt">model</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">claude-haiku-4-5-20251001</span>
2308
<a id="__codelineno-0-36" name="__codelineno-0-36" href="#__codelineno-0-36"></a><span class="w"> </span><span class="nt">default</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2309
<a id="__codelineno-0-37" name="__codelineno-0-37" href="#__codelineno-0-37"></a>
2310
<a id="__codelineno-0-38" name="__codelineno-0-38" href="#__codelineno-0-38"></a><span class="nt">bots</span><span class="p">:</span>
2311
<a id="__codelineno-0-39" name="__codelineno-0-39" href="#__codelineno-0-39"></a><span class="w"> </span><span class="nt">oracle</span><span class="p">:</span>
2312
<a id="__codelineno-0-40" name="__codelineno-0-40" href="#__codelineno-0-40"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2313
<a id="__codelineno-0-41" name="__codelineno-0-41" href="#__codelineno-0-41"></a><span class="w"> </span><span class="nt">scribe</span><span class="p">:</span>
2314
<a id="__codelineno-0-42" name="__codelineno-0-42" href="#__codelineno-0-42"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2315
<a id="__codelineno-0-43" name="__codelineno-0-43" href="#__codelineno-0-43"></a><span class="w"> </span><span class="nt">sentinel</span><span class="p">:</span>
2316
<a id="__codelineno-0-44" name="__codelineno-0-44" href="#__codelineno-0-44"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2317
<a id="__codelineno-0-45" name="__codelineno-0-45" href="#__codelineno-0-45"></a><span class="w"> </span><span class="nt">steward</span><span class="p">:</span>
2318
<a id="__codelineno-0-46" name="__codelineno-0-46" href="#__codelineno-0-46"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2319
<a id="__codelineno-0-47" name="__codelineno-0-47" href="#__codelineno-0-47"></a><span class="w"> </span><span class="nt">warden</span><span class="p">:</span>
2320
<a id="__codelineno-0-48" name="__codelineno-0-48" href="#__codelineno-0-48"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2321
<a id="__codelineno-0-49" name="__codelineno-0-49" href="#__codelineno-0-49"></a><span class="w"> </span><span class="nt">herald</span><span class="p">:</span>
2322
<a id="__codelineno-0-50" name="__codelineno-0-50" href="#__codelineno-0-50"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2323
<a id="__codelineno-0-51" name="__codelineno-0-51" href="#__codelineno-0-51"></a><span class="w"> </span><span class="nt">scroll</span><span class="p">:</span>
2324
<a id="__codelineno-0-52" name="__codelineno-0-52" href="#__codelineno-0-52"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
2325
<a id="__codelineno-0-53" name="__codelineno-0-53" href="#__codelineno-0-53"></a><span class="w"> </span><span class="nt">snitch</span><span class="p">:</span>
2326
<a id="__codelineno-0-54" name="__codelineno-0-54" href="#__codelineno-0-54"></a><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
2327
</code></pre></div>
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
</article>
2342
</div>
2343
2344
2345
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
2346
2347
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2348
</div>
2349
2350
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
2351
2352
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
2353
Back to top
2354
</button>
2355
2356
</main>
2357
2358
<footer class="md-footer">
2359
2360
<div class="md-footer-meta md-typeset">
2361
<div class="md-footer-meta__inner md-grid">
2362
<div class="md-copyright">
2363
2364
<div class="md-copyright__highlight">
2365
Copyright &copy; 2026 CONFLICT LLC
2366
</div>
2367
2368
2369
Made with
2370
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2371
Material for MkDocs
2372
</a>
2373
2374
</div>
2375
2376
2377
<div class="md-social">
2378
2379
2380
2381
2382
2383
2384
2385
2386
<a href="https://github.com/ConflictHQ/scuttlebot" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2387
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2388
</a>
2389
2390
</div>
2391
2392
</div>
2393
</div>
2394
</footer>
2395
2396
</div>
2397
<div class="md-dialog" data-md-component="dialog">
2398
<div class="md-dialog__inner md-typeset"></div>
2399
</div>
2400
2401
2402
2403
2404
2405
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2406
2407
2408
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2409
2410
2411
</body>
2412
</html>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button