Kaivalya Editor started as a markdown editor for one person’s notes. Version 0.1 opened a file and showed it rendered. 1.0.0 is the editor that person now works in all day: notes, the tasks in them, the code beside them, the whiteboards that connect them, and the logs of whatever is running. It is still small, it is still fast on a 2017 laptop, and it still installs nothing behind your back.

First steps is ten minutes with it. This is what it holds and what building it taught.

A project, not a file

Open a folder and it is a project: an explorer, a file picker that finds a file from three letters, search and replace across every file, and a session that reopens what was open. A project can have settings of its own in .kaivalya/settings.toml — only what differs from yours — and folder rules that give one folder’s notes their own stylesheet.

Two previews, for two moments

The live preview sits beside the text in the editor’s own theme and follows every keystroke: it is what you write against. The heavy preview is a window that draws the note the way a browser would — your stylesheet as you wrote it, formulae typeset, tables and mermaid diagrams drawn — for the moment the question is what will this look like to somebody else. It is a second program, fed whole pages, and it holds its memory only while it is open.

Things that deserve a window

A table is edited in a grid, cell by cell, and written back aligned. A formula is built in a window that draws it as you type. Characters, emoji and colours have a picker each. All of them are a / away: type / on a line and a palette offers what can be written there — a table, a formula, a date, a link to another note, a template.

The git pane shows what changed, the diff of a file, and commits; fetch, push and switching branch are there too. Every TODO in your files and every unticked - [ ] is gathered in one pane, and todo.md is a task board you drag cards across. A note lists the notes that link to it. Every save keeps a version of the file on your machine, in its local history.

Whiteboards, rewritten

A .canvas file opens as a whiteboard: cards of markdown, notes dragged in from the explorer, pictures, links, groups and arrows, in any colour. It is Obsidian’s format, JSON Canvas, so a board made here opens there. It was first built on another project’s board and then rewritten as the editor’s own, drawn straight from the file’s model: every change is written back as Obsidian writes it, and a field the editor does not know is kept. A board of 2,000 cards answers a click in a quarter of a millisecond.

Logs

A log file opens in a log view that colours levels, filters as you type and by a range of dates, jumps to a time, follows a file that is growing, and opens a file too large for any editor — half a million lines, read in pieces.

Measured, not hoped

Every operation that has a budget is measured on each change by a benchmark that fails the build when a budget is missed: 16 milliseconds for anything inside a frame, 4 for a keystroke’s work. Twice in the last week alone it caught something before anyone saw it — a whiteboard click that had grown to ten milliseconds, and a scan for TODOs that one regular expression had made thirty times slower.

In two languages

Every word of the interface, the settings file and the documentation exists in English and in French, each written in its own language. The settings file explains each option in the language you read.

Installing it

On Ubuntu 24.04 and later, download the .deb from the release and sudo apt install ./kaivalya-editor_1.0.0_amd64.deb. Elsewhere, the release’s archive has an install.sh, and the source builds with make install. Install the editor says what each optional part needs — git, a spell checker and its dictionaries, a font.

What is next

References and citations — footnotes, and a citation picker over a bibliography — are the next version. A PDF viewer comes after.

Building from source is described for developers.