open source mit built on opencode

The last mile of codegen.

Convoy builds, inspects, tests and commits a requested change through a defined pipeline. You review a branch — not a long agent session.

$ curl -fsSL https://github.com/Inakitajes/convoy/releases/latest/download/install.sh | sh
macOS & Linux · other options ↓
fig. 01 — the convoy
prd.md 01 implementer 02 patterns 03 security 04 design 05 tests 06 adversarial main 6 phases · 6 commits
~/your-repo — convoy --prompt-file prd.md
dir ~/your-repo
convoy 21:31:39 · 7:08 · $5.31
GPT 22% · resets 6d 13h
pipeline
6/6
  • implementer 1:47 $1.92
    gpt-5.6-terra#xhigh
  • patterns 0:58 $0.71
    gpt-5.6-terra#xhigh
  • security 1:12 $0.83
    gpt-5.6-terra#xhigh
  • design 0:44 $0.31
    z-ai/glm-5.2
  • tests 1:21 $0.96
    gpt-5.6-terra#xhigh
  • adversarial 1:06 $0.58
    z-ai/glm-5.2
adversarial
1 session 2 reports 3 logs top
adversarial · z-ai/glm-5.2 1:06 · $0.58
21:24:31 attempt 1/2 · openai/gpt-5.6-terra#xhigh
21:24:31 session ses_9f2…kzn
21:24:34 · reads prd.md + repo map
21:24:52 todos updated (1/5)
21:25:21 · edits 6 files under src/features/onboarding
21:25:48 todos updated (4/5)
21:26:11 report saved — reports/implementer.md
21:26:18 committed convoy(implementer): add onboarding flow
21:26:19 attempt 1/2 · openai/gpt-5.6-terra#xhigh
21:26:19 session ses_3hL…wWG
21:26:24 · refactor without behavior change
21:26:39 todos updated (2/3)
21:27:02 report saved — reports/patterns.md
21:27:17 committed convoy(patterns): align with repo patterns
21:27:18 attempt 1/2 · openai/gpt-5.6-terra#xhigh
21:27:18 session ses_7k1…Rdo
21:27:26 · audit: storage, injection, secret handling
21:27:41 finding: unsanitized payload persisted
21:27:58 todos updated (2/2)
21:28:24 report saved — reports/security.md
21:28:30 committed convoy(security): sanitize progress payload
21:28:31 attempt 1/1 · openrouter/z-ai/glm-5.2
21:28:31 session ses_m42…7fX
21:28:38 · polish ui to the repo design system
21:28:57 todos updated (3/3)
21:29:09 report saved — reports/design.md
21:29:15 committed convoy(design): polish onboarding ui
21:29:16 attempt 1/2 · openai/gpt-5.6-terra#xhigh
21:29:16 session ses_0a2…kzn
21:29:22 · unit + e2e coverage for onboarding
21:29:47 todos updated (2/4)
21:30:15 · 14 tests passing · 0 failing
21:30:31 report saved — reports/tests.md
21:30:37 committed convoy(tests): cover onboarding flow
21:30:38 attempt 1/1 · openrouter/z-ai/glm-5.2
21:30:38 session ses_x71…pQ2
21:30:45 · adversarial review of the full diff
21:31:02 · challenge: resume edge case — dismissed
21:31:21 report saved — reports/adversarial.md
21:31:44 no blocking findings — run complete
run complete — 6 phases · $5.31 · 7:08 · [o] open session · [q] quit

a live implementation run

nº 02 · $ convoy run implement

Six phases. One commit each.

The default pipeline builds, aligns, audits, polishes, tests and reviews the change.

  1. implementer

    Build the requested change.

  2. patterns

    Match the repository.

  3. security

    Check risky code.

  4. design

    Use the design system.

  5. tests

    Add relevant coverage.

  6. adversarial

    Review the final diff.

nº 03 · $ convoy explain controls

Set the workflow. Keep control.

Models, reviews and approvals are defined in the pipeline — not improvised in prompts.

models

Use any provider already authenticated in OpenCode. Set a default, agent or step model.

parallel review

Fan out audits read-only. Only triaged findings can change the branch.

yaml pipelines

Define steps, agents, models and human gates in .convoy/config.yaml.

built-ins

implement, refine and review are ready to run, with lite and multi-model variants.

permissions

Safe commands run. Unknown or blocked actions ask. --smart approves safe requests and escalates risk.

commit checks

A staged file that matches a common secret pattern stops the commit.

human gates

Pause any step until someone signs off, continues or aborts.

run history

Logs, diffs and reports stay local. Resume a failed run from its saved pipeline.

nº 04 · $ convoy convoy --help

CLI for runs. TUI for visibility.

Use a prompt file in CI, or watch the run live.

$ convoy — common commands
  • $ convoy --prompt-file prd.md # run the default pipeline
  • $ convoy -p review "pre-merge check" # get a report only
  • $ convoy --resume <run> # continue a failed run
dashboard
◆ convoy 21:29:21 · 5:17 · $4.27
GPT 22% · resets 6d 13h
pipeline
6/8
  • scope 1:20 $1.28
  • parallel ×3 3:55
  • clean-code ×2 3:55
  • gpt-5.6…#xhigh 3:55
  • opus-4.8 1:21 $0.9055
  • security ×2 2:42 $0.8026
  • bugs ×2 3:20 $1.28
  • report
parallel group

∴ parallel · 3 steps · 6 runs

1 running · 5 done

wall 3:55 · cost $2.99 · tokens ↑392.3k ↓27.3k

select a child row for full detail or OpenCode

1 session 2 reports 3 logs top
clean-code · gpt… 3:55
  • 21:28:01 todos updated (3/3)
  • 21:27:02 todos updated (0/3)
  • 21:26:03 · session ses_0a2…kzn
  • 21:25:04 · attempt 1/2 · openai
  • 21:24:05 · audit-only reviewer
clean-code · opus… 1:21 $0.9055
  • 21:28:01 report saved and closed
  • 21:27:02 session idle; collected
  • 21:26:03 · attempt 1/2 · anthropic
  • 21:25:04 · audit-only reviewer
  • 21:24:05 · no blocking findings
security · gpt… 2:42 $0.0000
  • 21:28:01 report saved and closed
  • 21:27:02 provider retry 1: passed
  • 21:26:03 · todos updated (3/3)
  • 21:25:04 · storage paths checked
  • 21:24:05 · session ses_0a2…7fX
[↑↓] node · [enter] read · [←→] tab · ctrl+c abort · shift+tab smart auto-accept

nº 05 · $ convoy init --global

Install. Then run.

latest release v0.5.0

One binary. Uses the providers already authenticated in OpenCode.

requires macOS or Linuxopencode auth logingit
$ curl -fsSL https://github.com/Inakitajes/convoy/releases/latest/download/install.sh | sh

Verifies SHA256SUMS, installs to ~/.local/bin and writes the default config.

rather not pipe a script into a shell?

Download the binary yourself — no checksum is verified on this path.

$ mkdir -p ~/.local/bin && curl -fL https://github.com/Inakitajes/convoy/releases/latest/download/convoy-darwin-arm64 -o ~/.local/bin/convoy && chmod 755 ~/.local/bin/convoy

Make sure ~/.local/bin is on your PATH, and check your download against SHA256SUMS.