@proxysoul/soulforge 2.16.2 → 2.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,378 +1,121 @@
1
1
  <div align="center">
2
2
 
3
- <a href="https://github.com/sponsors/proxysoul"><img src="https://img.shields.io/badge/%F0%9F%94%A5_Sponsor-GitHub-EA4AAA.svg?style=for-the-badge&logo=githubsponsors&logoColor=white" alt="Sponsor on GitHub" /></a>
4
- <a href="https://paypal.me/waeru"><img src="https://img.shields.io/badge/%E2%9A%94%EF%B8%8F_Fuel_the_Forge-PayPal-9B30FF.svg?style=for-the-badge&logo=paypal&logoColor=white" alt="Fuel the Forge" /></a>
5
-
6
- <br/>
7
-
8
- <sub><b>Backed by</b></sub>
9
- <br/>
10
- <br/>
11
-
12
- <!--
13
- Sponsor wall — logos sized by tier.
14
- Heart of the forge ($1000/mo) → height="80" top row, solo
15
- Anvil ($500/mo) → height="60" premium row
16
- Forge ($100/mo) + Permanent ($200+) → height="48" supporters row
17
- Add new sponsors to the matching tier row below. Source of truth: BACKERS.md.
18
- -->
19
-
20
- <!-- Permanent backers ($200+ one-time) & Forge tier ($100/mo) -->
21
- <a href="https://llmgateway.io/dashboard?ref=6tjJR2H3X4E9RmVQiQwK" title="LLM Gateway — Permanent backer">
22
- <picture>
23
- <source media="(prefers-color-scheme: dark)" srcset="https://llmgateway.io/brand/logo-with-name-white.svg" />
24
- <source media="(prefers-color-scheme: light)" srcset="https://llmgateway.io/brand/logo-with-name-black.svg" />
25
- <img alt="LLM Gateway" src="https://llmgateway.io/brand/logo-with-name-black.svg" height="48" />
26
- </picture>
27
- </a>
28
-
29
- <br/>
30
- <sub><i>One API, 200+ models, up to 30% off frontier — already wired into SoulForge as the <code>llmgateway</code> provider.</i></sub>
31
-
32
- <br/><br/>
33
-
34
- <a href="https://llmgateway.io/dashboard?ref=6tjJR2H3X4E9RmVQiQwK"><img src="https://img.shields.io/badge/Get_a_LLM_Gateway_key-%E2%86%92-7C3AED.svg?style=for-the-badge&labelColor=0a0818" alt="Get a LLM Gateway key" /></a>
35
-
36
- <br/>
37
- <sub><a href="BACKERS.md">See all backers</a> · <a href="https://github.com/sponsors/proxysoul">Become a sponsor</a></sub>
38
-
39
- <br/>
40
-
41
3
  <picture>
42
4
  <source media="(prefers-color-scheme: dark)" srcset="assets/SOULFORGE_LOGO.png" />
43
5
  <source media="(prefers-color-scheme: light)" srcset="assets/SOULFORGE_LOGO_LIGHT.png" />
44
- <img alt="SoulForge" src="assets/SOULFORGE_LOGO.png" width="800" />
6
+ <img alt="SoulForge" src="assets/SOULFORGE_LOGO.png" width="560" />
45
7
  </picture>
46
8
 
47
- <img src="assets/separator.svg" width="100%" height="8" />
48
-
49
- <a href="https://www.npmjs.com/package/@proxysoul/soulforge"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/@proxysoul/soulforge?label=version&color=7844f0&style=flat-square&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/npm/v/@proxysoul/soulforge?label=version&color=7844f0&style=flat-square" /><img alt="Version" src="https://img.shields.io/npm/v/@proxysoul/soulforge?label=version&color=7844f0&style=flat-square" /></picture></a>&nbsp;
50
- <a href="LICENSE"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/License-BSL%201.1-ff0059.svg?style=flat-square&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/License-BSL%201.1-ff0059.svg?style=flat-square" /><img alt="License" src="https://img.shields.io/badge/License-BSL%201.1-ff0059.svg?style=flat-square" /></picture></a>&nbsp;
51
- <a href="https://github.com/ProxySoul/soulforge/actions/workflows/ci.yml"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/ci.yml?label=CI&style=flat-square&color=0b8b00&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/ci.yml?label=CI&style=flat-square&color=0b8b00" /><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/ci.yml?label=CI&style=flat-square" /></picture></a>&nbsp;
52
- <a href="https://github.com/ProxySoul/soulforge/actions/workflows/playground.yml"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/headless-forge.yml?label=Soul&style=flat-square&color=9b6af5&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/headless-forge.yml?label=Soul&style=flat-square&color=9b6af5" /><img alt="Headless Forge" src="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/headless-forge.yml?label=Soul&style=flat-square" /></picture></a>&nbsp;
53
- <a href="https://www.typescriptlang.org/"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/TypeScript-strict-00a2ce.svg?style=flat-square&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/TypeScript-strict-00a2ce.svg?style=flat-square" /><img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-00a2ce.svg?style=flat-square" /></picture></a>&nbsp;
54
- <a href="https://bun.sh"><picture><source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/runtime-Bun-ff0059.svg?style=flat-square&labelColor=0a0818" /><source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/runtime-Bun-ff0059.svg?style=flat-square" /><img alt="Bun" src="https://img.shields.io/badge/runtime-Bun-ff0059.svg?style=flat-square" /></picture></a>
55
-
56
- <br/><br/>
57
-
58
- <img src="assets/intro.gif" alt="SoulForge" width="900" />
9
+ <p><strong>The AI coding agent that edits symbols, not strings.</strong></p>
59
10
 
60
- <br/>
61
-
62
- <img src="assets/features.svg" width="800" />
63
-
64
- <br/>
65
-
66
- <a href="https://www.star-history.com/?repos=ProxySoul%2Fsoulforge&type=date&legend=top-left">
67
- <picture>
68
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&theme=dark&legend=top-left" />
69
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&legend=top-left" />
70
- <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&legend=top-left" width="700" />
71
- </picture>
72
- </a>
11
+ <p>
12
+ <a href="https://www.npmjs.com/package/@proxysoul/soulforge"><img alt="npm" src="https://img.shields.io/npm/v/@proxysoul/soulforge?label=npm&color=7844f0&style=flat-square" /></a>
13
+ <a href="https://github.com/ProxySoul/soulforge/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/ci.yml?label=ci&style=flat-square" /></a>
14
+ <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-BSL%201.1-blue.svg?style=flat-square" /></a>
15
+ <a href="https://soulforge.proxysoul.com"><img alt="Docs" src="https://img.shields.io/badge/docs-soulforge.proxysoul.com-555.svg?style=flat-square" /></a>
16
+ </p>
73
17
 
74
18
  </div>
75
19
 
76
- <img src="assets/separator.svg" width="100%" height="8" />
77
-
78
- ## The agent that treats code as code
79
-
80
- <table>
81
- <tr>
82
- <td align="center" width="33%"><h3>~5 tokens</h3><sub>to change a function return type<br/>(AST edit vs ~100 lines of <code>oldString</code>)</sub></td>
83
- <td align="center" width="33%"><h3>~$0</h3><sub>average compaction cost<br/>(V2 extracts as you go)</sub></td>
84
- <td align="center" width="33%"><h3>34 → 5</h3><sub>messages after compaction<br/>with 0 LLM tokens spent</sub></td>
85
- </tr>
86
- </table>
87
-
88
- Every other AI coding tool treats your codebase as text. It `grep`s, it pastes 500-line files into context, it builds `oldString`/`newString` blobs and prays the whitespace matches. Half the turn is orientation. The other half is string-matching roulette.
89
-
90
- SoulForge treats code as code. On startup it parses your project into a **live Soul Map** — every file, symbol, import edge — ranked by PageRank and git co-change. Forge opens every turn oriented: it reads single symbols by name (not whole files), edits TS/JS through the AST (symbol kind + name, 65+ ops, zero text matching), and rewrites the rest with line-anchored edits that never drift.
91
-
92
- **What that means in practice:**
93
-
94
- - `ast_edit` changes a return type with `value: "Promise<User>"` — no `oldString`, no whitespace failures, no line-offset math.
95
- - Reads pull one function by name, not an 800-line dump. Context stays lean.
96
- - V2 compaction serializes structured state as the conversation happens — when context fills, it compacts for free.
97
- - Sub-agents share a read cache, so 3 parallel explorers don't re-open the same file 3 times.
98
-
99
- Same work, a fraction of the tokens, a fraction of the seconds.
100
-
101
- <img src="assets/separator.svg" width="100%" height="8" />
102
-
103
- ## Not your average CLI
104
-
105
- <table>
106
- <tr>
107
- <td width="50%" valign="top">
108
- <h4>🧠 Live Soul Map</h4>
109
- <p>SQLite graph of every file, symbol, and import — PageRank-ranked, git-co-change-aware, personalized per turn. Renders into the system prompt with <strong>blast radius</strong> tags so the agent knows which edits ripple. <a href="https://soulforge.proxysoul.com/concepts/repo-map">Learn more</a></p>
110
- </td>
111
- <td width="50%" valign="top">
112
- <h4>🔪 Surgical reads across 33 languages</h4>
113
- <p>Read a single function by name. A 500-line file becomes a 20-line extraction. TypeScript, Python, Rust, Go, Java, Ruby, C/C++, Swift, Kotlin, Elixir, Zig, Solidity, and more. <a href="https://soulforge.proxysoul.com/concepts/intelligence">Learn more</a></p>
114
- </td>
115
- </tr>
116
- <tr>
117
- <td valign="top">
118
- <h4>🤖 Parallel agents with shared cache</h4>
119
- <p>Forge dispatches explore, code, and web-search agents in parallel. Files one reads are cached for the others — 3 agents don't re-read 3x. Real-time findings propagate between them. <a href="https://soulforge.proxysoul.com/agents/dispatch">Learn more</a></p>
120
- </td>
121
- <td valign="top">
122
- <h4>💰 Free compaction</h4>
123
- <p>V2 compaction tracks structured state as the conversation happens — files touched, decisions, failures, tool results. When context fills up, serialization is instant and typically costs <strong>zero LLM tokens</strong>. <a href="https://soulforge.proxysoul.com/context/compaction">Learn more</a></p>
124
- </td>
125
- </tr>
126
- <tr>
127
- <td valign="top">
128
- <h4>🎯 One call, complete job</h4>
129
- <p><code>rename_symbol</code> runs LSP rename, verifies zero dangling refs, reports back. <code>move_symbol</code> moves a symbol and updates every import across TS/JS, Python, and Rust. <code>project</code> auto-detects your toolchain across <strong>23 ecosystems</strong>. <a href="https://soulforge.proxysoul.com/concepts/compound-tools">Learn more</a></p>
130
- </td>
131
- <td valign="top">
132
- <h4>🔬 AST-native editing</h4>
133
- <p><code>ast_edit</code> addresses TS/JS symbols by name, not text. 65+ operations. Changing a return type costs <strong>~5 tokens</strong> instead of 100 lines of <code>oldString</code>. Atomic batches, auto-rollback. <a href="https://soulforge.proxysoul.com/tools/ast-edit">Learn more</a></p>
134
- </td>
135
- </tr>
136
- <tr>
137
- <td valign="top">
138
- <h4>📝 Your Neovim, embedded</h4>
139
- <p>Real Neovim in a PTY — your config, your plugins, your LSP servers. Agent edits route through the same editor you use. Over SSH, in tmux, wherever.</p>
140
- </td>
141
- <td valign="top">
142
- <h4>🎚️ Mix-and-match models</h4>
143
- <p>Haiku for exploration. Sonnet for code. Flash for compaction. The task router wires a different model to each job — cheap work goes to cheap models. <strong>21 providers</strong> + any OpenAI-compatible API.</p>
144
- </td>
145
- </tr>
146
- <tr>
147
- <td valign="top">
148
- <h4>📱 Reach your forge from anywhere</h4>
149
- <p><strong>Hearth</strong> turns a running SoulForge into a remote agent. Telegram or Discord. Tap-to-approve for destructive ops, auto-redaction of secrets. Your code never leaves your host. <a href="https://soulforge.proxysoul.com/tools/hearth">Learn more</a></p>
150
- </td>
151
- <td valign="top">
152
- <h4>↶ Undo any turn</h4>
153
- <p>Every prompt is a checkpoint. <code>Ctrl+B</code> / <code>Ctrl+F</code> walks history. Branching from any point rewrites the conversation AND restores files on disk. <a href="https://soulforge.proxysoul.com/tools/checkpoints">Learn more</a></p>
154
- </td>
155
- </tr>
156
- <tr>
157
- <td valign="top">
158
- <h4>📑 Tab-aware file claims</h4>
159
- <p>Up to 5 tabs per project with independent model, mode, session, and checkpoints. Tabs see each other's claimed files and active agents. Git hard-blocks during cross-tab dispatch, partial commits are impossible. <a href="https://soulforge.proxysoul.com/agents/cross-tab">Learn more</a></p>
160
- </td>
161
- <td valign="top">
162
- <h4>🪝 Drop-in Claude Code hooks</h4>
163
- <p>13 lifecycle events (PreToolUse, PostToolUse, compaction, subagents). Reads your existing <code>.claude/settings.json</code> — no rewrites. <a href="https://soulforge.proxysoul.com/tools/hooks">Learn more</a></p>
164
- </td>
165
- </tr>
166
- <tr>
167
- <td valign="top">
168
- <h4>🔌 MCP-compatible</h4>
169
- <p>Any <a href="https://modelcontextprotocol.io">Model Context Protocol</a> server works out of the box. stdio, HTTP, SSE. Auto-reconnect, namespaced tools. <a href="https://soulforge.proxysoul.com/tools/mcp">Learn more</a></p>
170
- </td>
171
- <td valign="top">
172
- <h4>🧩 Skills</h4>
173
- <p>Install domain-specific skills with <code>Ctrl+S</code>. Bun development, Three.js fundamentals, product marketing, whatever. Approval-gated, scoped per session.</p>
174
- </td>
175
- </tr>
176
- </table>
177
-
178
- <details>
179
- <summary><strong>And a lot more</strong></summary>
180
- <br/>
181
-
182
- - **Steering** — type while the agent works, messages inject mid-stream. [More](https://soulforge.proxysoul.com/agents/steering)
183
- - **Lock-in mode** — hide narration, show only tool activity and final answer
184
- - **Inline images** — pixel-perfect images and animated GIFs via Kitty graphics protocol
185
- - **24 themes** — Catppuccin, Dracula, Gruvbox, Nord, Tokyo Night, Rose Pine, and more. Hot-reload custom themes. [More](https://soulforge.proxysoul.com/tools/themes)
186
- - **Floating terminals** — Ghostty-powered PTYs next to the chat
187
- - **Plan mode** — research, write a structured plan, you approve, then execute. [More](https://soulforge.proxysoul.com/recipes/plan-mode)
188
- - **Memory** — persistent SQLite memory across sessions, scoped per project or global
189
- - **Pre-commit enforcement** — `git commit` auto-runs lint + typecheck; fails block the commit
190
- - **100 slash commands** — [full reference](https://soulforge.proxysoul.com/reference/commands)
191
-
192
- </details>
193
-
194
- <br/>
195
- <img src="assets/separator.svg" width="100%" height="8" />
196
-
197
20
  ## Install
198
21
 
199
22
  ```bash
200
23
  brew tap proxysoul/tap && brew install soulforge
201
24
  ```
202
25
 
203
- macOS and Linux. Neovim and a Nerd Font auto-install on first launch.
204
-
205
- > **Windows:** not natively supported. Use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) for now. Tracked in [#57](https://github.com/proxysoul/soulforge/issues/57).
206
-
207
- <details>
208
- <summary><strong>Other install methods</strong></summary>
209
- <br/>
210
-
211
26
  ```bash
212
- # Bun (global)
27
+ # alternatives
213
28
  bun install -g @proxysoul/soulforge
214
-
215
- # Prebuilt binary
216
- # download from https://github.com/ProxySoul/soulforge/releases/latest
217
- tar xzf soulforge-*.tar.gz && cd soulforge-*/ && ./install.sh
218
-
219
- # Source
220
- git clone https://github.com/ProxySoul/soulforge.git && cd soulforge && bun install && bun run dev
29
+ # or download a prebuilt binary from https://github.com/ProxySoul/soulforge/releases/latest
221
30
  ```
222
31
 
223
- </details>
224
-
225
- ## Get a key
226
-
227
- Pick any one.
32
+ macOS and Linux. Windows via [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) (tracked in [#57](https://github.com/proxysoul/soulforge/issues/57)).
228
33
 
229
- ```bash
230
- soulforge --set-key llmgateway sk-... # one key for every major model, up to 30% off frontier
231
- soulforge --set-key anthropic sk-ant-... # or any individual provider you already have
232
- soulforge # launch, Ctrl+L to pick a model
233
- ```
234
-
235
- [All providers](https://soulforge.proxysoul.com/providers) · [Custom providers](https://soulforge.proxysoul.com/providers/custom)
236
-
237
- <img src="assets/separator.svg" width="100%" height="8" />
238
-
239
- ## How it compares
240
-
241
- <table>
242
- <thead>
243
- <tr>
244
- <th width="170"></th>
245
- <th>SoulForge</th>
246
- <th>Claude Code</th>
247
- <th>Codex CLI</th>
248
- <th>OpenCode</th>
249
- </tr>
250
- </thead>
251
- <tbody>
252
- <tr>
253
- <td><strong>Codebase awareness</strong></td>
254
- <td>Live SQLite graph — PageRank + git co-change, blast-radius tags, per-turn personalization</td>
255
- <td>File reads + grep</td>
256
- <td>File reads + grep</td>
257
- <td>File reads + grep</td>
258
- </tr>
259
- <tr>
260
- <td><strong>Cost tactics</strong></td>
261
- <td>Surgical reads, parallel shared cache, free V2 compaction, model-per-task router</td>
262
- <td>Auto-compaction</td>
263
- <td>Server-side compaction</td>
264
- <td>Auto-compaction</td>
265
- </tr>
266
- <tr>
267
- <td><strong>Code intelligence</strong></td>
268
- <td>LSP → ts-morph → tree-sitter → regex, 33 languages, Mason installer (576+ servers)</td>
269
- <td>LSP via plugins</td>
270
- <td>—</td>
271
- <td>LSP auto-load</td>
272
- </tr>
273
- <tr>
274
- <td><strong>Editor</strong></td>
275
- <td>Embedded Neovim — your config</td>
276
- <td>—</td>
277
- <td>—</td>
278
- <td>—</td>
279
- </tr>
280
- <tr>
281
- <td><strong>Remote control</strong></td>
282
- <td>Hearth: Telegram, Discord</td>
283
- <td>—</td>
284
- <td>—</td>
285
- <td>—</td>
286
- </tr>
287
- <tr>
288
- <td><strong>Multi-agent</strong></td>
289
- <td>Parallel dispatch + shared cache + edit coordination</td>
290
- <td>Subagents + Teams</td>
291
- <td>Multi-agent v2</td>
292
- <td>Multi-session subagents</td>
293
- </tr>
294
- <tr>
295
- <td><strong>Hooks</strong></td>
296
- <td>13 events, Claude Code drop-in compatible</td>
297
- <td>Hooks (PreToolUse, etc.)</td>
298
- <td>—</td>
299
- <td>—</td>
300
- </tr>
301
- <tr>
302
- <td><strong>Providers</strong></td>
303
- <td>21 + any OpenAI-compatible</td>
304
- <td>Anthropic only</td>
305
- <td>OpenAI only</td>
306
- <td>75+ via Models.dev</td>
307
- </tr>
308
- <tr>
309
- <td><strong>License</strong></td>
310
- <td>BSL 1.1 (converts to Apache 2.0 in 2030)</td>
311
- <td>Proprietary</td>
312
- <td>Apache 2.0</td>
313
- <td>MIT</td>
314
- </tr>
315
- </tbody>
316
- </table>
317
-
318
- <sub>Verified April 2026. <a href="https://github.com/ProxySoul/soulforge/issues">Report inaccuracies.</a></sub>
319
-
320
- <img src="assets/separator.svg" width="100%" height="8" />
321
-
322
- ## Real numbers
323
-
324
- All from SoulForge's own codebase, on Claude Sonnet 4.6:
325
-
326
- <table>
327
- <tr>
328
- <td><strong>Rename a class across 8 files</strong></td>
329
- <td>19 steps, $0.228 (text edits) → <strong>3 steps, $0.036</strong> (<code>rename_symbol</code>)</td>
330
- </tr>
331
- <tr>
332
- <td><strong>Change a function return type</strong></td>
333
- <td>~100 lines of <code>oldString</code>/<code>newString</code> → <strong>~5 tokens</strong> with <code>ast_edit</code></td>
334
- </tr>
335
- <tr>
336
- <td><strong>Compact a 34-message session</strong></td>
337
- <td>V1 LLM summary: ~8k output tokens, 5-15s → V2: <strong>0 tokens, instant</strong></td>
338
- </tr>
339
- <tr>
340
- <td><strong>Post-compaction conversation</strong></td>
341
- <td>4.5M prompt tokens → <strong>7.5k tokens</strong> (context utilization 6% → 4%)</td>
342
- </tr>
343
- </table>
344
-
345
- Claude Code's Explore subagent averages ~$0.70 per 5-minute research run with Haiku. SoulForge matches it when you route `spark` to Haiku via the task router — with the added benefit of full repo-map context.
346
-
347
- <img src="assets/separator.svg" width="100%" height="8" />
348
-
349
- ## Try it
34
+ ## Quick start
350
35
 
351
36
  ```bash
352
- brew tap proxysoul/tap && brew install soulforge
37
+ soulforge --set-key anthropic sk-ant-...
353
38
  cd your-project
354
39
  soulforge
355
40
  ```
356
41
 
357
- Then:
42
+ Other providers and OpenAI-compatible endpoints: [docs/providers](https://soulforge.proxysoul.com/providers).
43
+
44
+ ## Benchmarks
45
+
46
+ Same model (Claude Opus 4.6), same codebase, same prompt.
47
+
48
+ **Bug fix**
49
+
50
+ | | SoulForge | OpenCode |
51
+ |---|---|---|
52
+ | Time | **6m 22s** | 11m 18s |
53
+ | Cost | **$1.70** | $3.52 |
54
+ | Result | Correct | Correct |
55
+
56
+ **Audit task** (*"verify cost reporting is wired correctly"*)
57
+
58
+ | | SoulForge | OpenCode |
59
+ |---|---|---|
60
+ | Time | **2m 00s** | 5m 56s |
61
+ | Cost | **$0.84** | $2.61 |
62
+ | Accuracy | **7/7 (100%)** | 4/7 (57%) |
63
+ | False alarms | **0** | 3 |
64
+ | Wrong claims | **0** | 1 |
65
+
66
+ > Same bug. Same model. Same repo. Half the time. Half the cost.
67
+
68
+ <sub>Sources: [recording 1](https://x.com/BniWael/status/2040172009666015641/video/1) · [recording 2](https://x.com/BniWael/status/2042364421373121018/video/1) · [recording 3](https://x.com/BniWael/status/2044826445382373759/video/1)</sub>
69
+
70
+ ## Features
71
+
72
+ | Feature | What it does |
73
+ |---|---|
74
+ | **AST editing** | TS/JS edits via ts-morph, 65+ ops, atomic batches. [docs](https://soulforge.proxysoul.com/tools/ast-edit) |
75
+ | **Live Soul Map** | SQLite graph, PageRank + git co-change, blast-radius tags. [docs](https://soulforge.proxysoul.com/concepts/repo-map) |
76
+ | **LSP + Mason** | 576+ servers installable from the TUI |
77
+ | **33 languages** | symbol-level reads, not file dumps |
78
+ | **Compound tools** | `rename_symbol`, `move_symbol`, `refactor`, `project` (23 toolchains) |
79
+ | **Task router** | route each slot (spark / ember / compact / verify / web / semantic) to a different model per tab. Haiku for exploration, Sonnet for code, Flash for compaction. `/router`. [docs](https://soulforge.proxysoul.com/recipes/task-router) |
80
+ | **V2 compaction** | usually 0 LLM tokens. [docs](https://soulforge.proxysoul.com/context/compaction) |
81
+ | **Parallel agents** | Spark + Ember with shared I/O cache |
82
+ | **Embedded Neovim** | real nvim in a PTY, your config |
83
+ | **5 tabs** | per-tab model, session, checkpoints, file claims |
84
+ | **Time machine** | every prompt is a checkpoint with a git tag. `Ctrl+B` / `Ctrl+F` rewinds and redoes both conversation and files on disk. `/checkpoint undo <N>`, `/checkpoint save`, per-tab |
85
+ | **Sessions** | auto-saved JSONL, crash-resilient, resumable by short-id prefix. Export to markdown / JSON / clipboard. `Ctrl+P` browser, multi-tab. [docs](https://soulforge.proxysoul.com/tools/sessions) |
86
+ | **Memory** | cross-session SQLite store of prefs, decisions, gotchas, context. Auto-recalled per turn from prompt + edited files. Project + global scopes, browser at `/memory`. [docs](https://soulforge.proxysoul.com/tools/memory) |
87
+ | **21 providers** | Anthropic, OpenAI, Google, Groq, DeepSeek, Bedrock, Ollama, LM Studio, ... + any OpenAI-compatible |
88
+ | **Cost tracking** | per-model + per-subagent USD, cache-aware |
89
+ | **MCP + hooks** | any MCP server, 13 events, drop-in `.claude/settings.json` |
90
+ | **Headless mode** | run from CI, scripts, pipelines. JSON / event stream, resumable sessions. [docs](https://soulforge.proxysoul.com/recipes/headless) |
91
+ | **Hearth** *(exp)* | remote control via Telegram or Discord, your host only |
92
+ | **36 themes** | hot-reloaded JSON, Kitty inline images |
358
93
 
359
- ```
360
- > rename AgentBus to CoordinationBus across the project
361
- > run tests and commit
362
- ```
94
+ ## License
95
+
96
+ [BSL 1.1](LICENSE). Free for personal and internal use. Commercial use: [commercial license](COMMERCIAL_LICENSE.md). Converts to Apache 2.0 on March 15, 2030.
363
97
 
364
- Pair a Telegram/Discord bot once with `/hearth pair`, then keep chatting from your phone — the session auto-syncs both ways.
98
+ ## Sponsors
365
99
 
366
- Full docs at **[soulforge.proxysoul.com](https://soulforge.proxysoul.com/introduction)**.
100
+ <div align="center">
367
101
 
368
- <img src="assets/separator.svg" width="100%" height="8" />
102
+ <sub><b>Backed by</b></sub>
369
103
 
370
- ## License
104
+ <a href="https://llmgateway.io/dashboard?ref=6tjJR2H3X4E9RmVQiQwK" title="LLM Gateway">
105
+ <picture>
106
+ <source media="(prefers-color-scheme: dark)" srcset="https://llmgateway.io/brand/logo-with-name-white.svg" />
107
+ <source media="(prefers-color-scheme: light)" srcset="https://llmgateway.io/brand/logo-with-name-black.svg" />
108
+ <img alt="LLM Gateway" src="https://llmgateway.io/brand/logo-with-name-black.svg" height="56" />
109
+ </picture>
110
+ </a>
371
111
 
372
- [Business Source License 1.1](LICENSE). Free for personal and internal use. Commercial use requires a [commercial license](COMMERCIAL_LICENSE.md). Converts to Apache 2.0 on March 15, 2030.
112
+ <p><sub><i>One API, 200+ models, up to 30% off frontier. Wired into SoulForge as the <code>llmgateway</code> provider.</i></sub></p>
113
+
114
+ <a href="https://llmgateway.io/dashboard?ref=6tjJR2H3X4E9RmVQiQwK"><img src="https://img.shields.io/badge/Get_an_LLM_Gateway_key-7C3AED.svg?style=for-the-badge&labelColor=0a0818" alt="Get an LLM Gateway key" /></a>
373
115
 
374
116
  <br/>
375
117
 
376
- <div align="center">
377
- <sub>Open-sourced March 30, 2026. Built by <a href="https://github.com/proxysoul">proxySoul</a></sub>
118
+ <sub><a href="https://github.com/sponsors/proxysoul">Sponsor on GitHub</a> · <a href="https://paypal.me/waeru">PayPal</a> · <a href="BACKERS.md">All backers</a></sub>
119
+
378
120
  </div>
121
+