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