@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 +83 -306
- package/dist/index.js +5709 -3506
- package/dist/workers/intelligence.worker.js +48 -15
- package/dist/workers/io.worker.js +190 -155
- package/package.json +2 -1
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="
|
|
6
|
+
<img alt="SoulForge" src="assets/SOULFORGE_LOGO.png" width="560" />
|
|
11
7
|
</picture>
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
<p><strong>The AI coding agent that edits symbols, not strings.</strong></p>
|
|
14
10
|
|
|
15
|
-
<
|
|
16
|
-
<a href="
|
|
17
|
-
<a href="https://github.com/ProxySoul/soulforge/actions/workflows/ci.yml"><
|
|
18
|
-
<a href="
|
|
19
|
-
<a href="https://
|
|
20
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
37
|
+
soulforge --set-key anthropic sk-ant-...
|
|
319
38
|
cd your-project
|
|
320
39
|
soulforge
|
|
321
40
|
```
|
|
322
41
|
|
|
323
|
-
|
|
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
|
-
|
|
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
|
-
|
|
98
|
+
## Sponsors
|
|
333
99
|
|
|
334
|
-
<
|
|
100
|
+
<div align="center">
|
|
335
101
|
|
|
336
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
343
|
-
|
|
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
|
+
|