# vigent — a vim-native orchestrator for your harnesses

Source: /

*vigent.txt* orchestrator for coding-agent harnesses MIT

```
██╗   ██╗██╗ ██████╗ ███████╗███╗   ██╗████████╗
██║   ██║██║██╔════╝ ██╔════╝████╗  ██║╚══██╔══╝
██║   ██║██║██║  ███╗█████╗  ██╔██╗ ██║   ██║
╚██╗ ██╔╝██║██║   ██║██╔══╝  ██║╚██╗██║   ██║
 ╚████╔╝ ██║╚██████╔╝███████╗██║ ╚████║   ██║
  ╚═══╝  ╚═╝ ╚═════╝ ╚══════╝╚═╝  ╚═══╝   ╚═╝
```

vim native harness orchestrator

# Run every coding agent at once, each in its own worktree.

Claude Code, Codex, OpenCode, Gemini CLI, Cursor CLI and pi are harnesses: each runs its own agent loop with its own login. vigent runs yours side by side. Every agent gets a copy-on-write worktree from [riftri](https://riftri.dev), so ten agents on a big repo cost almost no disk, and none of them touch your checkout until you [|:merge|](/docs#review).

npm i -g @vigent/cli yy copy then vigent . read the docs →

your agents

Claude Code · Codex · OpenCode, your logins

1 worktree each

own branch, own files, live +/− counts

copy-on-write

APFS · Btrfs · XFS · OverlayFS · ReFS

vigent — ~/code/shop gruvbox ▾

```
SESSIONS       2 running      │ ▸ fix-flaky-test  Claude Code · opus · high · riftri
  1 ├ ● auth-refactor          │ 
  │   refactor/auth +41 -18    │ ❯ the checkout test fails about one run in ten
  2 └ ● fix-flaky-test         │ 
      fix/flaky-test +6 -2     │ It waits a fixed 50ms for the queue to drain. I'll
                               │ wait on the queue's drain event instead.
                               │  ▸ Edit test/checkout.test.ts
 ENGINES              3/4      │  ▸ Bash npm test -- checkout --repeat 50
  ● Claude Code   default      │ 
  ● Codex                      │ 50 of 50 passed. Ready for :diff.
 NORMAL  fix-flaky-test  fix/flaky-testopus · high  31.2k tok
```

## 1. Install[*vigent-install*](/docs#start)

npm i -g @vigent/cli " Node 20+, macOS, Linux, Windows

cd your-repo && vigent .

riftri comes with it. Press i, type a task, Enter: the first agent starts in its own worktree. |vigent-docs| has the rest.

## 2. Worktrees, fast[*vigent-riftri*](/docs#riftri)

A plain worktree is a full copy of your checkout. riftri makes each agent's worktree a real git linked worktree whose unchanged files share storage, so a new agent costs almost nothing and only the files it changes take space.

```
shop/                         your checkout, untouched
shop-worktrees/
├── fix-flaky-test/           fix/flaky-test   shares unchanged files
├── auth-refactor/            refactor/auth    shares unchanged files
└── docs-pass/                docs/pass        shares unchanged files
```

Agents survive a restart. Removing one goes through git's safety checks, so uncommitted work is never thrown away. Review, then land it:

:diffwhat the agent changed, hunk by hunk

:mergesquash it into your branch as one commit

:pror push the branch and open a pull request

worktrees, riftri and landing work → |vigent-worktrees|

## 3. Engines[*vigent-engines*](/docs#engines)

vigent isn't a harness itself. The harnesses are the ones you already use: each calls its model and runs its tools with its own login, and vigent starts them, shows what they do and lands their work. It never reads their credentials.

Claude Codeyour installed CLI, signed in as usual

Codexyour installed CLI, with its own model list

OpenCodeyour installed CLI and its providers

Gemini CLIyour installed CLI, signed in with Google or a key

Cursor CLIyour installed cursor-agent

piyour installed pi, with its keys or login

Pick with |:engine|, or give one agent its own:

:new fix the flaky test --engine codex

signing in, auto, per-agent engines → |vigent-engines|

## 4. Keys[*vigent-keys*](/docs#keys)

If you know Neovim, you already know most of it.

inew agent: type a task, Enter

]s [s <Space>1–9switch agents

<Space>Epick the engine

<Space>Mpick the model

<Space>esessions sidebar: j/k pick an agent

<Space>Rreasoning effort

/patternsearch the transcript as you type · n/N next/prev

yy yibcopy the last reply / a code block

?every key, yours first

every key and command → |vigent-keys|

## 5. Themes[*vigent-themes*](/docs#themes)

28 colorschemes built in (three with layouts of their own), any Vim or Neovim theme imports, and Nerd Font icons like AstroNvim. Or follow the theme your Neovim config sets: >

theme = "nvim"

<

Try them on vigent above: move the cursor to the line below and press Enter (or t anywhere), then j/k to preview and Enter to keep. Or click one.

default gruvbox tokyonight tokyonight-moon lazyvim catppuccin catppuccin-latte nord rose-pine kanagawa catppuccin-frappe catppuccin-macchiato tokyonight-storm rose-pine-moon rose-pine-dawn dracula onedark everforest nightfox solarized-dark solarized-light github-dark github-light monokai-pro ayu-mirage

importing your Neovim theme, icons → |vigent-themes|

vim:tw=78:ts=8:ft=help:norl:
