Skip to content
This repository was archived by the owner on Apr 19, 2026. It is now read-only.

Commit b37ce23

Browse files
jpleva91claude
andcommitted
feat: replace Aider/Crush with Goose as local model driver
Goose (block/goose) actually executes tools with local Ollama models. Rust binary, native Ollama provider, 33.7k stars. - shellforge run goose "prompt" β€” headless with --no-session - Setup wizard: brew install --cask block-goose - Status page: shows Goose - Site: updated everywhere - Supports MCP β€” path to AgentGuard governance integration Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d5f0b17 commit b37ce23

3 files changed

Lines changed: 30 additions & 29 deletions

File tree

β€Žcmd/shellforge/main.goβ€Ž

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ cmdReport(repo)
4747
case "run":
4848
if len(os.Args) < 3 {
4949
fmt.Fprintln(os.Stderr, "Usage: shellforge run <driver> \"prompt\"")
50-
fmt.Fprintln(os.Stderr, "Drivers: aider, claude, copilot, codex, gemini")
50+
fmt.Fprintln(os.Stderr, "Drivers: goose, claude, copilot, codex, gemini")
5151
os.Exit(1)
5252
}
5353
driver := os.Args[2]
@@ -272,22 +272,27 @@ fmt.Println()
272272
steps++
273273
fmt.Printf("── Step %d/%d: Agent drivers ──\n", steps, total)
274274

275-
// On Mac/GPU: offer Aider (local models via Ollama). On server: skip, show API drivers.
275+
// On Mac/GPU: offer Goose (local models via Ollama). On server: skip, show API drivers.
276276
if !isServer {
277-
if _, err := exec.LookPath("aider"); err != nil {
278-
fmt.Println(" Aider β€” AI coding agent with native Ollama support (local models)")
279-
fmt.Print(" Install Aider? [Y/n] ")
277+
if _, err := exec.LookPath("goose"); err != nil {
278+
fmt.Println(" Goose β€” AI agent with native Ollama support (actually executes tools)")
279+
fmt.Print(" Install Goose? [Y/n] ")
280280
if confirm(reader) {
281-
fmt.Println(" β†’ Installing Aider...")
282-
run("pip3", "install", "aider-chat")
283-
if _, err := exec.LookPath("aider"); err == nil {
284-
fmt.Println(" βœ“ Aider installed")
281+
fmt.Println(" β†’ Installing Goose...")
282+
if runtime.GOOS == "darwin" {
283+
run("brew", "install", "--cask", "block-goose")
284+
} else {
285+
run("sh", "-c", "curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash")
286+
}
287+
if _, err := exec.LookPath("goose"); err == nil {
288+
fmt.Println(" βœ“ Goose installed")
289+
fmt.Println(" β†’ Run 'goose configure' to set up Ollama provider")
285290
} else {
286-
fmt.Println(" ⚠ Install failed β€” try: pip3 install aider-chat")
291+
fmt.Println(" ⚠ Install failed β€” try: brew install --cask block-goose")
287292
}
288293
}
289294
} else {
290-
fmt.Println(" βœ“ Aider installed (local model driver)")
295+
fmt.Println(" βœ“ Goose installed (local model driver)")
291296
}
292297
}
293298

@@ -374,8 +379,8 @@ fmt.Println(" shellforge swarm # start Dagu dashboard")
374379
fmt.Println(" dagu start dags/multi-driver-swarm.yaml")
375380
} else {
376381
fmt.Println(" Quick start:")
377-
fmt.Println(" shellforge agent \"describe this project\"")
378-
fmt.Println(" shellforge run crush \"find test gaps\"")
382+
fmt.Println(" shellforge run goose \"describe this project\"")
383+
fmt.Println(" goose configure # set up Ollama if not done")
379384
fmt.Println()
380385
fmt.Println(" Run a swarm:")
381386
fmt.Println(" shellforge swarm # start Dagu dashboard")
@@ -496,14 +501,10 @@ var drivers = map[string]driverConfig{
496501
hasHooks: false,
497502
initHint: "agentguard gemini-init",
498503
},
499-
"aider": {
500-
binary: "aider",
504+
"goose": {
505+
binary: "goose",
501506
buildCmd: func(p string) []string {
502-
model := os.Getenv("OLLAMA_MODEL")
503-
if model == "" {
504-
model = ollama.Model
505-
}
506-
return []string{"--model", "ollama/" + model, "--yes-always", "--no-git", "--message", p}
507+
return []string{"run", "--no-session", "-t", p}
507508
},
508509
interactive: []string{},
509510
hasHooks: false,

β€Žcmd/shellforge/status.goβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func cmdStatusFull() {
6363
desc string
6464
install string
6565
}{
66-
{"aider", "aider", "AI coding agent with native Ollama support", "pip3 install aider-chat"},
66+
{"goose", "goose", "AI agent with native Ollama support (Block)", "brew install --cask block-goose"},
6767
{"claude", "claude", "Claude Code CLI", "npm i -g @anthropic-ai/claude-code"},
6868
{"copilot", "github-copilot-cli", "GitHub Copilot CLI", "gh extension install github/gh-copilot"},
6969
{"codex", "codex", "OpenAI Codex CLI", "npm i -g @openai/codex"},

β€Ždocs/index.htmlβ€Ž

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ <h1>
407407
Governed.
408408
</h1>
409409
<p>
410-
Govern any AI coding agent β€” local or cloud. One policy across Aider, Claude Code, Copilot, Codex, and Gemini.
410+
Govern any AI coding agent β€” local or cloud. One policy across Goose, Claude Code, Copilot, Codex, and Gemini.
411411
Mac with local models. Linux server with API drivers. Your rules, everywhere.
412412
</p>
413413
<div class="hero-badge">Open Source Β· MIT License Β· <strong>macOS Β· Linux Β· Any GPU</strong></div>
@@ -488,7 +488,7 @@ <h3>Memory-Optimized</h3>
488488
<div class="card">
489489
<div class="card-icon">πŸ”Œ</div>
490490
<h3>Multi-Driver Governance</h3>
491-
<p>Govern any CLI agent β€” <a href="https://github.com/paul-gauthier/aider">Aider</a> (local), Claude Code, Copilot CLI, Codex, Gemini. One governance policy across all drivers.</p>
491+
<p>Govern any CLI agent β€” <a href="https://github.com/Block/aider">Goose</a> (local), Claude Code, Copilot CLI, Codex, Gemini. One governance policy across all drivers.</p>
492492
</div>
493493
<div class="card">
494494
<div class="card-icon">πŸ”„</div>
@@ -531,7 +531,7 @@ <h2 class="section-title">Where AgentGuard Lives</h2>
531531
<div class="stack-connector">↓</div>
532532
<div class="stack-layer" style="border-color: var(--accent); background: rgba(255,107,43,0.03);">
533533
<span class="layer-tag">EXECUTE</span>
534-
<span class="layer-name">πŸ’» Aider β€” AI Coding Agent</span>
534+
<span class="layer-name">πŸ’» Goose β€” AI Coding Agent</span>
535535
<span class="layer-desc">Native Ollama support β€” reads, writes, edits, runs commands</span>
536536
</div>
537537
<div class="stack-connector">↓</div>
@@ -578,7 +578,7 @@ <h2 class="section-title">Governed Drivers</h2>
578578
</thead>
579579
<tbody>
580580
<tr>
581-
<td><strong>Aider</strong></td>
581+
<td><strong>Goose</strong></td>
582582
<td><code>shellforge run aider</code></td>
583583
<td>Local (Ollama)</td>
584584
<td><span class="tag tag-green">governed</span></td>
@@ -646,8 +646,8 @@ <h2 class="section-title">The Full Stack</h2>
646646
<div class="stack-connector">↓</div>
647647
<div class="stack-layer" style="border-color: var(--accent);">
648648
<span class="layer-tag" style="min-width: 80px;">EXECUTE</span>
649-
<span class="layer-name">πŸ’» Aider <span style="color:var(--muted);font-weight:400;font-size:0.85rem;">(paul-gauthier)</span></span>
650-
<span class="layer-desc">AI coding agent with native Ollama support β€” actually executes tools</span>
649+
<span class="layer-name">πŸ’» Goose <span style="color:var(--muted);font-weight:400;font-size:0.85rem;">(Block)</span></span>
650+
<span class="layer-desc">AI agent with native Ollama support β€” actually executes shell, files, git</span>
651651
</div>
652652
<div class="stack-connector">↓ agent wants to: write file, run shell, push git</div>
653653
<div class="stack-layer" style="border-color: var(--green); border-width: 2px; background: rgba(81,207,102,0.05);">
@@ -684,7 +684,7 @@ <h4>ShellForge</h4>
684684
</div>
685685
<div class="eco-card">
686686
<div class="eco-logo">πŸ’»</div>
687-
<h4>Aider</h4>
687+
<h4>Goose</h4>
688688
<p>AI coding agent<br><strong>Executes the work</strong></p>
689689
</div>
690690
<div class="eco-card">
@@ -715,7 +715,7 @@ <h4>OpenShell</h4>
715715
</div>
716716

717717
<p class="teaser-text">
718-
<strong>Aider</strong> executes. <strong>AgentGuard</strong> governs. <strong>Ollama</strong> infers.<br>
718+
<strong>Goose</strong> executes. <strong>AgentGuard</strong> governs. <strong>Ollama</strong> infers.<br>
719719
<strong>RTK</strong> compresses. <strong>Dagu</strong> orchestrates. <strong>OpenShell</strong> sandboxes.<br><br>
720720
All open source. All local. All on your Mac.<br><br>
721721
<em><a href="https://github.com/AgentGuardHQ/shellforge">Star the repo</a> to follow along.</em>

0 commit comments

Comments
Β (0)