Vibe coded AI Neovim is useful

s2xon1 pts0 comments

GitHub - s2xon/aeovim: aeovim instead if neovim · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

s2xon

aeovim

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>30 Commits<br>30 Commits

src

src

.gitignore

.gitignore

Cargo.lock

Cargo.lock

Cargo.toml

Cargo.toml

DESIGN.md

DESIGN.md

IMPLEMENTATION_PLAN.md

IMPLEMENTATION_PLAN.md

INTEGRATION.md

INTEGRATION.md

README.md

README.md

View all files

Repository files navigation

aeovim

vim, but the buffers are live coding agents and the operators drive them.

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.

The project is aeovim ; the command you run is avim (like Neovim → nvim).

v1 wraps the claude CLI (Claude Code) as child processes over headless stream-json. 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 seam so other models/CLIs (or a direct API) can drop in later. Single-user, local macOS daily driver. Not distributed.

Status

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.

What works today

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 over --output-format stream-json; multi-turn continuity via --session-id then --resume.

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 focus panes ↔ sidebar, Tab / H / L cycle chats, Space 1-0 jump 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/.json; relaunch resumes.

Inter-agent pipe: a FIFO (~/.local/state/aeovim/.pipe) 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); --safe switches to --permission-mode acceptEdits.

Designed, not yet built

Parallel fan-out of one prompt to N agents, each isolated in its own git worktree, as a first-class job .

A quickfix-style task board with done / needs-input / error status.

aeovim-owned loop scheduler and a skills palette .

Vim-native diff review : ]c / [c hunk motions, visual-select, per-turn git approve/reject on an apply baseline.

Tree-sitter syntax highlighting (code rendering only).

Persistent bidirectional child for in-TUI permission approval, interrupt (Esc), and mid-turn steering. (Today's one-child-per-turn model rules these out by design — see INTEGRATION.md.)

Install & run

# pick the Claude model<br>avim --help # flags + key reference">cargo install --path . # builds the `avim` binary into ~/.cargo/bin<br>avim # launch (dangerous permissions by default)<br>avim --safe # --permission-mode acceptEdits instead<br>avim --model name> # pick the Claude model<br>avim --help # flags + key reference

Sessions persist...

aeovim claude space avim code cargo

Related Articles