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 documentation site — landing page: what KHAELOR is, install, features, demo.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 — a terminal-native autonomous engineering agent</title>14<meta name="description" content="KHAELOR is a terminal-native autonomous engineering agent powered by Anthropic. Install with one command: 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>KHAELOR</a>25 <nav>26 <a href="/docs/getting-started.html">Docs</a>27 <a href="/#install">Install</a>28 <button id="theme-toggle" type="button" aria-label="Toggle color theme">light</button>29 </nav>30</div></header>3132<main class="page">3334 <section class="hero">35 <div class="kicker">TERMINAL-NATIVE · POWERED BY ANTHROPIC</div>36 <h1>An autonomous engineering agent that treats your terminal as the product.</h1>37 <p class="tagline">38 KHAELOR reads, searches, edits, runs, and verifies code in your repository —39 streaming every action into a calm, fast, keyboard-native interface.40 No web UI. No Electron. Just your terminal, done properly.41 </p>4243 <div class="install-line" id="install">44 <span class="prompt">$</span>45 <code>curl -fsSL https://www.khaelor.sh/install.sh | sh</code>46 <button type="button" aria-label="Copy install command">copy</button>47 </div>4849 <div class="cta-row">50 <a href="/docs/getting-started.html">Getting started →</a>51 <a href="/docs/usage.html">The TUI in depth →</a>52 </div>5354 <div class="principle">Understand first. Design second. Implement third.</div>55 </section>5657 <div class="section-title">What it feels like</div>5859 <pre class="term" data-no-copy><code> <span class="t-b">KHAELOR</span>60 <span class="t-dim">~/dev/my-project · main</span>61 <span class="t-dim">claude-sonnet-4-5 · thinking adaptive</span>62<span class="t-dim">────────────────────────────────────────────────────</span>63 What do you want to build?64 <span class="t-accent">❯</span> add retry logic to the session store6566 <span class="t-dim">▸</span> Read <span class="t-b">src/session/store.ts</span> <span class="t-dim">· 212 lines</span>67 <span class="t-dim">▸</span> Search <span class="t-b">"retry"</span> <span class="t-dim">· 6 matches</span>6869 I found the failure point in SessionStore.append — writes70 are not retried on transient EAGAIN. Fixing that first.7172 <span class="t-dim">▸</span> Edit <span class="t-b">src/session/store.ts</span> <span class="t-dim">· +31 −12</span>73 <span class="t-dim">▸</span> Run <span class="t-b">npm test</span> <span class="t-dim">·</span> <span class="t-ok">passed</span> <span class="t-dim">· 4.2s</span>7475 <span class="t-ok">✓</span> src/session/store.ts <span class="t-ok">+31</span> <span class="t-err">−12</span> <span class="t-dim">d expand diff</span>7677 <span class="t-accent">❯</span> _78 <span class="t-dim">main +1 −0 │ claude-sonnet-4-5 │ context 24% │ $0.31</span></code></pre>7980 <div class="section-title">Why KHAELOR</div>8182 <div class="features">83 <div class="feature">84 <span class="glyph">❯_</span>85 <h3>The terminal is the product</h3>86 <p>Print-once scrollback, a bounded flicker-free live region, sub-16 ms input echo. Native selection and copy always work — nothing repaints behind your back.</p>87 </div>88 <div class="feature">89 <span class="glyph">▶▶</span>90 <h3>First-class streaming</h3>91 <p>Everything is event-driven — model text, tool calls, process output — coalesced into smooth 16 ms frames. No spinners pretending to be progress.</p>92 </div>93 <div class="feature">94 <span class="glyph">7</span>95 <h3>Seven powerful tools</h3>96 <p><code>read</code> · <code>write</code> · <code>edit</code> (9-strategy replacer) · <code>grep</code> · <code>glob</code> · <code>bash</code> · <code>process</code> — a real background process manager, not blocking shells.</p>97 </div>98 <div class="feature">99 <span class="glyph">●○</span>100 <h3>Background processes</h3>101 <p>Start a dev server, keep editing, read its output later, run tests alongside. Long commands migrate to the background instead of hanging the agent.</p>102 </div>103 <div class="feature">104 <span class="glyph">⋮</span>105 <h3>Capability-based permissions</h3>106 <p>Allow / ask / deny by capability — never opaque tool names. Approve once with <kbd>Enter</kbd>, persist a precise grant with <kbd>A</kbd>, deny with <kbd>Esc</kbd>.</p>107 </div>108 <div class="feature">109 <span class="glyph">↻</span>110 <h3>Persistent sessions</h3>111 <p>Every session is an append-only event log. Resume is replay: your transcript, cost, file state, and even pending permission prompts survive restarts.</p>112 </div>113 <div class="feature">114 <span class="glyph">%</span>115 <h3>Honest numbers</h3>116 <p>Token usage, cost, and context pressure come from real API metadata — never estimates, never invented progress bars. If pricing is unknown, it says <code>n/a</code>.</p>117 </div>118 <div class="feature">119 <span class="glyph">⊕</span>120 <h3>Context engine</h3>121 <p>Token-pressure-aware compaction with structured checkpoints. Inspect exactly what the model sees with <code>/context</code>; compact on demand with <code>/compact</code>.</p>122 </div>123 <div class="feature">124 <span class="glyph">✎</span>125 <h3>Steer while it works</h3>126 <p>Type while the agent runs — messages queue and inject safely at tool boundaries. <kbd>Esc</kbd> interrupts instantly without corrupting the session.</p>127 </div>128 </div>129130 <div class="section-title">Install</div>131132 <p>One line (checks Node ≥ 22, installs the CLI globally, verifies it):</p>133 <pre><code>curl -fsSL https://www.khaelor.sh/install.sh | sh</code></pre>134135 <p>Or install the tarball directly with npm:</p>136 <pre><code>npm install -g https://www.khaelor.sh/khaelor.tgz</code></pre>137138 <p>Then set your Anthropic API key and start it inside any project:</p>139 <pre><code>export ANTHROPIC_API_KEY=sk-ant-...140khaelor</code></pre>141142 <p>Full walkthrough: <a href="/docs/getting-started.html">Getting started</a>.</p>143144 <div class="section-title">Documentation</div>145146 <table>147 <tr><td><a href="/docs/getting-started.html">Getting started</a></td><td class="wrap">Install, API key setup, your first session.</td></tr>148 <tr><td><a href="/docs/usage.html">The TUI</a></td><td class="wrap">Composer, file mentions, shell mode, interruption, steering.</td></tr>149 <tr><td><a href="/docs/commands.html">Commands & keyboard</a></td><td class="wrap">Every slash command, the <kbd>Ctrl+K</kbd> palette, the complete key reference.</td></tr>150 <tr><td><a href="/docs/tools.html">Tools</a></td><td class="wrap">What the agent can do: the seven tools, truncation, background processes.</td></tr>151 <tr><td><a href="/docs/permissions.html">Permissions</a></td><td class="wrap">Capabilities, allow/ask/deny, the permission panel, persisted grants.</td></tr>152 <tr><td><a href="/docs/configuration.html">Configuration</a></td><td class="wrap">Config files, precedence, model selection, thinking and output budget.</td></tr>153 <tr><td><a href="/docs/sessions.html">Sessions</a></td><td class="wrap">Persistence, resume, the event log, cost tracking.</td></tr>154 <tr><td><a href="/docs/faq.html">FAQ</a></td><td class="wrap">Troubleshooting: keys, terminals, NO_COLOR, logs.</td></tr>155 </table>156157</main>158159<footer class="site-footer"><div class="inner">160 <span>KHAELOR — Simon-Pierre Boucher · <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a></span>161 <span>Anthropic-powered · terminal-native by design</span>162</div></footer>163164</body>165</html>166