{"slug": "vibe-coded-ai-neovim-is-useful", "title": "Vibe coded AI Neovim is useful", "summary": "A developer has released aeovim, a Rust-based TUI that applies Neovim's modal editing model to orchestrate multiple LLM coding agents, wrapping Claude Code as child processes. The tool, already in daily use, enables users to spawn, steer, and review multiple AI agents simultaneously through keyboard-native navigation, with planned features for parallel fan-out and diff review.", "body_md": "*vim, but the buffers are live coding agents and the operators drive them.*\n\n**aeovim** is a standalone, keyboard-native Rust TUI for multiplexing and orchestrating LLM coding agents. It applies the Neovim mental model — modes, motions, buffers, tabs, splits — to conversations with coding agents, so spawning, steering, watching, and reviewing many agents at once is muscle memory rather than window juggling.\n\nThe project is **aeovim**; the command you run is ** avim** (like Neovim →\n\n`nvim`\n\n).v1 wraps the `claude`\n\nCLI (Claude Code) as child processes over headless `stream-json`\n\n. It reuses Claude Code's own auth, tools, permissions, skills, and MCP servers — it doesn't re-implement any of that. All backend detail sits behind an `AgentBackend`\n\nseam so other models/CLIs (or a direct API) can drop in later. Single-user, local macOS daily driver. Not distributed.\n\n**Working walking skeleton — installable and in daily use.** ~3,200 lines of Rust across seven modules; builds, installs, and drives real multi-turn Claude Code sessions. This is well past the \"pre-implementation\" the earlier README claimed. The orchestration layer (fan-out, job board, diff review) is designed but not yet built — see the split below.\n\n**Modal TUI** with a Space-leader keymap + which-key popup, ported from the author's Neovim config (nvim-tree / harpoon / bufferline / lualine / which-key). Lilac theme.**Two-level model:** a**Space** is a named container of 1–4**Chats**. The sidebar lists Spaces; the active Space renders its Chats as split panes (single / vertical / horizontal / 2×2), focused pane bordered in bright purple.**Live Claude Code sessions:** each Chat spawns`claude`\n\nover`--output-format stream-json`\n\n; multi-turn continuity via`--session-id`\n\nthen`--resume`\n\n.**Streaming transcript:** assistant messages, a thinking spinner, and Claude-style tool-call / tool-result rendering; slash-command popup; inline markdown; mode indicator; powerline status bar.**Navigation:**`Ctrl-hjkl`\n\nfocus panes ↔ sidebar,`Tab`\n\n/`H`\n\n/`L`\n\ncycle chats,`Space 1-0`\n\njump to a Space, sidebar add / rename / delete.**Space ops:** merge multiple Spaces (chats combined, ≤4), pop a chat into its own Space, split management.**Persistence:** Spaces (name + chats) saved per tmux session at`~/.local/state/aeovim/<session>.json`\n\n; relaunch resumes.**Inter-agent pipe:** a FIFO (`~/.local/state/aeovim/<key>.pipe`\n\n) lets one agent message another Space; a reader thread routes it into the target chat's transcript and the agent responds.**Permissions:** dangerous by default (`--dangerously-skip-permissions`\n\n);`--safe`\n\nswitches to`--permission-mode acceptEdits`\n\n.\n\n- Parallel fan-out of one prompt to N agents, each isolated in its own git worktree, as a first-class\n**job**. - A quickfix-style\n**task board** with done / needs-input / error status. - aeovim-owned\n**loop scheduler** and a**skills palette**. - Vim-native\n**diff review**:`]c`\n\n/`[c`\n\nhunk motions, visual-select, per-turn git approve/reject on an apply baseline. - Tree-sitter syntax highlighting (code rendering only).\n- Persistent bidirectional child for in-TUI permission approval, interrupt (\n`Esc`\n\n), and mid-turn steering. (Today's one-child-per-turn model rules these out by design — see INTEGRATION.md.)\n\n```\ncargo install --path .        # builds the `avim` binary into ~/.cargo/bin\navim                          # launch (dangerous permissions by default)\navim --safe                   # --permission-mode acceptEdits instead\navim --model <name>           # pick the Claude model\navim --help                   # flags + key reference\n```\n\nSessions persist per tmux session; relaunch `avim`\n\nto resume where you left off.\n\nThe keymap mirrors the author's Neovim config and is still moving. The authoritative, in-app reference is ** Space zz** (cheatsheet);\n\n`avim --help`\n\nprints the current summary. The stable essentials:| Key | Action |\n|---|---|\n`i` / `Esc` |\ncompose / normal mode |\n`Enter` |\nsend (in composer) |\n`Ctrl-h` / `Ctrl-l` |\nfocus sidebar / chat panes |\n`H` / `L` / `Tab` |\nprevious / next chat |\n`Space e` |\ntoggle sidebar |\n`Space 1` –`0` |\njump to Space N |\n`:` |\ncommand |\n`Space zz` |\ncheatsheet · `q` quit |\n\n[DESIGN.md](/s2xon/aeovim/blob/main/DESIGN.md)— full design spec (UX model, architecture, orchestration, adapter seam, diff review).[IMPLEMENTATION_PLAN.md](/s2xon/aeovim/blob/main/IMPLEMENTATION_PLAN.md)— milestone ladder and build plan.[INTEGRATION.md](/s2xon/aeovim/blob/main/INTEGRATION.md)— Claude Code integration research: what the stream already emits, what to parse next, and the persistent-child milestone that unlocks in-TUI approval/interrupt.", "url": "https://wpnews.pro/news/vibe-coded-ai-neovim-is-useful", "canonical_source": "https://github.com/s2xon/aeovim", "published_at": "2026-07-10 16:36:21+00:00", "updated_at": "2026-07-10 17:05:36.609683+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "large-language-models", "ai-agents"], "entities": ["aeovim", "Claude Code", "Neovim", "Rust"], "alternates": {"html": "https://wpnews.pro/news/vibe-coded-ai-neovim-is-useful", "markdown": "https://wpnews.pro/news/vibe-coded-ai-neovim-is-useful.md", "text": "https://wpnews.pro/news/vibe-coded-ai-neovim-is-useful.txt", "jsonld": "https://wpnews.pro/news/vibe-coded-ai-neovim-is-useful.jsonld"}}