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...