Skip to content

Invar — a terminal IDE built on ivue

Invar is ivue at full scale: a complete terminal IDE — editor, file tree, workspace search, find/replace, git, tasks, terminals, LSP, and agent integration — built entirely on ivue classes, running under Bun in a terminal with no DOM and no Vue components. The same Reactive() and Static() that drive the browser examples on this site drive every keystroke of it; only the paint target changed.

Invar is an alpha, experimental project — a proving ground for ivue beyond the web, and an experiment in agentic development: AI agents wrote almost all of it, using the ivue skill as their base discipline, with every module governed by explicit invariant contracts and a merge gate that enforces them. The story of how that worked is a series on the blog, starting with Introducing Invar and AI agents built an editor.

A look inside

Invar editor with file tree and structure outline
The editor — file tree, syntax-highlighted source, structure outline.
Invar workspace search with streaming results, tasks pane, and terminal
Workspace search streaming ripgrep results — click a match, land on the line.
Invar in-file find bar with live matches
In-file find — live match highlighting, case, whole-word, and regex toggles.
Invar Quick Open fuzzy file picker
Quick Open — fuzzy go-to-file with exact-basename ranking.
Invar tasks pane beside a terminal running the task tracker
The agent fleet's task dashboard — one shared renderer for pane and CLI.

The numbers

Counted from the open repository, 2026-08-11 (its own deterministic census script plus AST checkers; source excludes tests):

source lines                94,054   across 372 files, 37 modules
classes                        345   100% namespace-pattern conforming
Reactive() classes              79
Static() capability classes    198
invariant contracts             35   (~14,000 lines)
value-import cycles              0   (Tarjan over the import graph)
computed() calls                10   (memoization is opt-in)
module-level variables           0

Those zeros are not tidiness — they are the ivue discipline holding at scale, mechanically enforced on every merge. How each one is achieved has its own deep dive: zero import cycles, zero module-level state, ten computed() in 94k lines.

What to study in the source

Invar is open as a study-scale example of ivue architecture — the patterns from this site's guides, applied at three orders of magnitude:

github.com/infinite-system/invar — clone it, run bun start, and read the modules with the guides open beside them.

Released under the MIT License.