code-buddy · git:20260903.e24550e · 2026-09-03 · sha256 50eb72cf79040554

code-buddy git:20260903.e24550eA

Immutable. This exact content is served forever at /api/v1/blob/50eb72cf79040554.

---
name: code-buddy
description: Drive Code Buddy (the `buddy` multi-provider AI coding-agent CLI) from the command line — run it headless on a single prompt, pin it to a free local Ollama model or a paid one, edit files autonomously, start the HTTP/fleet server, and run the autonomous fleet loop. Use when the user wants to invoke, test, script, or automate the `buddy` CLI; run Code Buddy headlessly or inside another agent; run it on local/free models; start the server or multi-AI fleet; run autonomous coding tasks; or when working inside the code-buddy repo and needing to actually RUN the agent (not just edit its source). Triggers on "use buddy", "run code buddy", "buddy --prompt", "headless code buddy", "code buddy on ollama", "buddy autonomy/fleet/server".
---

# Using Code Buddy (`buddy`)

Code Buddy is an agentic coding CLI: given a prompt it reads files, calls tools, edits code, runs commands, and can act fully autonomously. This skill is about **operating** that CLI correctly — the non-obvious parts are provider/model selection and headless flags.

## 1. Find the entrypoint

There is no single `buddy` binary guaranteed on PATH. Resolve in this order:

```bash
command -v buddy                      # global install (npm i -g @phuetz/code-buddy, or `npm link` in the repo)
./node_modules/.bin/tsx src/index.ts  # dev, from the repo root (no build needed) ← default inside this repo
node dist/index.js                    # built (after `npm run build`)
```

Inside this repo `buddy` is usually NOT linked — use `./node_modules/.bin/tsx src/index.ts`.

## 2. Headless one-shot (the default for scripting/agents)

```bash
buddy -p "<prompt>" --output-format text     # process one prompt and exit (alias: --print)
buddy -p "<prompt>" --output-format json     # machine-readable result
```

Headless mode auto-approves operations. Exit code reflects success/failure. `--output-format json` is best when another program parses the result.

## 3. Pick provider + model — THE critical gotcha

Provider auto-detection order (first wins): `CODEBUDDY_PROVIDER` env → an active ChatGPT login (`~/.codebuddy/codex-auth.json`) → `OLLAMA_HOST` → API keys. **An active ChatGPT login overrides `OLLAMA_HOST`** — so setting `OLLAMA_HOST` alone is NOT enough to use a local model.

**To force a free local Ollama model, set `CODEBUDDY_PROVIDER=ollama` explicitly:**

```bash
CODEBUDDY_PROVIDER=ollama OLLAMA_HOST=http://localhost:11434 GROK_MODEL=qwen3.6:35b-a3b-q4_K_M \
  buddy -p "<prompt>" --permission-mode acceptEdits
```

- `GROK_MODEL` (or `--model <m>`) sets the model; `--base-url`/`GROK_BASE_URL` sets the endpoint.
- **For agentic work (editing files / tool calls) on local models, use `qwen3`+** — it emits structured tool calls. **`qwen2.5:7b` is chat-only** (it prints tool calls as text and can't edit). The helper `scripts/buddy-local.sh` bakes in these defaults.
- Paid/login models: omit `CODEBUDDY_PROVIDER`; `buddy login` (ChatGPT, $0 marginal) or set `GROK_API_KEY`/`OPENAI_API_KEY`/`ANTHROPIC_API_KEY`/`GEMINI_API_KEY`. Check with `buddy whoami`.

## 4. Permission & safety

`buddy` can edit files and run shell commands. Control the blast radius:

- `--permission-mode <mode>` — `default` | `plan` (read-only research) | `acceptEdits` (auto-apply edits) | `dontAsk` | `bypassPermissions`.
- `--yolo` — full autonomy (400 tool rounds, cost cap). Only with a contained workspace.
- `--allowedTools "<glob,...>"` / `--disallowedTools "<glob,...>"` — restrict the tool surface.
- Run risky autonomous prompts with `cwd` set to a throwaway/sandbox dir so the agent can't touch unintended files.

## 5. Common recipes

```bash
# Ask without mutating anything (research/plan only)
buddy -p "Explain how the fleet bridge wires peers" --permission-mode plan

# Make a focused code change headless on a paid model, JSON result
buddy -p "Add input validation to parseConfig and a test" --permission-mode acceptEdits -o json

# Same, free + local (tool-capable model), via the helper
scripts/buddy-local.sh "Implement slugify in slugify.mjs so node slugify.check.mjs exits 0"

# Golden-path workflows (WritePolicy.strict / apply_patch)
buddy dev plan "<goal>"          # writes PLAN.md, exit 1 if empty
buddy dev run -y --type fix-tests
buddy dev pr                     # title/body + gh or local origin push
buddy dev fix-ci --log ci.log    # do not omit --log on a non-TTY

# Diagnose the environment
buddy doctor
```

## 6. Server, fleet, and autonomous loop

```bash
buddy server --port 3000          # HTTP (3000) + Gateway WS (3001) — required for the multi-AI fleet
buddy autonomy run --watch        # continuous autonomous loop: claim + run colab tasks, free-first models
buddy autonomy install            # install it as an always-on systemd/launchd service
buddy colab status                # inspect the shared fleet task queue
buddy fleet status                # fleet routing + presence
```

A complete, runnable example of driving the **real agent autonomously over a task set** lives in the repo at `scripts/autonomy-lab/` (`tsx scripts/autonomy-lab/run.ts`).

## 7. Deeper reference

For the full command surface (50+ subcommands), every relevant flag, and detailed local-model setup, read **[references/cli-reference.md](references/cli-reference.md)**. Load it only when a needed command/flag is not covered above.