spb/khaelor Public
KHAELOR — a terminal-native autonomous engineering agent powered by Anthropic.
TypeScript 82.9%
HTML 14.9%
CSS 1.1%
JavaScript 0.7%
1<!doctype html>2<!--3KHAELOR4File: website/public/index.html5Description: KHAELOR site — legendary landing: the auditable autonomous engineer, full TUI gallery, phase gates, daemon.6Author: Simon-Pierre Boucher7Contact: contact@spboucher.ai8-->9<html lang="en">10<head>11<meta charset="utf-8">12<meta name="viewport" content="width=device-width, initial-scale=1">13<title>KHAELOR — the autonomous engineer whose every decision you can replay</title>14<meta name="description" content="KHAELOR is a terminal-native autonomous engineering agent powered by Anthropic. Phase-gated, self-verifying, event-sourced — fork it, replay it, diff it, or let the daemon run it at 3 AM. curl -fsSL https://www.khaelor.sh/install.sh | sh">15<link rel="stylesheet" href="/styles.css">16<script>17(function(){try{var t=localStorage.getItem("khaelor-theme");if(!t&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches)t="light";if(t==="light")document.documentElement.setAttribute("data-theme","light");}catch(e){}})();18</script>19<script defer src="/site.js"></script>20</head>21<body>2223<header class="site-header"><div class="inner">24 <a class="wordmark" href="/"><span class="glyph">❯</span><span class="g-ember">KHAELOR</span></a>25 <nav>26 <a href="/docs/getting-started.html">Docs</a>27 <a href="/docs/phases.html">Phase gates</a>28 <a href="/docs/daemon.html">Daemon</a>29 <a href="/#interface">The interface</a>30 <a href="/#install">Install</a>31 <button id="theme-toggle" type="button" aria-label="Toggle color theme">light</button>32 </nav>33</div></header>3435<main class="page">3637 <section class="hero">38 <div class="kicker">TERMINAL-NATIVE · EVENT-SOURCED · POWERED BY ANTHROPIC</div>39 <h1>An autonomous engineer whose <span class="g-ember">every decision</span> is an event you can replay, fork, and diff.</h1>40 <p class="tagline">41 KHAELOR designs before it implements, verifies before it claims done, and writes42 every action — even the ones at 3 AM — into an append-only log you can audit.43 Autonomy without auditability is scary. KHAELOR sells auditable autonomy.44 </p>4546 <div class="install-line" id="install">47 <span class="prompt">$</span>48 <code>curl -fsSL https://www.khaelor.sh/install.sh | sh</code>49 <button type="button" aria-label="Copy install command">copy</button>50 </div>5152 <div class="cta-row">53 <a href="/docs/getting-started.html">Getting started →</a>54 <a href="/docs/phases.html">Understand → Design → Implement →</a>55 <a href="/docs/daemon.html">The daemon →</a>56 </div>5758 <div class="stats">59 <div class="stat"><b>40</b><span>durable event types</span></div>60 <div class="stat"><b>11</b><span>powerful tools</span></div>61 <div class="stat"><b>698</b><span>tests, all green</span></div>62 <div class="stat"><b>0</b><span>invented numbers</span></div>63 </div>6465 <div class="principle">Understand first. Design second. Implement third. <span class="g-ember">Verify always. Even at 3 AM.</span></div>66 </section>6768 <div class="section-title">One session, start to finish</div>6970 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">khaelor — ~/dev/my-project</span></div>71 <pre class="term" data-no-copy><code> <span class="t-b g-ember">KHAELOR</span> <span class="t-dim">▸ my-project · main</span>7273 <span class="t-ember">❯</span> fix the memory leak in the renderer7475 <span class="t-dim">├─</span> symbols <span class="t-teal">"RenderBuffer"</span> <span class="t-dim">· 3 hits · 12ms</span>76 <span class="t-dim">├─</span> refs <span class="t-teal">appendLine · callers</span> <span class="t-dim">· 14 sites</span>77 <span class="t-dim">╰─</span> read <span class="t-teal">src/tui/render.ts</span> <span class="t-dim">· 240 lines</span>7879 <span class="t-ember">◑</span> design submitted · 2 files <span class="t-dim">· replace growing buffer with a ring</span>80 <span class="t-ok">✓ design auto-approved · 2 files</span>8182 <span class="t-dim">├─</span> edit <span class="t-teal">src/tui/render.ts</span> <span class="t-ok">+31</span> <span class="t-err">−12</span>83 <span class="t-dim">╰─</span> edit <span class="t-teal">src/tui/buffer.ts</span> <span class="t-ok">+8</span> <span class="t-err">−3</span>8485 <span class="t-glow">⟳</span> <span class="t-b">verify</span> typecheck <span class="t-ok">✓</span> <span class="t-dim">1.2s</span> · tests <span class="t-ok">✓</span> <span class="t-dim">4.1s</span> · lint <span class="t-ok">✓</span>86 <span class="t-ok">✓ verified 4.1s</span>8788 <span class="t-ember">●</span> IMPLEMENT <span class="t-dim">─</span> <span class="t-dim">main</span> <span class="t-dim">│</span> sonnet <span class="t-dim">│</span> <span class="gauge">▰▰▰▱▱▱▱▱ 38%</span> <span class="t-dim">│ in 45k · out 3.2k</span></code></pre></div>8990 <div class="section-title">Not another coding agent</div>9192 <div class="grid3">93 <div class="card">94 <h3><span class="glyph">◐◑●</span> Phase gates</h3>95 <p>“Understand → design → implement” is a runtime mechanism, not a slogan. Write tools stay96 locked until a design artifact — goal, approach, files, risks, verification — is approved.97 Small designs auto-approve; big ones ask you. <code>--gate strict|auto|off</code>.</p>98 </div>99 <div class="card">100 <h3><span class="glyph">⟳</span> Native verification</h3>101 <p>After each edit batch, KHAELOR runs your typecheck, tests, and lint itself — in parallel —102 and repairs failures in a bounded loop before handing back. No PR-shaped guesses:103 <code>.khaelor/verify.json</code> or auto-detected.</p>104 </div>105 <div class="card">106 <h3><span class="glyph">⑂</span> Fork · replay · sdiff</h3>107 <p>Every session is an append-only event log. <code>/fork</code> any checkpoint,108 <code>/replay</code> a run against another model in a throwaway worktree, then109 <code>/sdiff</code> the two runs — turns, tool calls, files, tokens. Run it twice, diff the runs.</p>110 </div>111 <div class="card">112 <h3><span class="glyph">◈</span> Semantic index</h3>113 <p>A RepoGraph over your codebase: <code>symbols</code> finds definitions with signatures,114 <code>refs</code> maps callers, callees, and importers before an edit. Skeletons instead of115 whole files — exploration for a fraction of the tokens.</p>116 </div>117 <div class="card">118 <h3><span class="glyph">✎</span> Memory with provenance</h3>119 <p>The agent maintains <code>.khaelor/MEMORY.md</code> itself — conventions, commands, pitfalls —120 and every entry is anchored to the exact session and event that produced it.121 You always know <em>why</em> it believes something.</p>122 </div>123 <div class="card">124 <h3><span class="glyph">⇄</span> Parallel worktrees</h3>125 <p><code>/spawn</code> runs subtasks in isolated git worktrees with attenuated capabilities and126 their own child sessions. Supervised <code>--no-ff</code> merges; conflicts abort cleanly.127 Your working copy is never touched.</p>128 </div>129 </div>130131 <div class="section-title" id="interface">The interface</div>132 <p class="lead" style="max-width:46rem;">No spinner theater, no screen flicker — a print-once133 scrollback, a bounded live region, and a 16 ms frame budget. Here is what your day134 actually looks like.</p>135136 <div class="gallery">137138 <figure>139 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">slash palette</span></div>140 <pre class="term" data-no-copy><code> <span class="t-ember">❯</span> /f<span class="cursor"> </span>141 <span class="t-dim">╭──────────────────────────────────────────╮</span>142 <span class="t-dim">│</span> <span class="sel"> /<span class="match">f</span>ork fork this session at a checkpoint </span><span class="t-dim">│</span>143 <span class="t-dim">│</span> /di<span class="match">f</span>f working-tree changes <span class="t-dim">│</span>144 <span class="t-dim">│</span> /veri<span class="match">f</span>y run the verify checks now <span class="t-dim">│</span>145 <span class="t-dim">│</span> /con<span class="match">f</span>ig resolved configuration <span class="t-dim">│</span>146 <span class="t-dim">╰──────────────────────────────────────────╯</span></code></pre></div>147 <figcaption><b>Slash palette.</b> Type <code>/</code> — fuzzy filtering, descriptions,148 keyboard-only. <kbd>Ctrl+K</kbd> opens the same registry as a universal palette.</figcaption>149 </figure>150151 <figure>152 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">@ file mentions</span></div>153 <pre class="term" data-no-copy><code> <span class="t-ember">❯</span> refactor @ker<span class="cursor"> </span>154 <span class="t-dim">╭──────────────────────────────────────────╮</span>155 <span class="t-dim">│</span> <span class="sel"> src/agent/<span class="match">ker</span>nel.ts </span><span class="t-dim">│</span>156 <span class="t-dim">│</span> tests/agent/<span class="match">ker</span>nel.test.ts <span class="t-dim">│</span>157 <span class="t-dim">│</span> docs/research/<span class="match">KER</span>NEL_NOTES.md <span class="t-dim">│</span>158 <span class="t-dim">╰──────────────────────────────────────────╯</span></code></pre></div>159 <figcaption><b>File mentions.</b> <code>@</code> opens fuzzy repository search backed by the160 live index; selection inserts a structured reference, not a pasted file.</figcaption>161 </figure>162163 <figure>164 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">permission panel</span></div>165 <pre class="term" data-no-copy><code> <span class="t-ember">╭─ KHAELOR requests permission ──────────────╮</span>166 <span class="t-ember">│</span> <span class="t-b">Run</span> <span class="t-ember">│</span>167 <span class="t-ember">│</span> <span class="t-teal">npm install</span> <span class="t-ember">│</span>168 <span class="t-ember">│</span> <span class="t-ember">│</span>169 <span class="t-ember">│</span> <span class="t-dim">Working directory ~/dev/my-project</span> <span class="t-ember">│</span>170 <span class="t-ember">│</span> <span class="t-b">[Enter]</span> allow once <span class="t-ember">│</span>171 <span class="t-ember">│</span> <span class="t-b">[a]</span> always allow in this project <span class="t-ember">│</span>172 <span class="t-ember">│</span> <span class="t-b">[Esc]</span> deny <span class="t-ember">│</span>173 <span class="t-ember">╰────────────────────────────────────────────╯</span></code></pre></div>174 <figcaption><b>Permissions.</b> Capability-based (<code>process.execute</code>,175 <code>git.modify</code>, <code>network.access</code>…), deny > ask > allow. The176 interaction takes milliseconds; silence is never consent.</figcaption>177 </figure>178179 <figure>180 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">diff — intra-line highlight</span></div>181 <pre class="term" data-no-copy><code> <span class="t-b">edit · src/kernel/dispatch.ts</span> <span class="t-ok">+8</span> <span class="t-err">−3</span>182 <span class="t-dim"> 42 │</span> if (!grant) {183 <span class="t-dim"> 43 │</span><span class="d-del">− <span class="d-del-hi">throw new</span> PermissionError(cap);</span>184 <span class="t-dim"> 43 │</span><span class="d-add">+ <span class="d-add-hi">return Result.err(new</span> PermissionError(cap)<span class="d-add-hi">)</span>;</span>185 <span class="t-dim"> 44 │</span><span class="d-add">+ // phase gate: blocked in understand</span>186 <span class="t-dim"> ⋮ 2 hunks folded — [x] expand</span></code></pre></div>187 <figcaption><b>The signature diff.</b> Tinted line backgrounds, only the changed characters188 at full saturation, long hunks auto-folded. <code>d</code> expands any edit instantly;189 <code>/diff</code> goes full-screen side-by-side.</figcaption>190 </figure>191192 <figure>193 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">/processes</span></div>194 <pre class="term" data-no-copy><code> <span class="t-b">processes</span>195 <span class="t-ok">●</span> 3121 npm run dev <span class="t-teal">running</span> 04:32196 <span class="t-ok">●</span> 3198 pytest -x <span class="t-teal">running</span> 00:18197 <span class="t-dim">○</span> 3012 npm test <span class="t-dim">exited code 0</span>198199 <span class="t-dim">the agent starts a dev server, keeps editing,200 reads its output, runs tests — nothing blocks</span></code></pre></div>201 <figcaption><b>Background processes.</b> Long-running commands never block the loop:202 start → continue editing → inspect output → stop. First-class, not an afterthought.</figcaption>203 </figure>204205 <figure>206 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">/sdiff — run it twice, diff the runs</span></div>207 <pre class="term" data-no-copy><code> <span class="t-b">sdiff</span>208 <span class="t-dim">01J8K2… (sonnet)</span> <span class="t-dim">01J8K9… (haiku)</span>209 agent turns 12 17210 tool calls 34 61211 files modified 2 3212 tokens (in/out) 145k / 12k 210k / 19k213 verify failures <span class="t-ok">0</span> <span class="t-err">2</span>214 outcome <span class="t-ok">completed</span> <span class="t-ok">completed</span>215 <span class="t-dim">files only in B: src/c.ts</span></code></pre></div>216 <figcaption><b>Session diff.</b> The cheapest honest model comparison in any CLI:217 <code>/replay</code> a run with another model, then <code>/sdiff</code> the two logs.</figcaption>218 </figure>219220 <figure>221 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">/cost — real usage only</span></div>222 <pre class="term" data-no-copy><code> <span class="t-b">cost · this session</span> <span class="t-dim">(real API usage)</span>223 per turn <span class="t-glow">⣀⣄⣤⣶⣿⣷⣄⣀⣠⣤</span>224 requests 14225 input tokens 145,032 <span class="t-dim">cache-read 118,240</span>226 output tokens 12,884227 <span class="t-b">total $2.14</span> <span class="t-dim">(with configured pricing)</span></code></pre></div>228 <figcaption><b>Cost, honestly.</b> Every number is summed from the API's usage metadata —229 braille sparkline per turn. No pricing configured → no dollar figure invented.</figcaption>230 </figure>231232 <figure>233 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">/memory — provenance included</span></div>234 <pre class="term" data-no-copy><code> <span class="t-b">memory · .khaelor/MEMORY.md</span> <span class="t-dim">(4 entries)</span>235 <span class="t-glow">Conventions</span>236 · errors flow through Result<T,KError> <span class="t-dim">[high · 2026-08-10 · session 01J8K2…]</span>237 <span class="t-glow">Commands</span>238 · full build: npm run check <span class="t-dim">[high · 2026-08-10 · session 01J8K2…]</span>239 <span class="t-glow">Pitfalls</span>240 · never touch render buffer off-tick <span class="t-dim">[medium · session 01J8F1…]</span>241 <span class="t-dim">1 low-confidence entry — purge candidate at next /compact</span></code></pre></div>242 <figcaption><b>Memory you can audit.</b> Each fact links back to the session and event243 that produced it — <kbd>Enter</kbd> opens the source. You always know <em>why</em>.</figcaption>244 </figure>245246 <figure>247 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">/tasks — parallel subtasks</span></div>248 <pre class="term" data-no-copy><code> <span class="t-b">tasks</span>249 <span class="t-ember">●</span> fix-auth-bug <span class="t-ember">◑ design</span> <span class="t-dim">$0.42</span> ⠹ edit…250 <span class="t-ok">✓</span> add-rate-limit <span class="t-ok">done</span> <span class="t-ok">+118</span> <span class="t-err">−24</span> · verify <span class="t-ok">✓</span>251 <span class="t-dim">○</span> deps-update <span class="t-dim">(goal)</span> idle · next run 06:00252253 <span class="t-dim">merge a finished task with /merge (--no-ff, supervised)</span></code></pre></div>254 <figcaption><b>The task board.</b> Each subtask lives in its own git worktree and child255 session with attenuated capabilities — capability attenuation, a real security argument.</figcaption>256 </figure>257258 <figure>259 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">verify strip — repair loop</span></div>260 <pre class="term" data-no-copy><code> <span class="t-glow">⟳</span> <span class="t-b">verify</span> typecheck <span class="t-ok">✓</span> <span class="t-dim">1.2s</span> · tests <span class="t-err">✗</span> · lint <span class="t-ok">✓</span>261 <span class="t-dim">FAIL src/context/engine.test.ts262 → compaction preserves running processes</span>263 <span class="t-dim">KHAELOR is repairing the failure…</span>264 <span class="t-dim">├─</span> edit <span class="t-teal">src/context/compaction.ts</span> <span class="t-ok">+6</span> <span class="t-err">−2</span>265 <span class="t-glow">⟳</span> <span class="t-b">verify</span> typecheck <span class="t-ok">✓</span> · tests <span class="t-ok">✓</span> <span class="t-dim">5.3s</span> · lint <span class="t-ok">✓</span>266 <span class="t-ok">✓ verified 5.3s</span></code></pre></div>267 <figcaption><b>The repair loop.</b> Failures come back to the model automatically —268 bounded (3 rounds), then an honest report. Verification is not optional politeness.</figcaption>269 </figure>270271 <figure>272 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">markdown + syntax highlighting</span></div>273 <pre class="term" data-no-copy><code> <span class="t-glow">─── Here is the fix ───────────────────────</span>274 The leak came from <span class="t-teal">`appendLine`</span> growing the275 buffer unboundedly. Ring buffer instead:276277 <span class="t-dim">╭─ typescript ───────────────────────╮</span>278 <span class="t-dim">│</span> <span class="t-ember">export class</span> <span class="t-teal">RingBuffer</span> { <span class="t-dim">│</span>279 <span class="t-dim">│</span> <span class="t-ember">constructor</span>(<span class="t-warn">capacity</span>: <span class="t-teal">number</span>) {} <span class="t-dim">│</span>280 <span class="t-dim">│</span> } <span class="t-dim">│</span>281 <span class="t-dim">╰────────────────────────── ⏎ copy ──╯</span></code></pre></div>282 <figcaption><b>Markdown done right.</b> Streamed text renders live; code blocks colorize283 the instant they settle. OSC 52 copy where the terminal supports it.</figcaption>284 </figure>285286 <figure>287 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">steering — type while it works</span></div>288 <pre class="term" data-no-copy><code> <span class="t-dim">├─</span> bash <span class="t-teal">npm test</span> <span class="t-dim">· running · 12s</span>289290 <span class="t-ember">❯</span> also update the CHANGELOG<span class="cursor"> </span>291 <span class="t-warn">⋯ 1 queued</span> <span class="t-dim">— injected at the next safe seam</span></code></pre></div>292 <figcaption><b>Steering.</b> Keep typing while KHAELOR works — messages queue and inject293 at a safe boundary, never corrupting a tool batch. <kbd>Esc</kbd> interrupts cleanly.</figcaption>294 </figure>295296 </div>297298 <div class="section-title">khaelord — the engineer that lives</div>299300 <p class="lead" style="max-width: 46rem;">301 A persistent daemon with structured, event-sourced goals — not a prose checklist. Each run gets a302 throwaway worktree, phase gates even at night, mandatory verification, hard budget ceilings, and an303 asynchronous approval queue: a suspended run costs zero.304 </p>305306 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">khaelord — 3 AM, fully audited</span></div>307 <pre class="term" data-no-copy><code> <span class="t-dim">$</span> khaelord goal add <span class="t-teal">"keep npm deps fresh without breaking changes"</span> \308 --type maintain --schedule <span class="t-teal">"0 6 * * 1"</span> --budget 5 --escalation draft-pr309310 <span class="t-dim">$</span> khaelord start311 <span class="t-ok">khaelord running</span> <span class="t-dim">— project ~/dev/my-project</span>312313 <span class="t-dim">03:12</span> <span class="t-ember">●</span> goal <span class="t-teal">deps-fresh</span> check failed → run r7f2 in worktree khaelor/goal-r7f2314 <span class="t-dim">03:14</span> <span class="t-ember">◑</span> design recorded <span class="t-dim">· 3 files · in the log, replayable</span>315 <span class="t-dim">03:17</span> <span class="t-ok">✓ verified</span> <span class="t-dim">· typecheck ✓ tests ✓</span> · branch left for review316 <span class="t-dim">03:17</span> <span class="t-dim">spent today: $1.84 / $20 · runs 1/8</span></code></pre></div>317318 <div class="pitch">319 <p>Other agents give you an assistant that lives. <strong>KHAELOR gives you an engineer that320 lives</strong> — and whose every nocturnal decision is an event you can replay, fork, and diff321 the next morning.</p>322 <p class="motto">understand · design · implement · <span class="g-ember">verify always — even at 3 AM</span></p>323 </div>324325 <div class="section-title">Approval, when it matters</div>326327 <div class="termwrap"><div class="termbar"><span class="dot r"></span><span class="dot y"></span><span class="dot g"></span><span class="title">design panel — strict mode</span></div>328 <pre class="term panel breath" data-no-copy><code> <span class="t-ember">╭─ ◑ DESIGN — approval required ─────────────────────────╮</span>329 <span class="t-ember">│</span> <span class="t-dim">Goal</span> Fix the renderer memory leak <span class="t-ember">│</span>330 <span class="t-ember">│</span> <span class="t-dim">Files</span> src/tui/render.ts · src/tui/buffer.ts <span class="t-ember">│</span>331 <span class="t-ember">│</span> <span class="t-dim">Approach</span> Replace the growing buffer with a ring… <span class="t-ember">│</span>332 <span class="t-ember">│</span> <span class="t-dim">Risks</span> ▪ scrollback regression (medium) <span class="t-ember">│</span>333 <span class="t-ember">│</span> <span class="t-dim">Verify</span> vitest run tests/tui + manual demo <span class="t-ember">│</span>334 <span class="t-ember">├────────────────────────────────────────────────────────┤</span>335 <span class="t-ember">│</span> <span class="t-b">[a]</span> approve <span class="t-b">[r]</span> reject <span class="t-ember">│</span>336 <span class="t-ember">╰────────────────────────────────────────────────────────╯</span></code></pre></div>337338 <div class="section-title">Everything is real</div>339340 <table class="vs">341 <tr><th></th><th>KHAELOR</th></tr>342 <tr><td>Costs & tokens</td><td>summed from real API usage metadata — never estimated, never invented</td></tr>343 <tr><td>Test results</td><td>your own commands, real exit codes, errors-first truncation</td></tr>344 <tr><td>History</td><td>append-only JSONL, torn-write recovery, byte-exact replay</td></tr>345 <tr><td>Permissions</td><td>capability-based (file.write.project, git.modify, network.access…), deny > ask > allow, silence is never consent</td></tr>346 <tr><td>3 AM decisions</td><td>one event log per goal run — <code>Enter</code> on a run replays exactly what happened</td></tr>347 </table>348349 <div class="section-title">Start</div>350351 <pre><code>curl -fsSL https://www.khaelor.sh/install.sh | sh352export ANTHROPIC_API_KEY=<your key>353cd your-project354khaelor</code></pre>355356 <div class="cta-row" style="margin-bottom: 3rem;">357 <a href="/docs/getting-started.html">Getting started →</a>358 <a href="/docs/cookbook.html">Cookbook →</a>359 <a href="/docs/commands.html">All commands →</a>360 <a href="/docs/faq.html">FAQ →</a>361 </div>362363</main>364365<footer class="site-footer"><div class="inner">366 <span>KHAELOR — Simon-Pierre Boucher</span>367 <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a>368 <a href="/docs/getting-started.html">Docs</a>369 <a href="/docs/phases.html">Phase gates</a>370 <a href="/docs/daemon.html">Daemon</a>371 <a href="/docs/architecture.html">Architecture</a>372</div></footer>373374</body>375</html>376