# neovim-ide: the GIGACHAD of NvChad is a tmux layout (ollama ASCII, cursor-agent reality)

Source: https://www.michaelchurley.com/blog/neovim-ide-tmux-gigachad-layout-cursor-agent  
Published: 2026-06-22  
Author: Michael C. Hurley  
Tags: neovim-ide, neovim, nvim, tmux, nvchad, zsh, cursor-agent, lazygit, ink, bun, ide-layout, michaelmonetized

![tmux IDE grid: Agent | Neovim | Tasks/Git + Console/Terminal](/blog/neovim-ide-tmux-gigachad-layout-cursor-agent/screenshots/layout-ascii.png)

## Who

I wanted a **project IDE** without buying another Electron shell: open a folder, get Neovim in the middle, and already have an agent, Taskwarrior, LazyGit, and spare shells in panes around it.

If you live in tmux + NvChad, you already know the ritual: split, title, send-keys, forget which pane had lazygit. I wanted that ritual to be one command.

This is the **outer** layout story. The sibling **nvibe** pack is the **inner** Neovim one (Lua + `nvchad.term`). Different repos. Different layers. Same operator itch.

## What

I keep [michaelmonetized/neovim-ide](https://github.com/michaelmonetized/neovim-ide) public. GitHub linguist says JavaScript. The product that actually lays out panes is **~7.5 KB of zsh** under `src/`.

`src/neovim-ide.sh` is the entry: sanitize a session name from argv, basename, or `.neovim` JSON `.name` via `jq`; offer attach/rename if the session exists; `tmux new -s` detached; `cd` into the project; then fire `~/.local/bin/nvide-layout` and `~/.local/bin/nvide-init`.

The banner at the top of that file still draws the intended grid:

```
- ollama -|- nvim ---------------------|- Tasks -
- ChtSh - |                            |- Git ---
          |- Console ----|- Terminal - |
```

`src/neovim-ide-layout.sh` splits and titles panes: Agent, Cheatsheet, Neovim, Tasks, Git, Console, Terminal. It aliases `tmux` to **`/opt/homebrew/bin/tmux`** (Homebrew-shaped, not portable).

`src/neovim-ide-init.sh` is where the honesty check bites: it `send-keys` **`cursor-agent`** into the Agent pane (banner still says ollama), starts `nvim` on pane 2, `task list && tasksh` on Tasks, `lazygit` on Git when `.git` exists, then sleeps and punches `:Minimap` + `C-n` for nvim-tree.

![MIT vs GPL-3.0 vs ISC](/blog/neovim-ide-tmux-gigachad-layout-cursor-agent/screenshots/license-gap.png)

License stack at HEAD `38ed773`:

- README footer + script header: **MIT**
- `LICENSE.md`: full **GNU GPL v3** text (GitHub `licenseInfo` agrees)
- `ts/package.json`: **`"license": "ISC"`**, version **1.0.0**

`install.sh` is **0 bytes**. README still says it moves `src/` to `~/bin/`, config to `~/.config/neovim-ide/`, and links `nvide-*` into `~/.local/bin`. Without that, the entry script's `nvide-layout` / `nvide-init` calls are wishful.

TypeScript side: `ts/cli.tsx` is an Ink path wizard (123 lines). It can `mkdir` or `execa('mkproject', …)`. It never calls `tmux`. On success it prints Project path ready and exits. `ts/neovim-ide.mjs` is a **1.7MB** React/Ink-style bundle. `ts/REVIEW.md` is a FALLOW dump over that bundle (Total LOC 39772, Dead Files 100%, CRAP scores in the tens of thousands on React internals). About **4095** tracked paths live under `ts/node_modules/`; only **29** tracked files sit outside it.

`PLAN.md` (Jan 2026) lists Critical Core IDE Features (LSP, nvim-cmp, Treesitter, neo-tree, Telescope) as if this repo were a Neovim config. It is not. `sitrep.md` says Status **SHIPPED**, stack Shell, Lua, last commit **2026-01-31**, Fully functional. HEAD is a June 22 nightly.

![docs vs shipped: PLAN / install / CLI](/blog/neovim-ide-tmux-gigachad-layout-cursor-agent/screenshots/docs-vs-shipped.png)

`src/neovim-ide-tmux.sh` is the fzf project picker over `$HOME/Projects/` with a shebang typo: `#1/usr/bin/env zsh`. Config default: `ide_project_path="$HOME/Projects/"`.

## Where

Code: [github.com/michaelmonetized/neovim-ide](https://github.com/michaelmonetized/neovim-ide), **public**. Stars: 0. No homepage URL. No hosted demo.

Runtime expectations from the tree/header: tmux, jq, mkproject, lazygit, ollama (still listed), tasksh, Neovim 0.9+ / NvChad, optional minimap + nvim-tree. Bun only if you insist on the Ink CLI.

Screenshots section in README is still a TODO stub.

## When

- **2024-08-25–28.** `2b79f59` mkproject scaffold, then `57e0164` initial commit, then `.neovim` session-name support (`f159d67`, retrievin), then `5290d69` tmux support. Four commits; the shell layout product lands.
- **2026-01-08.** `d81f21b` PLAN.md improvement opportunities (LSP wishlist).
- **2026-01-31.** `52f0e4a` chore sync (sitrep still points here).
- **2026-02-27.** `915f5d6` README install instructions + structure (still describing empty `install.sh`).
- **2026-06-22.** `2976b7e` / HEAD `38ed773` nightlies. Last push `2026-06-22T21:56:52Z`. **9** commits total.

![9-commit arc](/blog/neovim-ide-tmux-gigachad-layout-cursor-agent/screenshots/commit-arc.png)

## Why

My IDE was already panes I pay for: tmux, nvim, lazygit, an agent CLI. I wanted one command that refuses to start a project session half-empty. Keep the diary honest: the ASCII still says ollama while init starts cursor-agent; the license badges disagree; the installer file is empty; the Ink CLI is a path form, not a launcher; PLAN.md dreams of an LSP IDE this repo is not. Leave those in the draft next to the GIGACHAD one-liner.

**Engagement Q:** Would you trust a GIGACHAD of NvChad launcher whose banner still says **ollama**, whose init starts **cursor-agent**, whose README says **MIT** while `LICENSE.md` is **GPL-3.0**, and do you want that layout **outside** Neovim in tmux, or **inside** via something like nvibe?
