@proxysoul/soulforge 2.16.1 → 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,344 +1,121 @@
1
1
  <div align="center">
2
2
 
3
- <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>
4
-
5
- <br/>
6
-
7
3
  <picture>
8
4
  <source media="(prefers-color-scheme: dark)" srcset="assets/SOULFORGE_LOGO.png" />
9
5
  <source media="(prefers-color-scheme: light)" srcset="assets/SOULFORGE_LOGO_LIGHT.png" />
10
- <img alt="SoulForge" src="assets/SOULFORGE_LOGO.png" width="800" />
6
+ <img alt="SoulForge" src="assets/SOULFORGE_LOGO.png" width="560" />
11
7
  </picture>
12
8
 
13
- <img src="assets/separator.svg" width="100%" height="8" />
9
+ <p><strong>The AI coding agent that edits symbols, not strings.</strong></p>
14
10
 
15
- <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;
16
- <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;
17
- <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;
18
- <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;
19
- <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;
20
- <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>
21
-
22
- <br/><br/>
23
-
24
- <img src="assets/intro.gif" alt="SoulForge" width="900" />
25
-
26
- <br/>
27
-
28
- <img src="assets/features.svg" width="800" />
29
-
30
- <br/>
31
-
32
- <a href="https://www.star-history.com/?repos=ProxySoul%2Fsoulforge&type=date&legend=top-left">
33
- <picture>
34
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&theme=dark&legend=top-left" />
35
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&legend=top-left" />
36
- <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=ProxySoul/soulforge&type=date&legend=top-left" width="700" />
37
- </picture>
38
- </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>
39
17
 
40
18
  </div>
41
19
 
42
- <img src="assets/separator.svg" width="100%" height="8" />
43
-
44
- ## The agent that treats code as code
45
-
46
- <table>
47
- <tr>
48
- <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>
49
- <td align="center" width="33%"><h3>~$0</h3><sub>average compaction cost<br/>(V2 extracts as you go)</sub></td>
50
- <td align="center" width="33%"><h3>34 → 5</h3><sub>messages after compaction<br/>with 0 LLM tokens spent</sub></td>
51
- </tr>
52
- </table>
53
-
54
- 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.
55
-
56
- 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.
57
-
58
- **What that means in practice:**
59
-
60
- - `ast_edit` changes a return type with `value: "Promise<User>"` — no `oldString`, no whitespace failures, no line-offset math.
61
- - Reads pull one function by name, not an 800-line dump. Context stays lean.
62
- - V2 compaction serializes structured state as the conversation happens — when context fills, it compacts for free.
63
- - Sub-agents share a read cache, so 3 parallel explorers don't re-open the same file 3 times.
64
-
65
- Same work, a fraction of the tokens, a fraction of the seconds.
66
-
67
- <img src="assets/separator.svg" width="100%" height="8" />
68
-
69
- ## Not your average CLI
70
-
71
- <table>
72
- <tr>
73
- <td width="50%" valign="top">
74
- <h4>🧠 Live Soul Map</h4>
75
- <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>
76
- </td>
77
- <td width="50%" valign="top">
78
- <h4>🔪 Surgical reads across 33 languages</h4>
79
- <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>
80
- </td>
81
- </tr>
82
- <tr>
83
- <td valign="top">
84
- <h4>🤖 Parallel agents with shared cache</h4>
85
- <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>
86
- </td>
87
- <td valign="top">
88
- <h4>💰 Free compaction</h4>
89
- <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>
90
- </td>
91
- </tr>
92
- <tr>
93
- <td valign="top">
94
- <h4>🎯 One call, complete job</h4>
95
- <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>
96
- </td>
97
- <td valign="top">
98
- <h4>🔬 AST-native editing</h4>
99
- <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>
100
- </td>
101
- </tr>
102
- <tr>
103
- <td valign="top">
104
- <h4>📝 Your Neovim, embedded</h4>
105
- <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>
106
- </td>
107
- <td valign="top">
108
- <h4>🎚️ Mix-and-match models</h4>
109
- <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>
110
- </td>
111
- </tr>
112
- <tr>
113
- <td valign="top">
114
- <h4>📱 Reach your forge from anywhere</h4>
115
- <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>
116
- </td>
117
- <td valign="top">
118
- <h4>↶ Undo any turn</h4>
119
- <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>
120
- </td>
121
- </tr>
122
- <tr>
123
- <td valign="top">
124
- <h4>📑 Tab-aware file claims</h4>
125
- <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>
126
- </td>
127
- <td valign="top">
128
- <h4>🪝 Drop-in Claude Code hooks</h4>
129
- <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>
130
- </td>
131
- </tr>
132
- <tr>
133
- <td valign="top">
134
- <h4>🔌 MCP-compatible</h4>
135
- <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>
136
- </td>
137
- <td valign="top">
138
- <h4>🧩 Skills</h4>
139
- <p>Install domain-specific skills with <code>Ctrl+S</code>. Bun development, Three.js fundamentals, product marketing, whatever. Approval-gated, scoped per session.</p>
140
- </td>
141
- </tr>
142
- </table>
143
-
144
- <details>
145
- <summary><strong>And a lot more</strong></summary>
146
- <br/>
147
-
148
- - **Steering** — type while the agent works, messages inject mid-stream. [More](https://soulforge.proxysoul.com/agents/steering)
149
- - **Lock-in mode** — hide narration, show only tool activity and final answer
150
- - **Inline images** — pixel-perfect images and animated GIFs via Kitty graphics protocol
151
- - **24 themes** — Catppuccin, Dracula, Gruvbox, Nord, Tokyo Night, Rose Pine, and more. Hot-reload custom themes. [More](https://soulforge.proxysoul.com/tools/themes)
152
- - **Floating terminals** — Ghostty-powered PTYs next to the chat
153
- - **Plan mode** — research, write a structured plan, you approve, then execute. [More](https://soulforge.proxysoul.com/recipes/plan-mode)
154
- - **Memory** — persistent SQLite memory across sessions, scoped per project or global
155
- - **Pre-commit enforcement** — `git commit` auto-runs lint + typecheck; fails block the commit
156
- - **100 slash commands** — [full reference](https://soulforge.proxysoul.com/reference/commands)
157
-
158
- </details>
159
-
160
- <br/>
161
- <img src="assets/separator.svg" width="100%" height="8" />
162
-
163
20
  ## Install
164
21
 
165
22
  ```bash
166
23
  brew tap proxysoul/tap && brew install soulforge
167
24
  ```
168
25
 
169
- macOS and Linux. Neovim and a Nerd Font auto-install on first launch.
170
-
171
- > **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).
172
-
173
- <details>
174
- <summary><strong>Other install methods</strong></summary>
175
- <br/>
176
-
177
26
  ```bash
178
- # Bun (global)
27
+ # alternatives
179
28
  bun install -g @proxysoul/soulforge
180
-
181
- # Prebuilt binary
182
- # download from https://github.com/ProxySoul/soulforge/releases/latest
183
- tar xzf soulforge-*.tar.gz && cd soulforge-*/ && ./install.sh
184
-
185
- # Source
186
- 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
187
30
  ```
188
31
 
189
- </details>
190
-
191
- ## Get a key
192
-
193
- 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)).
194
33
 
195
- ```bash
196
- soulforge --set-key llmgateway sk-... # one key for every major model, up to 30% off frontier
197
- soulforge --set-key anthropic sk-ant-... # or any individual provider you already have
198
- soulforge # launch, Ctrl+L to pick a model
199
- ```
200
-
201
- [All providers](https://soulforge.proxysoul.com/providers) · [Custom providers](https://soulforge.proxysoul.com/providers/custom)
202
-
203
- <img src="assets/separator.svg" width="100%" height="8" />
204
-
205
- ## How it compares
206
-
207
- <table>
208
- <thead>
209
- <tr>
210
- <th width="170"></th>
211
- <th>SoulForge</th>
212
- <th>Claude Code</th>
213
- <th>Codex CLI</th>
214
- <th>OpenCode</th>
215
- </tr>
216
- </thead>
217
- <tbody>
218
- <tr>
219
- <td><strong>Codebase awareness</strong></td>
220
- <td>Live SQLite graph — PageRank + git co-change, blast-radius tags, per-turn personalization</td>
221
- <td>File reads + grep</td>
222
- <td>File reads + grep</td>
223
- <td>File reads + grep</td>
224
- </tr>
225
- <tr>
226
- <td><strong>Cost tactics</strong></td>
227
- <td>Surgical reads, parallel shared cache, free V2 compaction, model-per-task router</td>
228
- <td>Auto-compaction</td>
229
- <td>Server-side compaction</td>
230
- <td>Auto-compaction</td>
231
- </tr>
232
- <tr>
233
- <td><strong>Code intelligence</strong></td>
234
- <td>LSP → ts-morph → tree-sitter → regex, 33 languages, Mason installer (576+ servers)</td>
235
- <td>LSP via plugins</td>
236
- <td>—</td>
237
- <td>LSP auto-load</td>
238
- </tr>
239
- <tr>
240
- <td><strong>Editor</strong></td>
241
- <td>Embedded Neovim — your config</td>
242
- <td>—</td>
243
- <td>—</td>
244
- <td>—</td>
245
- </tr>
246
- <tr>
247
- <td><strong>Remote control</strong></td>
248
- <td>Hearth: Telegram, Discord</td>
249
- <td>—</td>
250
- <td>—</td>
251
- <td>—</td>
252
- </tr>
253
- <tr>
254
- <td><strong>Multi-agent</strong></td>
255
- <td>Parallel dispatch + shared cache + edit coordination</td>
256
- <td>Subagents + Teams</td>
257
- <td>Multi-agent v2</td>
258
- <td>Multi-session subagents</td>
259
- </tr>
260
- <tr>
261
- <td><strong>Hooks</strong></td>
262
- <td>13 events, Claude Code drop-in compatible</td>
263
- <td>Hooks (PreToolUse, etc.)</td>
264
- <td>—</td>
265
- <td>—</td>
266
- </tr>
267
- <tr>
268
- <td><strong>Providers</strong></td>
269
- <td>21 + any OpenAI-compatible</td>
270
- <td>Anthropic only</td>
271
- <td>OpenAI only</td>
272
- <td>75+ via Models.dev</td>
273
- </tr>
274
- <tr>
275
- <td><strong>License</strong></td>
276
- <td>BSL 1.1 (converts to Apache 2.0 in 2030)</td>
277
- <td>Proprietary</td>
278
- <td>Apache 2.0</td>
279
- <td>MIT</td>
280
- </tr>
281
- </tbody>
282
- </table>
283
-
284
- <sub>Verified April 2026. <a href="https://github.com/ProxySoul/soulforge/issues">Report inaccuracies.</a></sub>
285
-
286
- <img src="assets/separator.svg" width="100%" height="8" />
287
-
288
- ## Real numbers
289
-
290
- All from SoulForge's own codebase, on Claude Sonnet 4.6:
291
-
292
- <table>
293
- <tr>
294
- <td><strong>Rename a class across 8 files</strong></td>
295
- <td>19 steps, $0.228 (text edits) → <strong>3 steps, $0.036</strong> (<code>rename_symbol</code>)</td>
296
- </tr>
297
- <tr>
298
- <td><strong>Change a function return type</strong></td>
299
- <td>~100 lines of <code>oldString</code>/<code>newString</code> → <strong>~5 tokens</strong> with <code>ast_edit</code></td>
300
- </tr>
301
- <tr>
302
- <td><strong>Compact a 34-message session</strong></td>
303
- <td>V1 LLM summary: ~8k output tokens, 5-15s → V2: <strong>0 tokens, instant</strong></td>
304
- </tr>
305
- <tr>
306
- <td><strong>Post-compaction conversation</strong></td>
307
- <td>4.5M prompt tokens → <strong>7.5k tokens</strong> (context utilization 6% → 4%)</td>
308
- </tr>
309
- </table>
310
-
311
- 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.
312
-
313
- <img src="assets/separator.svg" width="100%" height="8" />
314
-
315
- ## Try it
34
+ ## Quick start
316
35
 
317
36
  ```bash
318
- brew tap proxysoul/tap && brew install soulforge
37
+ soulforge --set-key anthropic sk-ant-...
319
38
  cd your-project
320
39
  soulforge
321
40
  ```
322
41
 
323
- 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 |
324
93
 
325
- ```
326
- > rename AgentBus to CoordinationBus across the project
327
- > run tests and commit
328
- ```
94
+ ## License
329
95
 
330
- Pair a Telegram/Discord bot once with `/hearth pair`, then keep chatting from your phone the session auto-syncs both ways.
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.
331
97
 
332
- Full docs at **[soulforge.proxysoul.com](https://soulforge.proxysoul.com/introduction)**.
98
+ ## Sponsors
333
99
 
334
- <img src="assets/separator.svg" width="100%" height="8" />
100
+ <div align="center">
335
101
 
336
- ## License
102
+ <sub><b>Backed by</b></sub>
103
+
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>
111
+
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>
337
113
 
338
- [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.
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>
339
115
 
340
116
  <br/>
341
117
 
342
- <div align="center">
343
- <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
+
344
120
  </div>
121
+