Up to 5 tabs per project. Each is a fully independent workspace. Tabs are aware of each other, so parallel work does not collide, and git operations never capture partial changes.Documentation Index
Fetch the complete documentation index at: https://soulforge.proxysoul.com/llms.txt
Use this file to discover all available pages before exploring further.
Per-tab state
| What | Independent per tab |
|---|---|
| Active model | Yes (Ctrl+L inside the tab) |
| Forge mode | Yes (Ctrl+D: default, architect, socratic, challenge, plan, auto) |
| Session and messages | Yes |
| Checkpoint history | Yes (git tags namespaced by tab ID) |
| Agent dispatches and findings | Yes |
| Input history | Shared across tabs |
| Repo map, LSP, MCP | Shared across tabs (one per project) |
Tab awareness
Every tab knows:- Which other tabs are open, what they are named, and who is active.
- Which files are claimed by which tab.
- Whether another tab currently has agents dispatched.
File claims
A claim is created automatically the first time a tab touches a file withedit_file, multi_edit, rename_symbol, move_symbol, rename_file, refactor, or shell writes (sed, >, tee, etc).
Other tabs see the claim and get an advisory warning if their agent tries to edit the same file. Edits still go through (advisory, not blocking), but the agent is told another tab owns it and usually skips to avoid stomping.
Claims release automatically:
- 5 seconds after the tab finishes its current prompt.
- Immediately on
Ctrl+X(abort). - When the tab closes.
- After 5 minutes of inactivity (stale sweep).
Git is hard-blocked mid-dispatch
Git operations that modify the working tree (commit, stash, restore, branch switch) are blocked while another tab has active dispatch agents. This is the one hard gate: committing mid-dispatch in another tab would capture partial, half-written edits. Your changes stay intact.
The block is per-tab. A tab’s own agents do not block its own git. When blocked, the tool returns a terminal error so the agent stops retrying (no token-burning loops).
Contention handling
Ifedit_file fails with old_string not found AND the target file is claimed by another tab, SoulForge returns a terminal CONTENTION error instead of the normal retry-friendly error. The agent stops and surfaces the conflict to you instead of guessing.
Commands
Shortcuts
| Key | Action |
|---|---|
Ctrl+T | New tab |
Ctrl+W | Close tab |
Ctrl+[ / Ctrl+] | Previous / next tab |
Ctrl+1 through Ctrl+9 | Jump to tab N |
Tab / Shift+Tab | Cycle tabs (from the input) |

