@proxysoul/soulforge 2.3.0 → 2.4.0
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 +337 -167
- package/dist/index.js +672 -656
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,103 +1,242 @@
|
|
|
1
|
-
<
|
|
2
|
-
<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>
|
|
3
|
-
</p>
|
|
1
|
+
<div align="center">
|
|
4
2
|
|
|
5
|
-
<
|
|
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>
|
|
6
4
|
|
|
7
|
-
<
|
|
8
|
-
<strong>The AI coding agent that already knows your codebase.</strong><br/>
|
|
9
|
-
Graph-powered intelligence · multi-agent dispatch · terminal-native
|
|
10
|
-
</p>
|
|
5
|
+
<br/>
|
|
11
6
|
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
<a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-strict-blue.svg" alt="TypeScript" /></a>
|
|
18
|
-
<a href="https://bun.sh"><img src="https://img.shields.io/badge/runtime-Bun-f472b6.svg" alt="Bun" /></a>
|
|
19
|
-
</p>
|
|
7
|
+
<picture>
|
|
8
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/header-dark.svg" />
|
|
9
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/header-light.svg" />
|
|
10
|
+
<img alt="SoulForge" src="assets/header-dark.svg" width="800" />
|
|
11
|
+
</picture>
|
|
20
12
|
|
|
13
|
+
<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>
|
|
14
|
+
<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>
|
|
15
|
+
<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>
|
|
16
|
+
<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>
|
|
17
|
+
<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>
|
|
18
|
+
<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
19
|
|
|
22
|
-
<
|
|
23
|
-
<img src="assets/main-1.png" alt="SoulForge — Graph-Powered Code Intelligence" width="900" />
|
|
24
|
-
</p>
|
|
20
|
+
<br/><br/>
|
|
25
21
|
|
|
26
|
-
|
|
22
|
+
<img src="assets/main-1.png" alt="SoulForge" width="900" />
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
<br/>
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
- [How it compares](#how-it-compares)
|
|
32
|
-
- [Installation](#installation)
|
|
33
|
-
- [Usage](#usage)
|
|
34
|
-
- [Providers](#providers)
|
|
35
|
-
- [Configuration](#configuration)
|
|
36
|
-
- [Documentation](#documentation)
|
|
37
|
-
- [Roadmap](#roadmap)
|
|
38
|
-
- [Inspirations](#inspirations)
|
|
39
|
-
- [License](#license)
|
|
26
|
+
<img src="assets/features.svg" width="800" />
|
|
40
27
|
|
|
41
|
-
|
|
28
|
+
</div>
|
|
42
29
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Every AI coding tool starts blind. The agent reads files, greps around, slowly pieces together what your codebase looks like. You're paying for the agent to figure out what you already know.
|
|
30
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
46
31
|
|
|
47
|
-
|
|
32
|
+
## Why SoulForge?
|
|
48
33
|
|
|
49
|
-
|
|
34
|
+
Every AI coding tool starts blind. It reads files, greps around, slowly builds a mental model of your codebase. You wait. You pay. The agent is doing orientation work, not real work.
|
|
35
|
+
|
|
36
|
+
SoulForge already knows. On startup it builds a **live dependency graph** of your entire codebase: every file, symbol, import, and export, ranked by PageRank importance, enriched with git co-change history, updated in real-time as files change. The agent knows which files matter, what depends on what, and how far an edit will ripple before it writes a single line. It's faster. It's more accurate. And it costs less.
|
|
37
|
+
|
|
38
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
39
|
+
|
|
40
|
+
### Faster, smarter, cheaper
|
|
41
|
+
|
|
42
|
+
<table>
|
|
43
|
+
<tr>
|
|
44
|
+
<td width="50%" valign="top">
|
|
45
|
+
<h4><a href="docs/repo-map.md">Live Soul Map</a></h4>
|
|
46
|
+
<p>SQLite-backed graph of every file, symbol, import, and export. PageRank ranking, git co-change history, blast radius scoring, clone detection, FTS5 search, unused export tracking. Updated in real-time. The agent never wastes a turn orienting itself.</p>
|
|
47
|
+
</td>
|
|
48
|
+
<td width="50%" valign="top">
|
|
49
|
+
<h4><a href="docs/architecture.md">Surgical reads</a></h4>
|
|
50
|
+
<p>Instead of reading entire files, the agent extracts exactly the function or class it needs by name. A 500-line file becomes a 20-line symbol extraction. Works across 33 languages via a 4-tier fallback chain: LSP, ts-morph, tree-sitter, regex.</p>
|
|
51
|
+
</td>
|
|
52
|
+
</tr>
|
|
53
|
+
<tr>
|
|
54
|
+
<td valign="top">
|
|
55
|
+
<h4><a href="docs/compaction.md">Instant compaction</a></h4>
|
|
56
|
+
<p>Working state is extracted incrementally as the conversation happens: files touched, decisions made, errors hit. When context gets long, compaction fires instantly from this pre-built state. Rich enough state skips the LLM entirely.</p>
|
|
57
|
+
</td>
|
|
58
|
+
<td valign="top">
|
|
59
|
+
<h4><a href="docs/agent-bus.md">Multi-agent dispatch</a></h4>
|
|
60
|
+
<p>Parallel explore, code, and web search agents. First read caches the file; others get a compact stub. Edit coordination prevents conflicts.</p>
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td valign="top">
|
|
65
|
+
<h4><a href="docs/cross-tab-coordination.md">Multi-tab</a></h4>
|
|
66
|
+
<p>Concurrent sessions, per-tab models and modes. Agents see cross-tab edits, get warnings on contested files, git ops coordinate automatically.</p>
|
|
67
|
+
</td>
|
|
68
|
+
<td valign="top">
|
|
69
|
+
<h4><a href="docs/compound-tools.md">Compound tools</a></h4>
|
|
70
|
+
<p><code>read</code> batches parallel + surgical. <code>multi_edit</code> atomic. <code>rename_symbol</code>, <code>move_symbol</code>, <code>rename_file</code> compiler-guaranteed cross-file. <code>project</code> auto-detects 25+ ecosystems.</p>
|
|
71
|
+
</td>
|
|
72
|
+
</tr>
|
|
73
|
+
<tr>
|
|
74
|
+
<td valign="top">
|
|
75
|
+
<h4>Mix-and-match models</h4>
|
|
76
|
+
<p>Opus on planning, Sonnet on coding, Haiku on cleanup. Or one model for everything. Task router gives full control.</p>
|
|
77
|
+
</td>
|
|
78
|
+
<td valign="top">
|
|
79
|
+
<h4>Prompt caching</h4>
|
|
80
|
+
<p>Soul Map is stable across turns, stays cached. On Anthropic the system prompt costs a fraction of normal.</p>
|
|
81
|
+
</td>
|
|
82
|
+
</tr>
|
|
83
|
+
</table>
|
|
84
|
+
|
|
85
|
+
<br/>
|
|
50
86
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
87
|
+
<details>
|
|
88
|
+
<summary><strong>More features</strong></summary>
|
|
89
|
+
<br/>
|
|
90
|
+
|
|
91
|
+
<table>
|
|
92
|
+
<tr>
|
|
93
|
+
<td width="180"><strong>Lock-in mode</strong></td>
|
|
94
|
+
<td>Hides narration, shows only tool activity and final answer. <code>/lock-in</code> or config.</td>
|
|
95
|
+
</tr>
|
|
96
|
+
<tr>
|
|
97
|
+
<td><strong>Embedded Neovim</strong></td>
|
|
98
|
+
<td>Your config, plugins, LSP servers. The AI works through the same editor you use. <a href="docs/architecture.md">More</a></td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<td><strong>19 providers</strong></td>
|
|
102
|
+
<td>Anthropic, OpenAI, Google, xAI, Groq, DeepSeek, Mistral, Bedrock, Fireworks, MiniMax, Copilot, GitHub Models, Ollama, LM Studio, OpenRouter, LLM Gateway, Vercel AI Gateway, Proxy, any OpenAI-compatible.</td>
|
|
103
|
+
</tr>
|
|
104
|
+
<tr>
|
|
105
|
+
<td><strong>Task router</strong></td>
|
|
106
|
+
<td>Per-job model assignment. Spark agents and ember agents each get their own model. <a href="docs/architecture.md">More</a></td>
|
|
107
|
+
</tr>
|
|
108
|
+
<tr>
|
|
109
|
+
<td><strong>Code execution</strong></td>
|
|
110
|
+
<td>Sandboxed Python via Anthropic's <code>code_execution</code> tool. Process data, calculations, batch tool calls.</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td><strong>User steering</strong></td>
|
|
114
|
+
<td>Type while the agent works. Messages queue and arrive at the next step. <a href="docs/steering.md">More</a></td>
|
|
115
|
+
</tr>
|
|
116
|
+
<tr>
|
|
117
|
+
<td><strong>Skills + gates</strong></td>
|
|
118
|
+
<td>Installable skills for domain work. Destructive actions need confirmation. Auto mode for full autonomy.</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td><strong>4-tier intelligence</strong></td>
|
|
122
|
+
<td>LSP, ts-morph, tree-sitter, regex. 33 languages. Dual LSP: Neovim bridge when the editor is open, standalone servers when it's not. <a href="docs/architecture.md">More</a></td>
|
|
123
|
+
</tr>
|
|
124
|
+
</table>
|
|
61
125
|
|
|
62
|
-
|
|
126
|
+
</details>
|
|
63
127
|
|
|
64
|
-
|
|
65
|
-
- **Embedded Neovim.** Your actual config, plugins, and LSP servers. The AI works through the same editor you use. [Deep dive →](docs/architecture.md)
|
|
66
|
-
- **18 providers.** Anthropic, OpenAI, Google, xAI, Groq, DeepSeek, Mistral, Amazon Bedrock, Fireworks, GitHub Copilot, GitHub Models, Ollama, LM Studio, OpenRouter, LLM Gateway, Vercel AI Gateway, Proxy, and any OpenAI-compatible API.
|
|
67
|
-
- **Task router.** Assign different models to different jobs. Spark agents (explore/investigate) and ember agents (code edits) can each use different models. You pick what goes where. [Deep dive →](docs/architecture.md)
|
|
68
|
-
- **Code execution (Smithy).** Sandboxed code execution via Anthropic's `code_execution` tool. The agent can run Python to process data, do calculations, or batch tool calls programmatically.
|
|
69
|
-
- **User steering.** Type while the agent works. Messages queue up and reach the agent at the next step. [Deep dive →](docs/steering.md)
|
|
70
|
-
- **Skills & approval gates.** Installable skills for domain-specific work. Destructive actions require confirmation. Auto mode when you want full autonomy.
|
|
71
|
-
- **4-tier code intelligence.** LSP → ts-morph → tree-sitter → regex fallback across 30 languages. Dual LSP: Neovim bridge when the editor is open, standalone servers when it's not. [Deep dive →](docs/architecture.md)
|
|
128
|
+
<br/>
|
|
72
129
|
|
|
73
|
-
<
|
|
74
|
-
<img src="assets/main-2.png" alt="SoulForge
|
|
75
|
-
</
|
|
130
|
+
<div align="center">
|
|
131
|
+
<img src="assets/main-2.png" alt="SoulForge" width="900" />
|
|
132
|
+
</div>
|
|
76
133
|
|
|
77
|
-
|
|
134
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
78
135
|
|
|
79
136
|
## How it compares
|
|
80
137
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
>
|
|
95
|
-
|
|
96
|
-
|
|
138
|
+
<table>
|
|
139
|
+
<thead>
|
|
140
|
+
<tr>
|
|
141
|
+
<th width="160"></th>
|
|
142
|
+
<th>SoulForge</th>
|
|
143
|
+
<th>Claude Code</th>
|
|
144
|
+
<th>Copilot CLI</th>
|
|
145
|
+
<th>Codex CLI</th>
|
|
146
|
+
<th>Aider</th>
|
|
147
|
+
</tr>
|
|
148
|
+
</thead>
|
|
149
|
+
<tbody>
|
|
150
|
+
<tr>
|
|
151
|
+
<td><strong>Codebase awareness</strong></td>
|
|
152
|
+
<td>Live SQLite graph: PageRank, blast radius, cochange, clone detection, FTS5, unused exports</td>
|
|
153
|
+
<td>File reads + grep</td>
|
|
154
|
+
<td>None</td>
|
|
155
|
+
<td>MCP plugins</td>
|
|
156
|
+
<td>Tree-sitter + PageRank</td>
|
|
157
|
+
</tr>
|
|
158
|
+
<tr>
|
|
159
|
+
<td><strong>Cost optimization</strong></td>
|
|
160
|
+
<td>Soul Map + surgical reads + instant compaction + shared agent cache + model mixing + prompt caching</td>
|
|
161
|
+
<td>Auto-compaction</td>
|
|
162
|
+
<td>Context window mgmt</td>
|
|
163
|
+
<td>Server-side compaction</td>
|
|
164
|
+
<td>-</td>
|
|
165
|
+
</tr>
|
|
166
|
+
<tr>
|
|
167
|
+
<td><strong>Code intelligence</strong></td>
|
|
168
|
+
<td>4-tier: LSP / ts-morph / tree-sitter / regex. Dual LSP. 33 langs</td>
|
|
169
|
+
<td>LSP via plugins</td>
|
|
170
|
+
<td>LSP (VS Code)</td>
|
|
171
|
+
<td>MCP-based LSP</td>
|
|
172
|
+
<td>Tree-sitter AST</td>
|
|
173
|
+
</tr>
|
|
174
|
+
<tr>
|
|
175
|
+
<td><strong>Multi-agent</strong></td>
|
|
176
|
+
<td>Parallel dispatch, shared file/tool cache, edit coordination</td>
|
|
177
|
+
<td>Subagents + Teams</td>
|
|
178
|
+
<td>Subagents + Fleet</td>
|
|
179
|
+
<td>Multi-agent v2</td>
|
|
180
|
+
<td>Single</td>
|
|
181
|
+
</tr>
|
|
182
|
+
<tr>
|
|
183
|
+
<td><strong>Multi-tab</strong></td>
|
|
184
|
+
<td>Per-tab models, file claims, cross-tab git coordination</td>
|
|
185
|
+
<td>-</td>
|
|
186
|
+
<td>-</td>
|
|
187
|
+
<td>-</td>
|
|
188
|
+
<td>-</td>
|
|
189
|
+
</tr>
|
|
190
|
+
<tr>
|
|
191
|
+
<td><strong>Task routing</strong></td>
|
|
192
|
+
<td>Per-task model (spark, ember, web search, verify, desloppify, compact)</td>
|
|
193
|
+
<td>Single model</td>
|
|
194
|
+
<td>Single model</td>
|
|
195
|
+
<td>Per-agent model</td>
|
|
196
|
+
<td>Single model</td>
|
|
197
|
+
</tr>
|
|
198
|
+
<tr>
|
|
199
|
+
<td><strong>Compound tools</strong></td>
|
|
200
|
+
<td><code>read</code> batch+surgical, <code>multi_edit</code> atomic, <code>rename_symbol</code>, <code>move_symbol</code>, <code>refactor</code>, <code>project</code></td>
|
|
201
|
+
<td>Rename via LSP</td>
|
|
202
|
+
<td>-</td>
|
|
203
|
+
<td>-</td>
|
|
204
|
+
<td>-</td>
|
|
205
|
+
</tr>
|
|
206
|
+
<tr>
|
|
207
|
+
<td><strong>Editor</strong></td>
|
|
208
|
+
<td>Embedded Neovim (your config, your plugins)</td>
|
|
209
|
+
<td>No</td>
|
|
210
|
+
<td>No</td>
|
|
211
|
+
<td>No</td>
|
|
212
|
+
<td>No</td>
|
|
213
|
+
</tr>
|
|
214
|
+
<tr>
|
|
215
|
+
<td><strong>Providers</strong></td>
|
|
216
|
+
<td>19 + custom OpenAI-compatible</td>
|
|
217
|
+
<td>Anthropic only</td>
|
|
218
|
+
<td>Multi-model</td>
|
|
219
|
+
<td>OpenAI only</td>
|
|
220
|
+
<td>100+ LLMs</td>
|
|
221
|
+
</tr>
|
|
222
|
+
<tr>
|
|
223
|
+
<td><strong>License</strong></td>
|
|
224
|
+
<td>BSL 1.1</td>
|
|
225
|
+
<td>Proprietary</td>
|
|
226
|
+
<td>Proprietary</td>
|
|
227
|
+
<td>Apache 2.0</td>
|
|
228
|
+
<td>Apache 2.0</td>
|
|
229
|
+
</tr>
|
|
230
|
+
</tbody>
|
|
231
|
+
</table>
|
|
232
|
+
|
|
233
|
+
<sub>Verified March 29, 2026. <a href="https://github.com/ProxySoul/soulforge/issues">Report inaccuracies.</a></sub>
|
|
234
|
+
|
|
235
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
97
236
|
|
|
98
237
|
## Installation
|
|
99
238
|
|
|
100
|
-
macOS and Linux.
|
|
239
|
+
macOS and Linux. First launch checks for prerequisites and offers to install Neovim and Nerd Fonts.
|
|
101
240
|
|
|
102
241
|
### Homebrew (recommended)
|
|
103
242
|
|
|
@@ -107,7 +246,8 @@ brew install soulforge
|
|
|
107
246
|
```
|
|
108
247
|
|
|
109
248
|
<details>
|
|
110
|
-
<summary><strong>Bun (global
|
|
249
|
+
<summary><strong>Bun (global)</strong></summary>
|
|
250
|
+
<br/>
|
|
111
251
|
|
|
112
252
|
```bash
|
|
113
253
|
curl -fsSL https://bun.sh/install | bash
|
|
@@ -119,8 +259,9 @@ soulforge
|
|
|
119
259
|
|
|
120
260
|
<details>
|
|
121
261
|
<summary><strong>Prebuilt binary</strong></summary>
|
|
262
|
+
<br/>
|
|
122
263
|
|
|
123
|
-
Download from [
|
|
264
|
+
Download from [Releases](https://github.com/ProxySoul/soulforge/releases/latest):
|
|
124
265
|
|
|
125
266
|
```bash
|
|
126
267
|
tar xzf soulforge-*.tar.gz && cd soulforge-*/ && ./install.sh
|
|
@@ -132,15 +273,16 @@ Installs to `~/.soulforge/`, adds to PATH.
|
|
|
132
273
|
|
|
133
274
|
<details>
|
|
134
275
|
<summary><strong>Self-contained bundle</strong></summary>
|
|
276
|
+
<br/>
|
|
135
277
|
|
|
136
|
-
Ships
|
|
278
|
+
Ships Neovim 0.11, ripgrep, fd, lazygit, tree-sitter grammars, Nerd Font symbols. Zero system deps.
|
|
137
279
|
|
|
138
280
|
```bash
|
|
139
281
|
git clone https://github.com/ProxySoul/soulforge.git && cd soulforge && bun install
|
|
140
282
|
./scripts/bundle.sh # macOS ARM64
|
|
141
283
|
./scripts/bundle.sh x64 # Intel Mac
|
|
142
284
|
./scripts/bundle.sh x64 linux # Linux x64
|
|
143
|
-
./scripts/bundle.sh x64-baseline linux # Linux x64 (older CPUs
|
|
285
|
+
./scripts/bundle.sh x64-baseline linux # Linux x64 (older CPUs)
|
|
144
286
|
./scripts/bundle.sh arm64 linux # Linux ARM64
|
|
145
287
|
cd dist/bundle/soulforge-*/ && ./install.sh
|
|
146
288
|
```
|
|
@@ -149,6 +291,7 @@ cd dist/bundle/soulforge-*/ && ./install.sh
|
|
|
149
291
|
|
|
150
292
|
<details>
|
|
151
293
|
<summary><strong>Build from source</strong></summary>
|
|
294
|
+
<br/>
|
|
152
295
|
|
|
153
296
|
Requires [Bun](https://bun.sh) >= 1.0 and [Neovim](https://neovim.io) >= 0.11.
|
|
154
297
|
|
|
@@ -164,74 +307,87 @@ bun run build && bun link && soulforge
|
|
|
164
307
|
### Quick start
|
|
165
308
|
|
|
166
309
|
```bash
|
|
167
|
-
soulforge #
|
|
168
|
-
soulforge --set-key anthropic sk-ant-... #
|
|
169
|
-
soulforge --headless "your prompt here" #
|
|
310
|
+
soulforge # launch, pick a model with Ctrl+L
|
|
311
|
+
soulforge --set-key anthropic sk-ant-... # save a key
|
|
312
|
+
soulforge --headless "your prompt here" # non-interactive
|
|
170
313
|
```
|
|
171
314
|
|
|
172
315
|
See [GETTING_STARTED.md](GETTING_STARTED.md) for a full walkthrough.
|
|
173
316
|
|
|
174
|
-
|
|
317
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
175
318
|
|
|
176
319
|
## Usage
|
|
177
320
|
|
|
178
321
|
```bash
|
|
179
|
-
soulforge #
|
|
180
|
-
soulforge --headless "prompt" #
|
|
181
|
-
soulforge --headless --json "prompt" #
|
|
182
|
-
soulforge --headless --chat #
|
|
183
|
-
soulforge --headless --model provider/model #
|
|
184
|
-
soulforge --headless --mode architect #
|
|
185
|
-
soulforge --headless --diff "fix the bug" #
|
|
322
|
+
soulforge # TUI
|
|
323
|
+
soulforge --headless "prompt" # stream to stdout
|
|
324
|
+
soulforge --headless --json "prompt" # structured JSON
|
|
325
|
+
soulforge --headless --chat # multi-turn
|
|
326
|
+
soulforge --headless --model provider/model # override model
|
|
327
|
+
soulforge --headless --mode architect # read-only
|
|
328
|
+
soulforge --headless --diff "fix the bug" # show changed files
|
|
186
329
|
```
|
|
187
330
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
331
|
+
<table>
|
|
332
|
+
<thead><tr><th width="140">Mode</th><th>What it does</th></tr></thead>
|
|
333
|
+
<tbody>
|
|
334
|
+
<tr><td><code>default</code></td><td>Full agent, all tools</td></tr>
|
|
335
|
+
<tr><td><code>auto</code></td><td>Executes immediately, no questions</td></tr>
|
|
336
|
+
<tr><td><code>architect</code></td><td>Read-only analysis and review</td></tr>
|
|
337
|
+
<tr><td><code>socratic</code></td><td>Guided learning through questions</td></tr>
|
|
338
|
+
<tr><td><code>challenge</code></td><td>Pushes back on assumptions</td></tr>
|
|
339
|
+
<tr><td><code>plan</code></td><td>Planning only, no code changes</td></tr>
|
|
340
|
+
</tbody>
|
|
341
|
+
</table>
|
|
196
342
|
|
|
197
343
|
[Full CLI reference](docs/headless.md)
|
|
198
344
|
|
|
199
|
-
|
|
345
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
200
346
|
|
|
201
347
|
## Providers
|
|
202
348
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
349
|
+
<table>
|
|
350
|
+
<thead><tr><th width="200">Provider</th><th>Setup</th></tr></thead>
|
|
351
|
+
<tbody>
|
|
352
|
+
<tr><td><a href="https://llmgateway.io/?ref=6tjJR2H3X4E9RmVQiQwK"><strong>LLM Gateway</strong></a></td><td><code>LLM_GATEWAY_API_KEY</code></td></tr>
|
|
353
|
+
<tr><td><a href="https://console.anthropic.com/"><strong>Anthropic</strong></a></td><td><code>ANTHROPIC_API_KEY</code></td></tr>
|
|
354
|
+
<tr><td><a href="https://platform.openai.com/"><strong>OpenAI</strong></a></td><td><code>OPENAI_API_KEY</code></td></tr>
|
|
355
|
+
<tr><td><a href="https://aistudio.google.com/"><strong>Google</strong></a></td><td><code>GOOGLE_GENERATIVE_AI_API_KEY</code></td></tr>
|
|
356
|
+
<tr><td><a href="https://console.x.ai/"><strong>xAI</strong></a></td><td><code>XAI_API_KEY</code></td></tr>
|
|
357
|
+
<tr><td><a href="https://console.groq.com/"><strong>Groq</strong></a></td><td><code>GROQ_API_KEY</code></td></tr>
|
|
358
|
+
<tr><td><a href="https://platform.deepseek.com/"><strong>DeepSeek</strong></a></td><td><code>DEEPSEEK_API_KEY</code></td></tr>
|
|
359
|
+
<tr><td><a href="https://console.mistral.ai/"><strong>Mistral</strong></a></td><td><code>MISTRAL_API_KEY</code></td></tr>
|
|
360
|
+
<tr><td><a href="https://aws.amazon.com/bedrock/"><strong>Amazon Bedrock</strong></a></td><td><code>AWS_ACCESS_KEY_ID</code> + <code>AWS_SECRET_ACCESS_KEY</code> + <code>AWS_REGION</code></td></tr>
|
|
361
|
+
<tr><td><a href="https://fireworks.ai/"><strong>Fireworks</strong></a></td><td><code>FIREWORKS_API_KEY</code></td></tr>
|
|
362
|
+
<tr><td><a href="https://platform.minimaxi.com/"><strong>MiniMax</strong></a></td><td><code>MINIMAX_API_KEY</code></td></tr>
|
|
363
|
+
<tr><td><a href="https://github.com/features/copilot"><strong>GitHub Copilot</strong></a></td><td>OAuth token from IDE (<a href="docs/copilot-provider.md">setup</a>)</td></tr>
|
|
364
|
+
<tr><td><a href="https://github.com/marketplace/models"><strong>GitHub Models</strong></a></td><td><code>GITHUB_MODELS_API_KEY</code> (PAT with <code>models:read</code>)</td></tr>
|
|
365
|
+
<tr><td><a href="https://ollama.ai"><strong>Ollama</strong></a></td><td>Auto-detected</td></tr>
|
|
366
|
+
<tr><td><a href="https://lmstudio.ai"><strong>LM Studio</strong></a></td><td>Auto-detected</td></tr>
|
|
367
|
+
<tr><td><a href="https://openrouter.ai"><strong>OpenRouter</strong></a></td><td><code>OPENROUTER_API_KEY</code></td></tr>
|
|
368
|
+
<tr><td><a href="https://vercel.com/ai-gateway"><strong>Vercel AI Gateway</strong></a></td><td><code>AI_GATEWAY_API_KEY</code></td></tr>
|
|
369
|
+
<tr><td><a href="https://github.com/router-for-me/CLIProxyAPI"><strong>Proxy</strong></a></td><td><code>PROXY_API_KEY</code></td></tr>
|
|
370
|
+
<tr><td><strong>Custom</strong></td><td>Any OpenAI-compatible API</td></tr>
|
|
371
|
+
</tbody>
|
|
372
|
+
</table>
|
|
223
373
|
|
|
224
|
-
|
|
374
|
+
<details>
|
|
375
|
+
<summary><strong>Provider notes</strong></summary>
|
|
376
|
+
<br/>
|
|
377
|
+
|
|
378
|
+
**Amazon Bedrock** uses AWS IAM credentials. Set `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` (defaults `us-east-1`). Supports `AWS_SESSION_TOKEN` for temporary creds.
|
|
379
|
+
|
|
380
|
+
**GitHub Copilot**: sign in via IDE, copy `oauth_token` from `~/.config/github-copilot/apps.json`, save with `/keys` or `--set-key copilot`. [Full guide](docs/copilot-provider.md).
|
|
225
381
|
|
|
226
|
-
**GitHub
|
|
382
|
+
**GitHub Models**: free playground API, per-token billing. Fine-grained PAT with `models:read`. Lower rate limits than Copilot.
|
|
227
383
|
|
|
228
|
-
**
|
|
384
|
+
**Ollama**: auto-detected at `localhost:11434`. Override with `OLLAMA_HOST`.
|
|
229
385
|
|
|
230
|
-
**
|
|
386
|
+
**LM Studio**: auto-detected at `localhost:1234`. Override with `LM_STUDIO_URL`. Optional auth via `LM_API_TOKEN`.
|
|
231
387
|
|
|
232
|
-
|
|
388
|
+
</details>
|
|
233
389
|
|
|
234
|
-
|
|
390
|
+
Custom providers via config:
|
|
235
391
|
|
|
236
392
|
```json
|
|
237
393
|
{
|
|
@@ -245,9 +401,9 @@ Add custom providers in config, no code changes:
|
|
|
245
401
|
}
|
|
246
402
|
```
|
|
247
403
|
|
|
248
|
-
[Custom providers](docs/headless.md#custom-providers)
|
|
404
|
+
[Custom providers](docs/headless.md#custom-providers) / [Provider options](docs/provider-options.md)
|
|
249
405
|
|
|
250
|
-
|
|
406
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
251
407
|
|
|
252
408
|
## Configuration
|
|
253
409
|
|
|
@@ -269,62 +425,76 @@ Layered: global (`~/.soulforge/config.json`) + project (`.soulforge/config.json`
|
|
|
269
425
|
}
|
|
270
426
|
```
|
|
271
427
|
|
|
272
|
-
|
|
428
|
+
Drop a `SOULFORGE.md` in your project root for conventions, architecture notes, preferences. Also reads `CLAUDE.md`, `.cursorrules`, `AGENTS.md`. Toggle via `/instructions`.
|
|
273
429
|
|
|
274
430
|
See [GETTING_STARTED.md](GETTING_STARTED.md) for the full config reference.
|
|
275
431
|
|
|
276
|
-
|
|
432
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
277
433
|
|
|
278
434
|
## Documentation
|
|
279
435
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
436
|
+
<table>
|
|
437
|
+
<thead><tr><th width="240">Topic</th><th>Description</th></tr></thead>
|
|
438
|
+
<tbody>
|
|
439
|
+
<tr><td colspan="2"><strong>Core</strong></td></tr>
|
|
440
|
+
<tr><td><a href="docs/architecture.md">Architecture</a></td><td>System overview, intelligence router, agent system, tool design</td></tr>
|
|
441
|
+
<tr><td><a href="docs/repo-map.md">Repo Map</a></td><td>PageRank, cochange, blast radius, clone detection, language support</td></tr>
|
|
442
|
+
<tr><td><a href="docs/agent-bus.md">Agent Bus</a></td><td>Multi-agent coordination, shared cache, edit ownership</td></tr>
|
|
443
|
+
<tr><td><a href="docs/compaction.md">Compaction</a></td><td>Context management, working state extraction</td></tr>
|
|
444
|
+
<tr><td colspan="2"><strong>Tools</strong></td></tr>
|
|
445
|
+
<tr><td><a href="docs/compound-tools.md">Compound Tools</a></td><td>read, multi_edit, rename_symbol, move_symbol, refactor, project</td></tr>
|
|
446
|
+
<tr><td><a href="docs/project-tool.md">Project Tool</a></td><td>25+ ecosystems, pre-commit checks, monorepo discovery</td></tr>
|
|
447
|
+
<tr><td><a href="docs/commands-reference.md">Commands</a></td><td>All 86 slash commands</td></tr>
|
|
448
|
+
<tr><td colspan="2"><strong>Usage</strong></td></tr>
|
|
449
|
+
<tr><td><a href="docs/headless.md">Headless Mode</a></td><td>CLI flags, JSON/JSONL output, CI/CD integration</td></tr>
|
|
450
|
+
<tr><td><a href="docs/steering.md">Steering</a></td><td>Mid-stream user input</td></tr>
|
|
451
|
+
<tr><td><a href="docs/cross-tab-coordination.md">Cross-Tab Coordination</a></td><td>Multi-tab file claims, git coordination</td></tr>
|
|
452
|
+
<tr><td colspan="2"><strong>Config</strong></td></tr>
|
|
453
|
+
<tr><td><a href="docs/provider-options.md">Provider Options</a></td><td>Thinking modes, context management</td></tr>
|
|
454
|
+
<tr><td><a href="docs/themes.md">Themes</a></td><td>24 themes, custom themes, hot reload</td></tr>
|
|
455
|
+
<tr><td><a href="docs/prompt-system.md">Prompt System</a></td><td>Per-family prompts, mode overlays</td></tr>
|
|
456
|
+
<tr><td><a href="docs/copilot-provider.md">Copilot Provider</a></td><td>Setup, legal review</td></tr>
|
|
457
|
+
<tr><td colspan="2"><strong>Start</strong></td></tr>
|
|
458
|
+
<tr><td><a href="GETTING_STARTED.md">Getting Started</a></td><td>First launch walkthrough</td></tr>
|
|
459
|
+
<tr><td><a href="CONTRIBUTING.md">Contributing</a></td><td>Dev setup, PR guidelines</td></tr>
|
|
460
|
+
</tbody>
|
|
461
|
+
</table>
|
|
462
|
+
|
|
463
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
300
464
|
|
|
301
465
|
## Roadmap
|
|
302
466
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
- **`@soulforge/intelligence`**: graph intelligence, tools, and agent orchestration as an importable library
|
|
306
|
-
- **`@soulforge/mcp`**: expose Soul Map tools as MCP servers for Claude Code, Cursor, Copilot, or any MCP client
|
|
307
|
-
- **`sf --headless`**: shipped. Non-interactive mode for CI/CD, automation, and scripting. [Docs →](docs/headless.md)
|
|
467
|
+
Extracting the intelligence layer into reusable packages:
|
|
308
468
|
|
|
309
|
-
|
|
469
|
+
- **`@soulforge/intelligence`** : graph intelligence, tools, agent orchestration as a library
|
|
470
|
+
- **`@soulforge/mcp`** : Soul Map tools as MCP servers for Claude Code, Cursor, Copilot, any MCP client
|
|
471
|
+
- **`sf --headless`** : shipped. [Docs](docs/headless.md)
|
|
310
472
|
|
|
311
|
-
|
|
473
|
+
<table>
|
|
474
|
+
<thead><tr><th width="120">Status</th><th>Item</th></tr></thead>
|
|
475
|
+
<tbody>
|
|
476
|
+
<tr><td><strong>In progress</strong></td><td>MCP support, repo map visualization, GitHub CLI integration, dispatch worktrees, <a href="https://agentclientprotocol.com/">ACP</a></td></tr>
|
|
477
|
+
<tr><td><strong>Planned</strong></td><td>Monorepo graph support, benchmarks, orchestrated workflows (planner > TDD > reviewer > security)</td></tr>
|
|
478
|
+
</tbody>
|
|
479
|
+
</table>
|
|
312
480
|
|
|
313
|
-
|
|
481
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
314
482
|
|
|
315
483
|
## Inspirations
|
|
316
484
|
|
|
317
|
-
- **[Aider](https://github.com/Aider-AI/aider)
|
|
318
|
-
- **[Everything Claude Code](https://github.com/affaan-m/everything-claude-code)
|
|
319
|
-
- **[Vercel AI SDK](https://sdk.vercel.ai)
|
|
320
|
-
- **[Neovim](https://neovim.io)
|
|
485
|
+
- **[Aider](https://github.com/Aider-AI/aider)** : tree-sitter repo maps with PageRank. SoulForge adds cochange, blast radius, clone detection, live updates.
|
|
486
|
+
- **[Everything Claude Code](https://github.com/affaan-m/everything-claude-code)** : enforce behavior with code, not prompts.
|
|
487
|
+
- **[Vercel AI SDK](https://sdk.vercel.ai)** : multi-provider abstraction.
|
|
488
|
+
- **[Neovim](https://neovim.io)** : embedded via msgpack-RPC. Your config and muscle memory intact.
|
|
321
489
|
|
|
322
|
-
|
|
490
|
+
<img src="assets/separator.svg" width="100%" height="8" />
|
|
323
491
|
|
|
324
492
|
## License
|
|
325
493
|
|
|
326
494
|
[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.
|
|
327
495
|
|
|
328
|
-
<
|
|
329
|
-
|
|
330
|
-
|
|
496
|
+
<br/>
|
|
497
|
+
|
|
498
|
+
<div align="center">
|
|
499
|
+
<sub>Built by <a href="https://github.com/proxysoul">proxySoul</a></sub>
|
|
500
|
+
</div>
|