Programmable Text Editor

An editor with a native core and a programmable control plane.

Odin powers the editor core. An embedded Racket runtime provides commands and configuration.

Odra project logo
Odra showing its file explorer, editor view, status bar, and command navigator
Odra's terminal interface from August 2026.

01

Architecture

Odin owns the editor's text and state, while embedded Racket makes it programmable. Modules add file management, Git workflows, and Org editing.

Odin
Handles text, buffers, views, editing history, rendering, and system resources.
Racket
Provides the programmable control plane for commands, keymaps, configuration, and higher-level composition.
Frontend
The terminal is Odra's first frontend, built on an interface-independent core.

02

Current state

Edit code, work with structured documents, manage repository changes, and build personal tools in one terminal interface. Follow each workflow in the User Guide.

Editing
Edit UTF-8 files with the default Direct profile or the optional Modal profile. Select and transfer text, undo or redo changes, configure indentation, and recover unsaved work.
Buffers and terminals
Arrange files and integrated terminals in split panes. Each view keeps its own cursor and scroll position. Hide a terminal without stopping its shell.
Search
Search and replace with plain text or regular expressions, search across a project, and move through results or symbols.
Files and projects
Browse local or remote files in a tree or editable directory listing, and create, rename, move, copy, or remove them without leaving the editor.
Version control
Use Ksawery to inspect Git status and history, stage files or diff hunks, create commits, work with branches and conflicts, and follow repository operations.
Structured documents
Jan is Odra's module for Org documents: outlines, tables, tasks, agendas, capture, source blocks, computation, and export. Files ending in .org or .jan currently use the same supported Org syntax.
Linked knowledge
Install the optional Roman package to connect personal notes with stable links, references, relations, daily notes, and graph inspection. Your Org documents remain the source of truth.
Language support
The basic pack supports Org documents through Jan, plus Odin, Racket, Go, Rust, TypeScript, JavaScript, HTML, and CSS. Local syntax works independently of language servers; configured servers provide completion, diagnostics, navigation, and formatting.
Programming
Write personal commands in Racket, discover them through M-x, bind them to keys, and reload them during a session. Compose keymaps and themes, and extend the status bar or gutter.
Packages and agents
Install packages from official or independent catalogs, choose their permissions, and enable, update, or roll them back. Run installed agents, inspect their activity, and cancel tasks from the editor.

03

Workflows

Start with a project, a document, or a command of your own. Follow a complete workflow in the User Guide.

Work on a project

Navigate files, search across a project, inspect diagnostics, run a terminal, and review or stage Git changes with Ksawery.

Manage repository changes

Work with structured documents

Use Jan to work with Org outlines, tasks, agendas, tables, source blocks, and export. Add Roman to connect personal notes through links, references, and daily entries.