@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.
Files changed (3) hide show
  1. package/README.md +337 -167
  2. package/dist/index.js +672 -656
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,103 +1,242 @@
1
- <p align="center">
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
- <h1 align="center">SoulForge</h1>
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
- <p align="center">
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
- <p align="center">
13
- <a href="https://www.npmjs.com/package/@proxysoul/soulforge"><img src="https://img.shields.io/npm/v/@proxysoul/soulforge?label=version&color=brightgreen" alt="Version" /></a>
14
- <a href="LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-blue.svg" alt="License" /></a>
15
- <a href="https://github.com/ProxySoul/soulforge/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/ci.yml?label=CI" alt="CI" /></a>
16
- <a href="https://github.com/ProxySoul/soulforge/actions/workflows/playground.yml"><img src="https://img.shields.io/github/actions/workflow/status/ProxySoul/soulforge/headless-forge.yml?label=Soul" alt="Headless Forge" /></a>
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>&nbsp;
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>&nbsp;
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>&nbsp;
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>&nbsp;
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>&nbsp;
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
- <p align="center">
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
- ## Table of Contents
24
+ <br/>
29
25
 
30
- - [Why SoulForge?](#why-soulforge)
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
- ## Why SoulForge?
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
- SoulForge doesn't work that way. On startup, it builds a **live dependency graph** of your entire codebase. Every file, symbol, import, and export, ranked by importance, enriched with git history, updated in real-time as files change. The agent already knows which files matter, what depends on what, and how far an edit will ripple. It doesn't need to explore. It just starts working.
32
+ ## Why SoulForge?
48
33
 
49
- ### How SoulForge saves you 30-50% on API costs & in less time
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
- | **[Live Soul Map](docs/repo-map.md)** | A SQLite-backed graph of every file, symbol, import, and export — ranked by PageRank, enriched with git co-change history, updated in real-time. The agent already knows where everything lives and how far an edit will ripple. No wasted tokens orienting itself. |
54
- | **[Surgical reads](docs/architecture.md)** | Instead of reading entire files, the agent extracts exactly the function or class it needs by name via a 4-tier intelligence chain (LSP → ts-morph → tree-sitter → regex) across 30 languages. A 500-line file becomes a 20-line symbol extraction. |
55
- | **[Zero-cost compaction](docs/compaction.md)** | State extraction runs as the conversation happens: files touched, decisions made, errors hit. When context gets long, it compacts instantly from this pre-built state. No LLM call, no latency, no cost. |
56
- | **[Multi-agent dispatch](docs/agent-bus.md)** | Parallelize work across explore, code, and web search agents. The first agent to read a large file caches it — others get a compact stub with symbol names and line ranges. Edit coordination prevents conflicts. |
57
- | **[Multi-tab coordination](docs/cross-tab-coordination.md)** | Run concurrent sessions with different models and modes per tab. Agents see what other tabs are editing, get warnings on contested files, and git operations coordinate automatically. |
58
- | **[Compound tools](docs/compound-tools.md)** | `read` batches files in parallel with surgical extraction. `multi_edit` applies changes atomically. `rename_symbol`, `move_symbol`, `rename_file` are compiler-guaranteed and cross-file. `project` auto-detects lint/test/build across 23 ecosystems. |
59
- | **Mix-and-match models** | You choose which model handles which job. Put Opus on planning, Sonnet on coding, Haiku on search and cleanup. Or use one model for everything. The task router gives you full control. |
60
- | **Prompt caching** | The Soul Map is stable across turns, so it stays cached. On Anthropic, that means the bulk of the system prompt costs a fraction of what it would otherwise. |
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
- ### And also
126
+ </details>
63
127
 
64
- - **Lock-in mode.** Hides agent narration during work, shows only tool activity and the final answer. Toggle via `/lock-in` or config.
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
- <p align="center">
74
- <img src="assets/main-2.png" alt="SoulForge — Multi-Agent Dispatch" width="900" />
75
- </p>
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
- | | SoulForge | Claude Code | Copilot CLI | Codex CLI | Aider |
82
- |---|---|---|---|---|---|
83
- | **Codebase awareness** | Live SQLite graph: PageRank, blast radius, cochange, clone detection, FTS5, unused exports | None (file reads + grep) | None | None (MCP plugins) | Tree-sitter repo map + PageRank |
84
- | **Cost optimization** | Soul Map + surgical reads + zero-cost compaction + shared agent cache + mix-and-match models + prompt caching | Auto-compaction | Context window management | Server-side compaction | — |
85
- | **Code intelligence** | 4-tier fallback: LSP → ts-morph → tree-sitter → regex. Dual LSP. 30 languages | LSP via plugins (no fallback chain) | LSP (VS Code) | MCP-based LSP | Tree-sitter AST |
86
- | **Multi-agent** | Parallel dispatch with shared file/tool cache and edit coordination | Subagents + Agent Teams | Subagents + Fleet | Multi-agent v2 | Single agent |
87
- | **Multi-tab** | Concurrent tabs with per-tab models, file claim awareness, cross-tab git coordination | — | — | — | — |
88
- | **Task routing** | Per-task model assignment (spark, ember, web search, verify, desloppify, compact) | Single model | Single model | Per-agent model | Single model |
89
- | **Compound tools** | `read` (batch + surgical), `multi_edit` (atomic), `rename_symbol`, `move_symbol`, `rename_file`, `refactor`, `project` | Rename via LSP | — | — | — |
90
- | **Editor** | Embedded Neovim (your config, your plugins) | No editor | No editor | No editor | No editor |
91
- | **Providers** | 18 + custom OpenAI-compatible | Anthropic only | Multi-model | OpenAI only | 100+ LLMs |
92
- | **License** | BSL 1.1 (source-available) | Proprietary | Proprietary | Apache 2.0 | Apache 2.0 |
93
-
94
- > *Competitor features verified as of March 29, 2026. [Let us know](https://github.com/ProxySoul/soulforge/issues) if something's changed.*
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. SoulForge checks for prerequisites on first launch and offers to install Neovim and Nerd Fonts if missing.
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 install)</strong></summary>
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 [GitHub Releases](https://github.com/ProxySoul/soulforge/releases/latest), extract, and run the installer:
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 everything: Neovim 0.11, ripgrep, fd, lazygit, tree-sitter grammars, Nerd Font symbols. No system dependencies.
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 without AVX)
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 # Launch, pick a model with Ctrl+L
168
- soulforge --set-key anthropic sk-ant-... # Save a key
169
- soulforge --headless "your prompt here" # Non-interactive mode
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 # Launch TUI
180
- soulforge --headless "prompt" # Stream to stdout
181
- soulforge --headless --json "prompt" # Structured JSON output
182
- soulforge --headless --chat # Interactive multi-turn
183
- soulforge --headless --model provider/model # Override model
184
- soulforge --headless --mode architect # Read-only analysis
185
- soulforge --headless --diff "fix the bug" # Show changed files
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
- | Mode | Description |
189
- |------|-------------|
190
- | `default` | Full agent with all tools |
191
- | `auto` | Executes immediately, no questions |
192
- | `architect` | Read-only analysis and review |
193
- | `socratic` | Guided learning through questions |
194
- | `challenge` | Pushes back on your assumptions |
195
- | `plan` | Planning mode, no code changes |
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
- | Provider | Setup |
204
- |----------|-------|
205
- | [**LLM Gateway**](https://llmgateway.io/?ref=6tjJR2H3X4E9RmVQiQwK) | `LLM_GATEWAY_API_KEY` |
206
- | [**Anthropic**](https://console.anthropic.com/) | `ANTHROPIC_API_KEY` |
207
- | [**OpenAI**](https://platform.openai.com/) | `OPENAI_API_KEY` |
208
- | [**Google**](https://aistudio.google.com/) | `GOOGLE_GENERATIVE_AI_API_KEY` |
209
- | [**xAI**](https://console.x.ai/) | `XAI_API_KEY` |
210
- | [**Groq**](https://console.groq.com/) | `GROQ_API_KEY` |
211
- | [**DeepSeek**](https://platform.deepseek.com/) | `DEEPSEEK_API_KEY` |
212
- | [**Mistral**](https://console.mistral.ai/) | `MISTRAL_API_KEY` |
213
- | [**Amazon Bedrock**](https://aws.amazon.com/bedrock/) | `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` + `AWS_REGION` |
214
- | [**Fireworks**](https://fireworks.ai/) | `FIREWORKS_API_KEY` |
215
- | [**GitHub Copilot**](https://github.com/features/copilot) | OAuth token from IDE ([setup](docs/copilot-provider.md)) |
216
- | [**GitHub Models**](https://github.com/marketplace/models) | `GITHUB_MODELS_API_KEY` (PAT with `models:read`) |
217
- | [**Ollama**](https://ollama.ai) | Auto-detected |
218
- | [**LM Studio**](https://lmstudio.ai) | Auto-detected |
219
- | [**OpenRouter**](https://openrouter.ai) | `OPENROUTER_API_KEY` |
220
- | [**Vercel AI Gateway**](https://vercel.com/ai-gateway) | `AI_GATEWAY_API_KEY` |
221
- | [**Proxy**](https://github.com/router-for-me/CLIProxyAPI) | `PROXY_API_KEY` |
222
- | **Custom** | Any OpenAI-compatible API |
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
- **Amazon Bedrock**: Uses AWS IAM credentials — set `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_REGION` (defaults to `us-east-1`). Supports `AWS_SESSION_TOKEN` for temporary credentials.
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 Copilot**: Sign in via your IDE (VS Code, JetBrains), copy `oauth_token` from `~/.config/github-copilot/apps.json`, save with `/keys` or `--set-key copilot`. [Full setup guide](docs/copilot-provider.md).
382
+ **GitHub Models**: free playground API, per-token billing. Fine-grained PAT with `models:read`. Lower rate limits than Copilot.
227
383
 
228
- **GitHub Models**: Free playground API with per-token billing. Create a fine-grained PAT with `models:read` scope. Lower rate limits than Copilot.
384
+ **Ollama**: auto-detected at `localhost:11434`. Override with `OLLAMA_HOST`.
229
385
 
230
- **Ollama**: Auto-detected at `localhost:11434`. Override with `OLLAMA_HOST=http://host:port`.
386
+ **LM Studio**: auto-detected at `localhost:1234`. Override with `LM_STUDIO_URL`. Optional auth via `LM_API_TOKEN`.
231
387
 
232
- **LM Studio**: Auto-detected at `localhost:1234`. Uses the [REST API v0](https://lmstudio.ai/docs/developer/rest/endpoints) for rich model data (context length, type filtering). Override with `LM_STUDIO_URL=http://host:port`. Optional auth: set `LM_API_TOKEN` if you've enabled authentication in LM Studio.
388
+ </details>
233
389
 
234
- Add custom providers in config, no code changes:
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) · [Provider options](docs/provider-options.md)
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
- **Project instructions:** Drop a `SOULFORGE.md` in your project root with conventions, architecture notes, preferences. Also supports `CLAUDE.md`, `.cursorrules`, `AGENTS.md`, and others. Toggle via `/instructions`.
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
- | [Architecture](docs/architecture.md) | System overview, intelligence router, agent system, tool design |
283
- | [Repo Map](docs/repo-map.md) | PageRank, cochange, blast radius, clone detection, language support |
284
- | [Agent Bus](docs/agent-bus.md) | Multi-agent coordination, shared cache, edit ownership |
285
- | [Compaction](docs/compaction.md) | V1/V2 context management, working state extraction |
286
- | [Compound Tools](docs/compound-tools.md) | read, multi_edit, rename_symbol, move_symbol, refactor, project |
287
- | [Project Tool](docs/project-tool.md) | 23 ecosystems, pre-commit checks, monorepo discovery |
288
- | [Headless Mode](docs/headless.md) | CLI flags, JSON/JSONL output, CI/CD integration |
289
- | [Commands](docs/commands-reference.md) | All 86 slash commands |
290
- | [Steering](docs/steering.md) | Mid-stream user input |
291
- | [Provider Options](docs/provider-options.md) | Thinking modes, context management |
292
- | [Copilot Provider](docs/copilot-provider.md) | Setup, legal review |
293
- | [Cross-Tab Coordination](docs/cross-tab-coordination.md) | Multi-tab file claims, git coordination |
294
- | [Themes](docs/themes.md) | 24 themes, custom themes, hot reload |
295
- | [Prompt System](docs/prompt-system.md) | Per-family prompts, mode overlays |
296
- | [Getting Started](GETTING_STARTED.md) | First launch walkthrough |
297
- | [Contributing](CONTRIBUTING.md) | Dev setup, PR guidelines |
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
- The intelligence layer is being extracted into reusable packages:
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
- **In progress:** MCP support · repo map visualization · GitHub CLI integration · dispatch worktrees · [ACP support](https://agentclientprotocol.com/)
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
- **Planned:** monorepo graph support · benchmarks · orchestrated workflows (planner → TDD → reviewer → security)
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 &gt; TDD &gt; reviewer &gt; 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)**: tree-sitter repo maps with PageRank. SoulForge adds cochange analysis, blast radius, clone detection, and live updates.
318
- - **[Everything Claude Code](https://github.com/affaan-m/everything-claude-code)**: enforce behavior with code, not prompts. Our schema validation, pre-commit gates, and auto-enrichment patterns come from this thinking.
319
- - **[Vercel AI SDK](https://sdk.vercel.ai)**: the multi-provider abstraction that makes 12 providers possible.
320
- - **[Neovim](https://neovim.io)**: embedded via msgpack-RPC. Your config and muscle memory shouldn't be a compromise.
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
- <p align="center">
329
- <sub>Built with care by <a href="https://github.com/proxysoul">proxySoul</a></sub>
330
- </p>
496
+ <br/>
497
+
498
+ <div align="center">
499
+ <sub>Built by <a href="https://github.com/proxysoul">proxySoul</a></sub>
500
+ </div>