ScuttleBot

docs: add mkdocs site, CONFLICT branding, GitHub Pages workflow, scuttlebot.dev CNAME

lmata 2026-03-31 04:22 trunk
Commit 974ed6a02e3599bcf8ac9a2ec2449f62132480a5b737932e07f13d201d10824c
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,30 @@
1
+name: Deploy Docs
2
+
3
+on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "doc.yml"
8
+ workflow_dispatch:
9
+
10
+permissions:
11
+ contents: write
12
+ pages: write
13
+ id-token: write
14
+
15
+jobs:
16
+ deploy:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install dependencies
26
+ run: |
27
+ pip install mkdocs-material pymdown-extensions
28
+
29
+ - name: Build and deploy
30
+ run
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,30 @@
1 name: Deploy Docs
2
3 on:
4 push:
5 branches: [main]
6 paths:
7 - "doc.yml"
8 workflow_dispatch:
9
10 permissions:
11 contents: write
12 pages: write
13 id-token: write
14
15 jobs:
16 deploy:
17 runs-on: ubuntu-latest
18 steps:
19 - uses: actions/checkout@v4
20
21 - uses: actions/setup-python@v5
22 with:
23 python-version: "3.12"
24
25 - name: Install dependencies
26 run: |
27 pip install mkdocs-material pymdown-extensions
28
29 - name: Build and deploy
30 run
+1
--- a/docs/CNAME
+++ b/docs/CNAME
@@ -0,0 +1 @@
1
+scuttlebot.dev
--- a/docs/CNAME
+++ b/docs/CNAME
@@ -0,0 +1 @@
 
--- a/docs/CNAME
+++ b/docs/CNAME
@@ -0,0 +1 @@
1 scuttlebot.dev
--- a/docs/architecture/overview.md
+++ b/docs/architecture/overview.md
@@ -0,0 +1,4 @@
1
+# Architecture Overview
2
+
3
+!!! note
4
+ This page is a work in progress. See [bootstrap.md](https://github.com/ConflictHQ/scuttlebot/blob/main/bootstrap.md) for the canonical architecture reference.
--- a/docs/architecture/overview.md
+++ b/docs/architecture/overview.md
@@ -0,0 +1,4 @@
 
 
 
 
--- a/docs/architecture/overview.md
+++ b/docs/architecture/overview.md
@@ -0,0 +1,4 @@
1 # Architecture Overview
2
3 !!! note
4 This page is a work in progress. See [bootstrap.md](https://github.com/ConflictHQ/scuttlebot/blob/main/bootstrap.md) for the canonical architecture reference.
--- a/docs/architecture/persistence.md
+++ b/docs/architecture/persistence.md
@@ -0,0 +1,4 @@
1
+# Persistence
2
+
3
+!!! note
4
+ This page is a work in progress.
--- a/docs/architecture/persistence.md
+++ b/docs/architecture/persistence.md
@@ -0,0 +1,4 @@
 
 
 
 
--- a/docs/architecture/persistence.md
+++ b/docs/architecture/persistence.md
@@ -0,0 +1,4 @@
1 # Persistence
2
3 !!! note
4 This page is a work in progress.
--- a/docs/architecture/why-irc.md
+++ b/docs/architecture/why-irc.md
@@ -0,0 +1,41 @@
1
+# Why IRC?
2
+
3
+## The short answer
4
+
5
+IRC is a coordination protocol. NATS and RabbitMQ are message brokers. The difference matters.
6
+
7
+Agent coordination needs: channels, topics, presence, identity, ops hierarchy, DMs, and bots. IRC has all of these natively. You don't bolt them on — they're part of the protocol.
8
+
9
+---
10
+
11
+## Human observable by default
12
+
13
+This is the single most important property.
14
+
15
+Open any IRC client, join a channel, and you see exactly what agents are doing. No dashboards. No special tooling. No translation layer. Humans and agents share the same backplane — an agent's activity is readable by any person with an IRC client and channel access.
16
+
17
+When something goes wrong, you join the channel. That's it.
18
+
19
+---
20
+
21
+## Coordination primitives map directly
22
+
23
+| Coordination concept | IRC primitive |
24
+|---------------------|--------------|
25
+| Team namespace | Channel (`#project.myapp.tasks`) |
26
+| Shared state header | Topic |
27
+| Who is active | Presence (`NAMES`, `WHOIS`) |
28
+| Authority / trust | Ops hierarchy (`+o`, `+v`) |
29
+| Point-to-point delegation | DM |
30
+| Services (logging, alerting, summarization) | Bots |
31
+| Fleet-wide announcement | `#fleet` channel |
32
+
33
+Nothing is invented. Everything is already in the protocol.
34
+
35
+---
36
+
37
+## Latency tolerant
38
+
39
+IRC is fire-and-forget, designed for unreliable networks. Agents can reconnect, miss messages, and catch up via history. For agent coordination — where agents may be slow, retrying, or temporarily offline — this is a feature,The swappability principle
40
+
41
+scuttlebot's JSON message envelope and SDK abstraction are intentionally transport-agnostic. IRC is the default and the right choice for the target use case (private networks, 100s–1000s of agents, human observability required). The architecture does not preclude future transport backends.
--- a/docs/architecture/why-irc.md
+++ b/docs/architecture/why-irc.md
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/docs/architecture/why-irc.md
+++ b/docs/architecture/why-irc.md
@@ -0,0 +1,41 @@
1 # Why IRC?
2
3 ## The short answer
4
5 IRC is a coordination protocol. NATS and RabbitMQ are message brokers. The difference matters.
6
7 Agent coordination needs: channels, topics, presence, identity, ops hierarchy, DMs, and bots. IRC has all of these natively. You don't bolt them on — they're part of the protocol.
8
9 ---
10
11 ## Human observable by default
12
13 This is the single most important property.
14
15 Open any IRC client, join a channel, and you see exactly what agents are doing. No dashboards. No special tooling. No translation layer. Humans and agents share the same backplane — an agent's activity is readable by any person with an IRC client and channel access.
16
17 When something goes wrong, you join the channel. That's it.
18
19 ---
20
21 ## Coordination primitives map directly
22
23 | Coordination concept | IRC primitive |
24 |---------------------|--------------|
25 | Team namespace | Channel (`#project.myapp.tasks`) |
26 | Shared state header | Topic |
27 | Who is active | Presence (`NAMES`, `WHOIS`) |
28 | Authority / trust | Ops hierarchy (`+o`, `+v`) |
29 | Point-to-point delegation | DM |
30 | Services (logging, alerting, summarization) | Bots |
31 | Fleet-wide announcement | `#fleet` channel |
32
33 Nothing is invented. Everything is already in the protocol.
34
35 ---
36
37 ## Latency tolerant
38
39 IRC is fire-and-forget, designed for unreliable networks. Agents can reconnect, miss messages, and catch up via history. For agent coordination — where agents may be slow, retrying, or temporarily offline — this is a feature,The swappability principle
40
41 scuttlebot's JSON message envelope and SDK abstraction are intentionally transport-agnostic. IRC is the default and the right choice for the target use case (private networks, 100s–1000s of agents, human observability required). The architecture does not preclude future transport backends.
--- a/docs/architecture/wire-format.md
+++ b/docs/architecture/wire-format.md
@@ -0,0 +1,4 @@
1
+# Wire Format
2
+
3
+!!! note
4
+ This page is a work in progress.
--- a/docs/architecture/wire-format.md
+++ b/docs/architecture/wire-format.md
@@ -0,0 +1,4 @@
 
 
 
 
--- a/docs/architecture/wire-format.md
+++ b/docs/architecture/wire-format.md
@@ -0,0 +1,4 @@
1 # Wire Format
2
3 !!! note
4 This page is a work in progress.
--- a/docs/assets/css/custom.css
+++ b/docs/assets/css/custom.css
@@ -0,0 +1,156 @@
1
+/* CONFLICT brand overrides for MkDocs Material */
2
+
3
+:root {
4
+ --conflict-red: #DB394C;
5
+ --conflict-dark-red: #9C2633;
6
+ --conflict-pink: #FF1D5D;
7
+ --conflict-black: #1D1D1D;
8
+ --conflict-black-2: #282828;
9
+ --conflict-gray: #A8A8A7;
10
+ --conflict-light: #ECEFF5;
11
+}
12
+
13
+/* Dark scheme (default) */
14
+[data-md-color-scheme="slate"] {
15
+ --md-primary-fg-color: var(--conflict-black);
16
+ --md-primary-bg-color: #fff;
17
+ --md-accent-fg-color: var(--conflict-red);
18
+ --md-default-bg-color: var(--conflict-black);
19
+ --md-typeset-a-color: var(--conflict-red);
20
+}
21
+
22
+[data-md-color-scheme="slate"] .md-header {
23
+ background-color: var(--conflict-black);
24
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
25
+}
26
+
27
+[data-md-color-scheme="slate"] .md-tabs {
28
+ background-color: var(--conflict-black-2);
29
+}
30
+
31
+/* Light scheme */
32
+[data-md-color-scheme="default"] {
33
+ --md-primary-fg-color: #fff;
34
+ --md-primary-bg-color: var(--conflict-black);
35
+ --md-accent-fg-color: var(--conflict-red);
36
+ --md-typeset-a-color: var(--conflict-red);
37
+}
38
+
39
+[data-md-color-scheme="default"] .md-header {
40
+ background-color: #fff;
41
+ border-bottom: 1px solid var(--conflict-light);
42
+ color: var(--conflict-black);
43
+}
44
+
45
+[data-md-color-scheme="default"] .md-header .md-header__topic,
46
+[data-md-color-scheme="default"] .md-header .md-header__title,
47
+[data-md-color-scheme="default"] .md-header .md-ellipsis {
48
+ color: var(--conflict-black);
49
+}
50
+
51
+[data-md-color-scheme="default"] .md-tabs {
52
+ background-color: #fafafa;
53
+ border-bottom: 1px solid var(--conflict-light);
54
+}
55
+
56
+[data-md-color-scheme="default"] .md-tabs__link {
57
+ color: var(--conflict-black-2);
58
+}
59
+
60
+[data-md-color-scheme="default"] .md-tabs__link--active,
61
+[data-md-color-scheme="default"] .md-tabs__link:hover {
62
+ color: var(--conflict-red);
63
+}
64
+
65
+[data-md-color-scheme="default"] .md-search__input {
66
+ background-color: var(--conflict-light);
67
+}
68
+
69
+/* Links */
70
+.md-typeset a:hover {
71
+ color: var(--conflict-pink);
72
+}
73
+
74
+/* Nav active items */
75
+.md-nav__link--active,
76
+.md-nav__link:hover {
77
+ color: var(--conflict-red) !important;
78
+}
79
+
80
+/* Code blocks */
81
+[data-md-color-scheme="slate"] .md-typeset code {
82
+ background-color: rgba(255, 255, 255, 0.06);
83
+}
84
+
85
+[data-md-color-scheme="slate"] .highlight pre {
86
+ background-color: #141414 !important;
87
+ border: 1px solid rgba(255, 255, 255, 0.06);
88
+ border-radius: 8px;
89
+}
90
+
91
+[data-md-color-scheme="default"] .highlight pre {
92
+ border: 1px solid var(--conflict-light);
93
+ border-radius: 8px;
94
+}
95
+
96
+/* Tables */
97
+.md-typeset table:not([class]) th {
98
+ background-color: var(--conflict-red);
99
+ color: #fff;
100
+}
101
+
102
+[data-md-color-scheme="default"] .md-typeset table:not([class]) th {
103
+ background-color: var(--conflict-red);
104
+ color: #fff;
105
+}
106
+
107
+/* Buttons / admonitions */
108
+.md-typeset .admonition,
109
+.md-typeset details {
110
+ border-radius: 8px;
111
+}
112
+
113
+/* Footer */
114
+.md-footer {
115
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
116
+}
117
+
118
+[data-md-color-scheme="slate"] .md-footer {
119
+ background-color: var(--conflict-black);
120
+}
121
+
122
+/* Header logo sizing */
123
+.md-header__button.md-logo img,
124
+.md-header__button.md-logo svg {
125
+ height: 1.4rem;
126
+ width: auto;
127
+}
128
+
129
+/* Scrollbar styling for dark mode */
130
+[data-md-color-scheme="slate"] ::-webkit-scrollbar {
131
+ width: 8px;
132
+}
133
+
134
+[data-md-color-scheme="slate"] ::-webkit-scrollbar-track {
135
+ background: var(--conflict-black);
136
+}
137
+
138
+[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb {
139
+ background: var(--conflict-black-2);
140
+ border-radius: 4px;
141
+}
142
+
143
+[data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb:hover {
144
+ background: #3a3a3a;
145
+}
146
+
147
+/* Content max width for readability */
148
+.md-grid {
149
+ max-width: 1220px;
150
+}
151
+
152
+/* Hero-style heading on index */
153
+.md-typeset h1 {
154
+ font-weight: 700;
155
+ letter-spacing: -0.02em;
156
+}
--- a/docs/assets/css/custom.css
+++ b/docs/assets/css/custom.css
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/docs/assets/css/custom.css
+++ b/docs/assets/css/custom.css
@@ -0,0 +1,156 @@
1 /* CONFLICT brand overrides for MkDocs Material */
2
3 :root {
4 --conflict-red: #DB394C;
5 --conflict-dark-red: #9C2633;
6 --conflict-pink: #FF1D5D;
7 --conflict-black: #1D1D1D;
8 --conflict-black-2: #282828;
9 --conflict-gray: #A8A8A7;
10 --conflict-light: #ECEFF5;
11 }
12
13 /* Dark scheme (default) */
14 [data-md-color-scheme="slate"] {
15 --md-primary-fg-color: var(--conflict-black);
16 --md-primary-bg-color: #fff;
17 --md-accent-fg-color: var(--conflict-red);
18 --md-default-bg-color: var(--conflict-black);
19 --md-typeset-a-color: var(--conflict-red);
20 }
21
22 [data-md-color-scheme="slate"] .md-header {
23 background-color: var(--conflict-black);
24 border-bottom: 1px solid rgba(255, 255, 255, 0.08);
25 }
26
27 [data-md-color-scheme="slate"] .md-tabs {
28 background-color: var(--conflict-black-2);
29 }
30
31 /* Light scheme */
32 [data-md-color-scheme="default"] {
33 --md-primary-fg-color: #fff;
34 --md-primary-bg-color: var(--conflict-black);
35 --md-accent-fg-color: var(--conflict-red);
36 --md-typeset-a-color: var(--conflict-red);
37 }
38
39 [data-md-color-scheme="default"] .md-header {
40 background-color: #fff;
41 border-bottom: 1px solid var(--conflict-light);
42 color: var(--conflict-black);
43 }
44
45 [data-md-color-scheme="default"] .md-header .md-header__topic,
46 [data-md-color-scheme="default"] .md-header .md-header__title,
47 [data-md-color-scheme="default"] .md-header .md-ellipsis {
48 color: var(--conflict-black);
49 }
50
51 [data-md-color-scheme="default"] .md-tabs {
52 background-color: #fafafa;
53 border-bottom: 1px solid var(--conflict-light);
54 }
55
56 [data-md-color-scheme="default"] .md-tabs__link {
57 color: var(--conflict-black-2);
58 }
59
60 [data-md-color-scheme="default"] .md-tabs__link--active,
61 [data-md-color-scheme="default"] .md-tabs__link:hover {
62 color: var(--conflict-red);
63 }
64
65 [data-md-color-scheme="default"] .md-search__input {
66 background-color: var(--conflict-light);
67 }
68
69 /* Links */
70 .md-typeset a:hover {
71 color: var(--conflict-pink);
72 }
73
74 /* Nav active items */
75 .md-nav__link--active,
76 .md-nav__link:hover {
77 color: var(--conflict-red) !important;
78 }
79
80 /* Code blocks */
81 [data-md-color-scheme="slate"] .md-typeset code {
82 background-color: rgba(255, 255, 255, 0.06);
83 }
84
85 [data-md-color-scheme="slate"] .highlight pre {
86 background-color: #141414 !important;
87 border: 1px solid rgba(255, 255, 255, 0.06);
88 border-radius: 8px;
89 }
90
91 [data-md-color-scheme="default"] .highlight pre {
92 border: 1px solid var(--conflict-light);
93 border-radius: 8px;
94 }
95
96 /* Tables */
97 .md-typeset table:not([class]) th {
98 background-color: var(--conflict-red);
99 color: #fff;
100 }
101
102 [data-md-color-scheme="default"] .md-typeset table:not([class]) th {
103 background-color: var(--conflict-red);
104 color: #fff;
105 }
106
107 /* Buttons / admonitions */
108 .md-typeset .admonition,
109 .md-typeset details {
110 border-radius: 8px;
111 }
112
113 /* Footer */
114 .md-footer {
115 border-top: 1px solid rgba(255, 255, 255, 0.08);
116 }
117
118 [data-md-color-scheme="slate"] .md-footer {
119 background-color: var(--conflict-black);
120 }
121
122 /* Header logo sizing */
123 .md-header__button.md-logo img,
124 .md-header__button.md-logo svg {
125 height: 1.4rem;
126 width: auto;
127 }
128
129 /* Scrollbar styling for dark mode */
130 [data-md-color-scheme="slate"] ::-webkit-scrollbar {
131 width: 8px;
132 }
133
134 [data-md-color-scheme="slate"] ::-webkit-scrollbar-track {
135 background: var(--conflict-black);
136 }
137
138 [data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb {
139 background: var(--conflict-black-2);
140 border-radius: 4px;
141 }
142
143 [data-md-color-scheme="slate"] ::-webkit-scrollbar-thumb:hover {
144 background: #3a3a3a;
145 }
146
147 /* Content max width for readability */
148 .md-grid {
149 max-width: 1220px;
150 }
151
152 /* Hero-style heading on index */
153 .md-typeset h1 {
154 font-weight: 700;
155 letter-spacing: -0.02em;
156 }
--- a/docs/assets/images/conflict-logo-black.svg
+++ b/docs/assets/images/conflict-logo-black.svg
@@ -0,0 +1,12 @@
1
+<svg width="140" height="36" viewBox="0 0 140 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+<path d="M6.7855 3.72976C4.95325 3.5678 3.13434 4.1772 1.71595 5.42806C1.14272 6.02274 0.693822 6.74054 0.399025 7.53429C0.104228 8.32803 -0.0298519 9.17959 0.00562531 10.0328V25.7089C-0.0303331 26.5699 0.10642 27.4293 0.406668 28.2291C0.706915 29.029 1.16373 29.7508 1.74643 30.3463C3.19341 31.5609 5.01199 32.1548 6.84664 32.0119C8.67781 32.1635 10.4933 31.5554 11.9163 30.3137C12.4895 29.719 12.9383 29.0011 13.2331 28.2074C13.5279 27.4137 13.662 26.5621 13.6265 25.7089V22.737H9.53418V25.7089C9.55225 26.0222 9.50704 26.3361 9.40164 26.6291C9.29625 26.9221 9.13312 27.1874 8.92334 27.4071C8.32468 27.8771 7.58641 28.0977 6.84664 28.0276C6.08654 28.1142 5.32368 27.8927 4.70881 27.4071C4.49565 27.1901 4.33027 26.9252 4.22463 26.6315C4.11899 26.3378 4.0758 26.0227 4.09806 25.7089V10.0328C4.07604 9.72186 4.11635 9.40956 4.21643 9.11668C4.3165 8.82379 4.47404 8.55711 4.67833 8.3346C5.28511 7.85685 6.03555 7.63584 6.7855 7.71408C7.54561 7.62753 8.30847 7.84895 8.92334 8.3346C9.13312 8.55424 9.29625 8.81956 9.40164 9.11259C9.50704 9.40562 9.55225 9.71944 9.53418 10.0328V14.5724H13.6265V10.0328C13.6602 9.17393 13.5193 8.31752 13.2135 7.52253C12.9077 6.72754 12.4442 6.01298 11.8552 5.42806C10.4321 4.18636 8.61667 3.57816 6.7855 3.72976Z" fill="#282828"/>
3
+<path d="M54.2915 20.8757L47.4811 4.35059H43.7858V31.457H47.8781V14.8992L54.658 31.457H58.3839V4.35059H54.2915V20.8757Z" fill="#282828"/>
4
+<path d="M63.2212 31.457H67.3135V19.7H73.3605V15.7157H67.3135V8.30225H74.8264V4.35059H63.2212V31.457Z" fill="#282828"/>
5
+<path d="M83.7562 4.35059H79.6638V31.457H90.475V27.4727H83.7562V4.35059Z" fill="#282828"/>
6
+<path d="M95.3127 8.30225H97.1451V27.4727H95.3127V31.457H103.07V27.4727H101.238V8.30225H103.07V4.35059H95.3127V8.30225Z" fill="#282828"/>
7
+<path d="M114.664 3.7298C112.842 3.57303 111.034 4.18231 109.625 5.42809C109.047 6.01892 108.595 6.73614 108.3 7.53084C108.005 8.32553 107.874 9.17891 107.915 10.0328V25.7089C107.879 26.57 108.016 27.4293 108.316 28.2292C108.616 29.029 109.073 29.7509 109.656 30.3464C111.1 31.5667 112.921 32.1613 114.756 32.012C116.587 32.1636 118.403 31.5555 119.826 30.3138C120.399 29.7191 120.848 29.0012 121.142 28.2074C121.437 27.4137 121.571 26.5621 121.536 25.7089V22.737H117.444V25.7089C117.462 26.0223 117.416 26.3361 117.311 26.6291C117.206 26.9222 117.042 27.1875 116.833 27.4071C116.234 27.8771 115.496 28.0977 114.756 28.0276C113.996 28.1142 113.233 27.8928 112.618 27.4071C112.405 27.1902 112.24 26.9252 112.134 26.6315C112.028 26.3378 111.985 26.0227 112.007 25.7089V10.0328C111.985 9.7219 112.026 9.4096 112.126 9.11671C112.226 8.82382 112.383 8.55715 112.588 8.33464C113.186 7.86466 113.925 7.64406 114.664 7.71412C115.435 7.61912 116.21 7.84096 116.833 8.33464C117.042 8.55428 117.206 8.8196 117.311 9.11263C117.416 9.40565 117.462 9.71948 117.444 10.0328V14.5724H121.536V10.0328C121.57 9.17397 121.429 8.31755 121.123 7.52256C120.817 6.72757 120.354 6.01302 119.765 5.42809C118.332 4.18135 116.505 3.57303 114.664 3.7298Z" fill="#282828"/>
8
+<path d="M126.379 4.35059V8.30225H131.143V31.457H135.236V8.30225H140V4.35059H126.379Z" fill="#282828"/>
9
+<path d="M18.4236 36H25.9961V32.3203H22.0123V3.67966H26.0619V0H18.4236V36Z" fill="#DB394C"/>
10
+<path d="M31.2968 0V3.67966H35.3136V32.3203H31.2639V36H38.9023V0H31.2968Z" fill="#DB394C"/>
11
+<path d="M30.4737 10.3562H26.8521V25.3783H30.4737V10.3562Z" fill="#DB394C"/>
12
+</svg>
--- a/docs/assets/images/conflict-logo-black.svg
+++ b/docs/assets/images/conflict-logo-black.svg
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
--- a/docs/assets/images/conflict-logo-black.svg
+++ b/docs/assets/images/conflict-logo-black.svg
@@ -0,0 +1,12 @@
1 <svg width="140" height="36" viewBox="0 0 140 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2 <path d="M6.7855 3.72976C4.95325 3.5678 3.13434 4.1772 1.71595 5.42806C1.14272 6.02274 0.693822 6.74054 0.399025 7.53429C0.104228 8.32803 -0.0298519 9.17959 0.00562531 10.0328V25.7089C-0.0303331 26.5699 0.10642 27.4293 0.406668 28.2291C0.706915 29.029 1.16373 29.7508 1.74643 30.3463C3.19341 31.5609 5.01199 32.1548 6.84664 32.0119C8.67781 32.1635 10.4933 31.5554 11.9163 30.3137C12.4895 29.719 12.9383 29.0011 13.2331 28.2074C13.5279 27.4137 13.662 26.5621 13.6265 25.7089V22.737H9.53418V25.7089C9.55225 26.0222 9.50704 26.3361 9.40164 26.6291C9.29625 26.9221 9.13312 27.1874 8.92334 27.4071C8.32468 27.8771 7.58641 28.0977 6.84664 28.0276C6.08654 28.1142 5.32368 27.8927 4.70881 27.4071C4.49565 27.1901 4.33027 26.9252 4.22463 26.6315C4.11899 26.3378 4.0758 26.0227 4.09806 25.7089V10.0328C4.07604 9.72186 4.11635 9.40956 4.21643 9.11668C4.3165 8.82379 4.47404 8.55711 4.67833 8.3346C5.28511 7.85685 6.03555 7.63584 6.7855 7.71408C7.54561 7.62753 8.30847 7.84895 8.92334 8.3346C9.13312 8.55424 9.29625 8.81956 9.40164 9.11259C9.50704 9.40562 9.55225 9.71944 9.53418 10.0328V14.5724H13.6265V10.0328C13.6602 9.17393 13.5193 8.31752 13.2135 7.52253C12.9077 6.72754 12.4442 6.01298 11.8552 5.42806C10.4321 4.18636 8.61667 3.57816 6.7855 3.72976Z" fill="#282828"/>
3 <path d="M54.2915 20.8757L47.4811 4.35059H43.7858V31.457H47.8781V14.8992L54.658 31.457H58.3839V4.35059H54.2915V20.8757Z" fill="#282828"/>
4 <path d="M63.2212 31.457H67.3135V19.7H73.3605V15.7157H67.3135V8.30225H74.8264V4.35059H63.2212V31.457Z" fill="#282828"/>
5 <path d="M83.7562 4.35059H79.6638V31.457H90.475V27.4727H83.7562V4.35059Z" fill="#282828"/>
6 <path d="M95.3127 8.30225H97.1451V27.4727H95.3127V31.457H103.07V27.4727H101.238V8.30225H103.07V4.35059H95.3127V8.30225Z" fill="#282828"/>
7 <path d="M114.664 3.7298C112.842 3.57303 111.034 4.18231 109.625 5.42809C109.047 6.01892 108.595 6.73614 108.3 7.53084C108.005 8.32553 107.874 9.17891 107.915 10.0328V25.7089C107.879 26.57 108.016 27.4293 108.316 28.2292C108.616 29.029 109.073 29.7509 109.656 30.3464C111.1 31.5667 112.921 32.1613 114.756 32.012C116.587 32.1636 118.403 31.5555 119.826 30.3138C120.399 29.7191 120.848 29.0012 121.142 28.2074C121.437 27.4137 121.571 26.5621 121.536 25.7089V22.737H117.444V25.7089C117.462 26.0223 117.416 26.3361 117.311 26.6291C117.206 26.9222 117.042 27.1875 116.833 27.4071C116.234 27.8771 115.496 28.0977 114.756 28.0276C113.996 28.1142 113.233 27.8928 112.618 27.4071C112.405 27.1902 112.24 26.9252 112.134 26.6315C112.028 26.3378 111.985 26.0227 112.007 25.7089V10.0328C111.985 9.7219 112.026 9.4096 112.126 9.11671C112.226 8.82382 112.383 8.55715 112.588 8.33464C113.186 7.86466 113.925 7.64406 114.664 7.71412C115.435 7.61912 116.21 7.84096 116.833 8.33464C117.042 8.55428 117.206 8.8196 117.311 9.11263C117.416 9.40565 117.462 9.71948 117.444 10.0328V14.5724H121.536V10.0328C121.57 9.17397 121.429 8.31755 121.123 7.52256C120.817 6.72757 120.354 6.01302 119.765 5.42809C118.332 4.18135 116.505 3.57303 114.664 3.7298Z" fill="#282828"/>
8 <path d="M126.379 4.35059V8.30225H131.143V31.457H135.236V8.30225H140V4.35059H126.379Z" fill="#282828"/>
9 <path d="M18.4236 36H25.9961V32.3203H22.0123V3.67966H26.0619V0H18.4236V36Z" fill="#DB394C"/>
10 <path d="M31.2968 0V3.67966H35.3136V32.3203H31.2639V36H38.9023V0H31.2968Z" fill="#DB394C"/>
11 <path d="M30.4737 10.3562H26.8521V25.3783H30.4737V10.3562Z" fill="#DB394C"/>
12 </svg>
--- a/docs/assets/images/conflict-logo.svg
+++ b/docs/assets/images/conflict-logo.svg
@@ -0,0 +1,12 @@
1
+<svg width="141" height="37" viewBox="0 0 141 37" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+<path d="M7.76011 3.9038C5.92786 3.74184 4.10895 4.35124 2.69056 5.6021C2.11733 6.19678 1.66843 6.91459 1.37363 7.70833C1.07884 8.50207 0.944757 9.35363 0.980235 10.2068V25.8829C0.944276 26.744 1.08103 27.6033 1.38128 28.4032C1.68152 29.203 2.13834 29.9249 2.72104 30.5204C4.16802 31.7349 5.9866 32.3289 7.82125 32.186C9.65242 32.3376 11.4679 31.7295 12.8909 30.4878C13.4641 29.8931 13.9129 29.1752 14.2077 28.3814C14.5025 27.5877 14.6366 26.7361 14.6011 25.8829V22.911H10.5088V25.8829C10.5269 26.1963 10.4816 26.5101 10.3763 26.8031C10.2709 27.0962 10.1077 27.3615 9.89795 27.5811C9.29929 28.0511 8.56102 28.2717 7.82125 28.2016C7.06115 28.2882 6.29829 28.0668 5.68342 27.5811C5.47026 27.3642 5.30488 27.0992 5.19924 26.8055C5.0936 26.5118 5.05041 26.1967 5.07267 25.8829V10.2068C5.05065 9.89591 5.09096 9.58361 5.19104 9.29072C5.29111 8.99783 5.44865 8.73115 5.65294 8.50864C6.25972 8.0309 7.01016 7.80989 7.76011 7.88813C8.52022 7.80157 9.28308 8.023 9.89795 8.50864C10.1077 8.72828 10.2709 8.99361 10.3763 9.28663C10.4816 9.57966 10.5269 9.89349 10.5088 10.2068V14.7464H14.6011V10.2068C14.6348 9.34798 14.4939 8.49156 14.1881 7.69657C13.8823 6.90158 13.4188 6.18702 12.8298 5.6021C11.4067 4.3604 9.59128 3.7522 7.76011 3.9038Z" fill="white"/>
3
+<path d="M55.2655 21.0496L48.4551 4.52451H44.7598V31.631H48.8521V15.0732L55.632 31.631H59.3579V4.52451H55.2655V21.0496Z" fill="white"/>
4
+<path d="M64.1953 31.631H68.2877V19.8739H74.3346V15.8896H68.2877V8.47617H75.8005V4.52451H64.1953V31.631Z" fill="white"/>
5
+<path d="M84.731 4.52451H80.6387V31.631H91.4498V27.6466H84.731V4.52451Z" fill="white"/>
6
+<path d="M96.2871 8.47617H98.1195V27.6466H96.2871V31.631H104.044V27.6466H102.212V8.47617H104.044V4.52451H96.2871V8.47617Z" fill="white"/>
7
+<path d="M115.64 3.90374C113.817 3.74697 112.01 4.35626 110.601 5.60204C110.022 6.19287 109.57 6.91008 109.275 7.70478C108.98 8.49948 108.849 9.35285 108.89 10.2068V25.8829C108.854 26.7439 108.991 27.6032 109.291 28.4031C109.592 29.203 110.048 29.9248 110.631 30.5203C112.075 31.7406 113.896 32.3352 115.731 32.1859C117.562 32.3375 119.378 31.7294 120.801 30.4877C121.374 29.893 121.823 29.1751 122.118 28.3814C122.412 27.5876 122.547 26.7361 122.511 25.8829V22.9109H118.419V25.8829C118.437 26.1962 118.392 26.51 118.286 26.8031C118.181 27.0961 118.018 27.3614 117.808 27.5811C117.209 28.051 116.471 28.2716 115.731 28.2016C114.971 28.2881 114.208 28.0667 113.593 27.5811C113.38 27.3641 113.215 27.0992 113.109 26.8055C113.004 26.5118 112.96 26.1966 112.983 25.8829V10.2068C112.961 9.89584 113.001 9.58355 113.101 9.29066C113.201 8.99777 113.359 8.73109 113.563 8.50858C114.162 8.0386 114.9 7.818 115.64 7.88806C116.41 7.79306 117.185 8.01491 117.808 8.50858C118.018 8.72822 118.181 8.99354 118.286 9.28657C118.392 9.5796 118.437 9.89342 118.419 10.2068V14.7463H122.511V10.2068C122.545 9.34791 122.404 8.4915 122.098 7.69651C121.792 6.90152 121.329 6.18696 120.74 5.60204C119.307 4.35529 117.481 3.74697 115.64 3.90374Z" fill="white"/>
8
+<path d="M127.354 4.52451V8.47617H132.118V31.631H136.21V8.47617H140.974V4.52451H127.354Z" fill="white"/>
9
+<path d="M19.3984 36.1741H26.9709V32.4944H22.9871V3.85375H27.0368V0.174088H19.3984V36.1741Z" fill="#DB394C"/>
10
+<path d="M32.2717 0.174088V3.85375H36.2884V32.4944H32.2388V36.1741H39.8771V0.174088H32.2717Z" fill="#DB394C"/>
11
+<path d="M31.4486 10.5303H27.827V25.5524H31.4486V10.5303Z" fill="#DB394C"/>
12
+</svg>
--- a/docs/assets/images/conflict-logo.svg
+++ b/docs/assets/images/conflict-logo.svg
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
--- a/docs/assets/images/conflict-logo.svg
+++ b/docs/assets/images/conflict-logo.svg
@@ -0,0 +1,12 @@
1 <svg width="141" height="37" viewBox="0 0 141 37" fill="none" xmlns="http://www.w3.org/2000/svg">
2 <path d="M7.76011 3.9038C5.92786 3.74184 4.10895 4.35124 2.69056 5.6021C2.11733 6.19678 1.66843 6.91459 1.37363 7.70833C1.07884 8.50207 0.944757 9.35363 0.980235 10.2068V25.8829C0.944276 26.744 1.08103 27.6033 1.38128 28.4032C1.68152 29.203 2.13834 29.9249 2.72104 30.5204C4.16802 31.7349 5.9866 32.3289 7.82125 32.186C9.65242 32.3376 11.4679 31.7295 12.8909 30.4878C13.4641 29.8931 13.9129 29.1752 14.2077 28.3814C14.5025 27.5877 14.6366 26.7361 14.6011 25.8829V22.911H10.5088V25.8829C10.5269 26.1963 10.4816 26.5101 10.3763 26.8031C10.2709 27.0962 10.1077 27.3615 9.89795 27.5811C9.29929 28.0511 8.56102 28.2717 7.82125 28.2016C7.06115 28.2882 6.29829 28.0668 5.68342 27.5811C5.47026 27.3642 5.30488 27.0992 5.19924 26.8055C5.0936 26.5118 5.05041 26.1967 5.07267 25.8829V10.2068C5.05065 9.89591 5.09096 9.58361 5.19104 9.29072C5.29111 8.99783 5.44865 8.73115 5.65294 8.50864C6.25972 8.0309 7.01016 7.80989 7.76011 7.88813C8.52022 7.80157 9.28308 8.023 9.89795 8.50864C10.1077 8.72828 10.2709 8.99361 10.3763 9.28663C10.4816 9.57966 10.5269 9.89349 10.5088 10.2068V14.7464H14.6011V10.2068C14.6348 9.34798 14.4939 8.49156 14.1881 7.69657C13.8823 6.90158 13.4188 6.18702 12.8298 5.6021C11.4067 4.3604 9.59128 3.7522 7.76011 3.9038Z" fill="white"/>
3 <path d="M55.2655 21.0496L48.4551 4.52451H44.7598V31.631H48.8521V15.0732L55.632 31.631H59.3579V4.52451H55.2655V21.0496Z" fill="white"/>
4 <path d="M64.1953 31.631H68.2877V19.8739H74.3346V15.8896H68.2877V8.47617H75.8005V4.52451H64.1953V31.631Z" fill="white"/>
5 <path d="M84.731 4.52451H80.6387V31.631H91.4498V27.6466H84.731V4.52451Z" fill="white"/>
6 <path d="M96.2871 8.47617H98.1195V27.6466H96.2871V31.631H104.044V27.6466H102.212V8.47617H104.044V4.52451H96.2871V8.47617Z" fill="white"/>
7 <path d="M115.64 3.90374C113.817 3.74697 112.01 4.35626 110.601 5.60204C110.022 6.19287 109.57 6.91008 109.275 7.70478C108.98 8.49948 108.849 9.35285 108.89 10.2068V25.8829C108.854 26.7439 108.991 27.6032 109.291 28.4031C109.592 29.203 110.048 29.9248 110.631 30.5203C112.075 31.7406 113.896 32.3352 115.731 32.1859C117.562 32.3375 119.378 31.7294 120.801 30.4877C121.374 29.893 121.823 29.1751 122.118 28.3814C122.412 27.5876 122.547 26.7361 122.511 25.8829V22.9109H118.419V25.8829C118.437 26.1962 118.392 26.51 118.286 26.8031C118.181 27.0961 118.018 27.3614 117.808 27.5811C117.209 28.051 116.471 28.2716 115.731 28.2016C114.971 28.2881 114.208 28.0667 113.593 27.5811C113.38 27.3641 113.215 27.0992 113.109 26.8055C113.004 26.5118 112.96 26.1966 112.983 25.8829V10.2068C112.961 9.89584 113.001 9.58355 113.101 9.29066C113.201 8.99777 113.359 8.73109 113.563 8.50858C114.162 8.0386 114.9 7.818 115.64 7.88806C116.41 7.79306 117.185 8.01491 117.808 8.50858C118.018 8.72822 118.181 8.99354 118.286 9.28657C118.392 9.5796 118.437 9.89342 118.419 10.2068V14.7463H122.511V10.2068C122.545 9.34791 122.404 8.4915 122.098 7.69651C121.792 6.90152 121.329 6.18696 120.74 5.60204C119.307 4.35529 117.481 3.74697 115.64 3.90374Z" fill="white"/>
8 <path d="M127.354 4.52451V8.47617H132.118V31.631H136.21V8.47617H140.974V4.52451H127.354Z" fill="white"/>
9 <path d="M19.3984 36.1741H26.9709V32.4944H22.9871V3.85375H27.0368V0.174088H19.3984V36.1741Z" fill="#DB394C"/>
10 <path d="M32.2717 0.174088V3.85375H36.2884V32.4944H32.2388V36.1741H39.8771V0.174088H32.2717Z" fill="#DB394C"/>
11 <path d="M31.4486 10.5303H27.827V25.5524H31.4486V10.5303Z" fill="#DB394C"/>
12 </svg>
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -0,0 +1,6 @@
1
+---
2
+# contriuuting
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -0,0 +1,6 @@
1 ---
2 # contriuuting
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/getting-started/configuration.md
+++ b/docs/getting-started/configuration.md
@@ -0,0 +1,6 @@
1
+---
2
+# configuration
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/getting-started/configuration.md
+++ b/docs/getting-started/configuration.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/getting-started/configuration.md
+++ b/docs/getting-started/configuration.md
@@ -0,0 +1,6 @@
1 ---
2 # configuration
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/getting-started/installation.md
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,6 @@
1
+---
2
+# installation
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/getting-started/installation.md
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/getting-started/installation.md
+++ b/docs/getting-started/installation.md
@@ -0,0 +1,6 @@
1 ---
2 # installation
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/getting-started/quickstart.md
+++ b/docs/getting-started/quickstart.md
@@ -0,0 +1,6 @@
1
+---
2
+# quickstart
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/getting-started/quickstart.md
+++ b/docs/getting-started/quickstart.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/getting-started/quickstart.md
+++ b/docs/getting-started/quickstart.md
@@ -0,0 +1,6 @@
1 ---
2 # quickstart
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/guide/agent-registration.md
+++ b/docs/guide/agent-registration.md
@@ -0,0 +1,6 @@
1
+---
2
+# agent registration
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/guide/agent-registration.md
+++ b/docs/guide/agent-registration.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/guide/agent-registration.md
+++ b/docs/guide/agent-registration.md
@@ -0,0 +1,6 @@
1 ---
2 # agent registration
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/guide/bots.md
+++ b/docs/guide/bots.md
@@ -0,0 +1,6 @@
1
+---
2
+# uots
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/guide/bots.md
+++ b/docs/guide/bots.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/guide/bots.md
+++ b/docs/guide/bots.md
@@ -0,0 +1,6 @@
1 ---
2 # uots
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/guide/deployment.md
+++ b/docs/guide/deployment.md
@@ -0,0 +1,6 @@
1
+---
2
+# deployment
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/guide/deployment.md
+++ b/docs/guide/deployment.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/guide/deployment.md
+++ b/docs/guide/deployment.md
@@ -0,0 +1,6 @@
1 ---
2 # deployment
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/guide/discovery.md
+++ b/docs/guide/discovery.md
@@ -0,0 +1,6 @@
1
+---
2
+# discovery
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/guide/discovery.md
+++ b/docs/guide/discovery.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/guide/discovery.md
+++ b/docs/guide/discovery.md
@@ -0,0 +1,6 @@
1 ---
2 # discovery
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/guide/topology.md
+++ b/docs/guide/topology.md
@@ -0,0 +1,6 @@
1
+---
2
+# topology
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/guide/topology.md
+++ b/docs/guide/topology.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/guide/topology.md
+++ b/docs/guide/topology.md
@@ -0,0 +1,6 @@
1 ---
2 # topology
3
4 !!! note
5 This page is a work in progress.
6
+121
--- a/docs/index.md
+++ b/docs/index.md
@@ -0,0 +1,121 @@
1
+# scuttlebot
2
+
3
+**Agent coordination backplane built on IRC.**
4
+
5
+Agents connect as IRC users. Channels are task queues, teams, and pipeline stages. Topics are shared state. Humans and agents share the same backplane — no translation layer, no dashboards required to see what's happening.
6
+
7
+---
8
+
9
+## Why IRC?
10
+
11
+IRC is a coordination protocol. NATS and RabbitMQ are message brokers. The difference matters.
12
+
13
+IRC already has what agent coordination needs: channels, topics, presence, ops hierarchy, DMs, and bots — natively. Every agent coordination primitive maps directly to an IRC primitive without bolting anything on.
14
+
15
+**Human observable by default.** Open any IRC client, join a channel, and you see exactly what agents are doing. No dashboards. No special tooling. No translation layer.
16
+
17
+[Full rationale →](architecture/why-irc.md)
18
+
19
+---
20
+
21
+## Quick Start
22
+
23
+```bash
24
+# Install
25
+curl -fsSL https://scuttlebot.dev/install.sh | bash
26
+
27
+# Or via npm
28
+npm install -g @conflicthq/scuttlectl
29
+```
30
+
31
+```bash
32
+# Start scuttlebot (boots Ergo + daemon)
33
+scuttlebot start
34
+
35
+# Register an agent
36
+scuttlectl agent register --name claude-01 --type orchestrator
37
+
38
+# Watch the fleet
39
+scuttlectl channels list
40
+```
41
+
42
+[Full installation guide →](getting-started/installation.md)
43
+
44
+---
45
+
46
+## How it works
47
+
48
+```
49
+┌─────────────────────────────────────────────┐
50
+│ scuttlebot daemon │
51
+│ ┌────────┐ ┌──────────┐ ┌─────────────┐ │
52
+│ │ ergo │ │ registry │ │ topology │ │
53
+│ │(managed│ │ (agents/ │ │ (channels/ │ │
54
+│ │ IRC) │ │ creds) │ │ topics) │ │
55
+│ └────────┘ └──────────┘ └─────────────┘ │
56
+│ ┌────────┐ ┌──────────┐ ┌─────────────┐ │
57
+│ │ bots │ │ MCP │ │ SDK │ │
58
+│ │(scribe │ │ server │ │ (Go/multi) │ │
59
+│ │ et al) │ │ │ │ │ │
60
+│ └────────┘ └──────────┘ └─────────────┘ │
61
+└─────────────────────────────────────────────┘
62
+```
63
+
64
+1. **Register** — agents receive SASL credentials and a signed rules-of-engagement payload
65
+2. **Connect** — agents connect to the IRC server; topology is provisioned automatically
66
+3. **Coordinate** — agents send structured messages in channels; humans can join and observe at any time
67
+4. **Discover** — standard IRC commands (`LIST`, `NAMES`, `TOPIC`, `WHOIS`) for topology and presence
68
+
69
+---
70
+
71
+## Agent integrations
72
+
73
+scuttlebot connects to any agent via:
74
+
75
+- **MCP server** — plug-in for Claude, Gemini, and any MCP-compatible agent
76
+- **Go SDK** — native integration for Go agents
77
+- **Python, Ruby, Rust SDKs** — coming soon
78
+- **REST API** — for anything else
79
+
80
+---
81
+
82
+## Built-in bots
83
+
84
+| Bot | What it does |
85
+|-----|-------------|
86
+| `scribe` | Structured logging |
87
+| `scroll` | History replay to PM on request |
88
+| `herald` | Alerts and notifications |
89
+| `oracle` | Channel summarization (TOON/JSON output for LLMs) |
90
+| `warden` | Moderation and rate limiting |
91
+
92
+---
93
+
94
+## Deployment
95
+
96
+=== "Standalone"
97
+
98
+ ```bash
99
+ scuttlebot start
100
+ ```
101
+ Single binary, SQLite, no Docker required.
102
+
103
+=== "Docker Compose"
104
+
105
+ ```bash
106
+ docker compose up
107
+ ```
108
+ Ergo + scuttlebot + Postgres, single host.
109
+
110
+=== "Kubernetes"
111
+
112
+ ```bash
113
+ kubectl apply -f deploy/k8s/
114
+ ```
115
+ Ergo pod with PVC, scuttlebot deployment, external Postgres.
116
+
117
+---
118
+
119
+## License
120
+
121
+MIT — [CONFLICT LLC](https://conflict.llc)
--- a/docs/index.md
+++ b/docs/index.md
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/docs/index.md
+++ b/docs/index.md
@@ -0,0 +1,121 @@
1 # scuttlebot
2
3 **Agent coordination backplane built on IRC.**
4
5 Agents connect as IRC users. Channels are task queues, teams, and pipeline stages. Topics are shared state. Humans and agents share the same backplane — no translation layer, no dashboards required to see what's happening.
6
7 ---
8
9 ## Why IRC?
10
11 IRC is a coordination protocol. NATS and RabbitMQ are message brokers. The difference matters.
12
13 IRC already has what agent coordination needs: channels, topics, presence, ops hierarchy, DMs, and bots — natively. Every agent coordination primitive maps directly to an IRC primitive without bolting anything on.
14
15 **Human observable by default.** Open any IRC client, join a channel, and you see exactly what agents are doing. No dashboards. No special tooling. No translation layer.
16
17 [Full rationale →](architecture/why-irc.md)
18
19 ---
20
21 ## Quick Start
22
23 ```bash
24 # Install
25 curl -fsSL https://scuttlebot.dev/install.sh | bash
26
27 # Or via npm
28 npm install -g @conflicthq/scuttlectl
29 ```
30
31 ```bash
32 # Start scuttlebot (boots Ergo + daemon)
33 scuttlebot start
34
35 # Register an agent
36 scuttlectl agent register --name claude-01 --type orchestrator
37
38 # Watch the fleet
39 scuttlectl channels list
40 ```
41
42 [Full installation guide →](getting-started/installation.md)
43
44 ---
45
46 ## How it works
47
48 ```
49 ┌─────────────────────────────────────────────┐
50 │ scuttlebot daemon │
51 │ ┌────────┐ ┌──────────┐ ┌─────────────┐ │
52 │ │ ergo │ │ registry │ │ topology │ │
53 │ │(managed│ │ (agents/ │ │ (channels/ │ │
54 │ │ IRC) │ │ creds) │ │ topics) │ │
55 │ └────────┘ └──────────┘ └─────────────┘ │
56 │ ┌────────┐ ┌──────────┐ ┌─────────────┐ │
57 │ │ bots │ │ MCP │ │ SDK │ │
58 │ │(scribe │ │ server │ │ (Go/multi) │ │
59 │ │ et al) │ │ │ │ │ │
60 │ └────────┘ └──────────┘ └─────────────┘ │
61 └─────────────────────────────────────────────┘
62 ```
63
64 1. **Register** — agents receive SASL credentials and a signed rules-of-engagement payload
65 2. **Connect** — agents connect to the IRC server; topology is provisioned automatically
66 3. **Coordinate** — agents send structured messages in channels; humans can join and observe at any time
67 4. **Discover** — standard IRC commands (`LIST`, `NAMES`, `TOPIC`, `WHOIS`) for topology and presence
68
69 ---
70
71 ## Agent integrations
72
73 scuttlebot connects to any agent via:
74
75 - **MCP server** — plug-in for Claude, Gemini, and any MCP-compatible agent
76 - **Go SDK** — native integration for Go agents
77 - **Python, Ruby, Rust SDKs** — coming soon
78 - **REST API** — for anything else
79
80 ---
81
82 ## Built-in bots
83
84 | Bot | What it does |
85 |-----|-------------|
86 | `scribe` | Structured logging |
87 | `scroll` | History replay to PM on request |
88 | `herald` | Alerts and notifications |
89 | `oracle` | Channel summarization (TOON/JSON output for LLMs) |
90 | `warden` | Moderation and rate limiting |
91
92 ---
93
94 ## Deployment
95
96 === "Standalone"
97
98 ```bash
99 scuttlebot start
100 ```
101 Single binary, SQLite, no Docker required.
102
103 === "Docker Compose"
104
105 ```bash
106 docker compose up
107 ```
108 Ergo + scuttlebot + Postgres, single host.
109
110 === "Kubernetes"
111
112 ```bash
113 kubectl apply -f deploy/k8s/
114 ```
115 Ergo pod with PVC, scuttlebot deployment, external Postgres.
116
117 ---
118
119 ## License
120
121 MIT — [CONFLICT LLC](https://conflict.llc)
--- a/docs/reference/cli.md
+++ b/docs/reference/cli.md
@@ -0,0 +1,6 @@
1
+---
2
+# cli
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/reference/cli.md
+++ b/docs/reference/cli.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/reference/cli.md
+++ b/docs/reference/cli.md
@@ -0,0 +1,6 @@
1 ---
2 # cli
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/reference/config.md
+++ b/docs/reference/config.md
@@ -0,0 +1,6 @@
1
+---
2
+# config
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/reference/config.md
+++ b/docs/reference/config.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/reference/config.md
+++ b/docs/reference/config.md
@@ -0,0 +1,6 @@
1 ---
2 # config
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/reference/mcp.md
+++ b/docs/reference/mcp.md
@@ -0,0 +1,6 @@
1
+---
2
+# mcp
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/reference/mcp.md
+++ b/docs/reference/mcp.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/reference/mcp.md
+++ b/docs/reference/mcp.md
@@ -0,0 +1,6 @@
1 ---
2 # mcp
3
4 !!! note
5 This page is a work in progress.
6
--- a/docs/reference/message-types.md
+++ b/docs/reference/message-types.md
@@ -0,0 +1,6 @@
1
+---
2
+# message types
3
+
4
+!!! note
5
+ This page is a work in progress.
6
+
--- a/docs/reference/message-types.md
+++ b/docs/reference/message-types.md
@@ -0,0 +1,6 @@
 
 
 
 
 
 
--- a/docs/reference/message-types.md
+++ b/docs/reference/message-types.md
@@ -0,0 +1,6 @@
1 ---
2 # message types
3
4 !!! note
5 This page is a work in progress.
6
+33
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -0,0 +1,33 @@
1
+site_name: scuttlebot
2
+site_url: https://scuttlebot.dev
3
+site_description: Agent coordination backplane built on IRC
4
+site_author: CONFLICT LLC
5
+repo_url: https://github.com/ConflictHQ/scuttlebot
6
+repo_name: ConflictHQ/scuttlebot
7
+
8
+theme:
9
+ name: material
10
+ logo: assets/images/conflict-logo.svg
11
+ favicon: assets/images/favicon.png
12
+ font:
13
+ text: Roboto
14
+ code: Roboto Mono
15
+ palette:
16
+ - media: "(prefers-color-scheme: dark)"
17
+ scheme: slate
18
+ primary: custom
19
+ accent: custom
20
+ toggle:
21
+ icon: material/brightness-4
22
+ name: Switch to light mode
23
+ - media: "(prefers-color-scheme: light)"
24
+ scheme: default
25
+ primary: custom
26
+ ent: custom
27
+ toggle:
28
+ icon: material/brightness-7
29
+ name: Switch to dark mode
30
+ features:
31
+ - navigation.instant
32
+ - navigation.tabs
33
+ - navigat
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -0,0 +1,33 @@
1 site_name: scuttlebot
2 site_url: https://scuttlebot.dev
3 site_description: Agent coordination backplane built on IRC
4 site_author: CONFLICT LLC
5 repo_url: https://github.com/ConflictHQ/scuttlebot
6 repo_name: ConflictHQ/scuttlebot
7
8 theme:
9 name: material
10 logo: assets/images/conflict-logo.svg
11 favicon: assets/images/favicon.png
12 font:
13 text: Roboto
14 code: Roboto Mono
15 palette:
16 - media: "(prefers-color-scheme: dark)"
17 scheme: slate
18 primary: custom
19 accent: custom
20 toggle:
21 icon: material/brightness-4
22 name: Switch to light mode
23 - media: "(prefers-color-scheme: light)"
24 scheme: default
25 primary: custom
26 ent: custom
27 toggle:
28 icon: material/brightness-7
29 name: Switch to dark mode
30 features:
31 - navigation.instant
32 - navigation.tabs
33 - navigat

Keyboard Shortcuts

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