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 is under active development. There is no versioned release or stability guarantee yet.

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

01

Current state

The current build brings editing, navigation, project-wide search, file management, customization, and language-aware tools into one terminal interface.

Editing
Open and save UTF-8 files, navigate by character or word, select with point and mark, use a kill ring, and undo or redo changes.
Workspaces
Keep several files open and arrange them in split panes. Each pane keeps its own cursor, scroll position, and history.
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.
Programming
Write personal commands in Racket, discover them through M-x, bind them to keys, and reload them without restarting the editor.
Language intelligence
Work with syntax highlighting, structural editing, diagnostics, navigation, and completion across supported languages through built-in analysis and LSP integrations.
Agent-ready
Let coding agents work in the active buffer, follow their activity, and ask them to create reusable Racket commands for a single task, a session, or permanent use.
Customization
Compose keymaps and themes, configure pane behavior, search and editing policies, and extend the status bar or gutter from Racket.

02

Architecture

Odra runs as a single process. Odin handles the editor itself, while Racket makes it programmable.

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 core is not tied to one interface. The terminal is its first frontend.