Aster is a Markdown editor built in Rust on top of GPUI, the GPU-accelerated UI framework from the Zed team. It focuses on a fast inline-editing experience with rope-backed text operations and background markdown span parsing. Why am I using Rope data structure? Because it is fast and provides several benefits over the regular String. If you want to learn more, check out this brilliant article by the Zed team: Rope & SumTree. Zed uses their own version of Rope which isn't really a rope but a SumTree. Currently, I am using the regular Rope and if there are needs, I might switch to the Zed version. Why gpui? Because it's GPU accelerated (Metal on macOS) and it provides precise control over the layout, saving us from the hell that is virtual DOM.
Pre-built macOS applications are available for direct download:
| Architecture | Download |
|---|---|
| Apple Silicon (M1/M2/M3/M4) | Aster-arm64.dmg |
| Intel (Core i5/i7/i9) | Aster-x86_64.dmg |
- Download the
.dmgfile for your Mac's architecture - Double-click the DMG to mount it
- Drag Aster.app to your Applications folder
- Eject the DMG
Note: On first launch, you may need to right-click → Open to bypass Gatekeeper (the app is not notarized yet).
- Native macOS windowing with Metal rendering via GPUI
- Rope-backed text model (
ropey) for fast inserts/deletes - Live Markdown parse and render (CommonMark + GFM extensions)
- Inline markdown rendering in the editor with background span parsing
- Support for tables, footnotes, strikethrough, and task lists
- Document outline in the sidebar (click any heading to jump in editor)
- Lightweight Markdown syntax highlighting in the editor
- In-editor Find with match navigation (
Cmd+F,Cmd+G,Shift+Cmd+G) - Image loading (local)
- Atomic file saves with dirty-state tracking; open/save dialogs via
rfd
Cmd+N: New fileCmd+O: Open fileCmd+S: SaveShift+Cmd+S: Save AsCmd+W: Close windowCmd+Q: Quit
Cmd+Z: UndoShift+Cmd+Z/Cmd+Y: RedoCmd+X: CutCmd+C: CopyCmd+V: PasteCmd+A: Select all
Cmd+F: Open FindCmd+G: Find next matchShift+Cmd+G: Find previous match
Cmd+=: Increase font sizeCmd+-: Decrease font sizeCmd+0: Reset font size
| Requirement | Details |
|---|---|
| macOS | 11.0 (Big Sur) or later |
| Xcode Command Line Tools | xcode-select --install |
| Rust (Nightly) | Edition 2024 requires nightly toolchain |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shcargo runOpen a file on launch:
cargo run -- path/to/file.mdInstall cargo-bundle:
cargo install cargo-bundleBuild the app bundle:
cargo bundle --releaseThe .app will be created at target/release/bundle/osx/Aster.app.
The easiest way to create distributable DMG files:
# Build for your current architecture
./scripts/build-dmg.sh
# Build specifically for Apple Silicon
./scripts/build-dmg.sh arm64
# Build specifically for Intel
./scripts/build-dmg.sh x86_64
# Build universal binary (both architectures)
./scripts/build-dmg.sh universalThe DMG files will be created in the project root directory.
For Apple Silicon (M1/M2/M3/M4):
rustup target add aarch64-apple-darwin
cargo bundle --release --target aarch64-apple-darwinFor Intel Macs:
rustup target add x86_64-apple-darwin
cargo bundle --release --target x86_64-apple-darwinsrc/app.rs/src/main.rs: window bootstrap, loggingsrc/model/:DocumentState(rope, cursor, dirty tracking),InlineMarkdownState(background span snapshots)src/services/: inline syntax span parsing and file I/O helperssrc/ui/: editor view (rope-backed input + inline render), outline sidebar, root layoutsrc/ui/theme.rs: light palette and typography tokens
- Single-pane inline editing renders headings, emphasis, code, lists, and links directly in the editor
- Light theme applied across editor and sidebar panels
- Keyboard shortcuts for file, edit, view, and search workflows
- Outline sidebar with clickable heading navigation
- Lightweight syntax highlighting in the editor for Markdown structure
- In-editor find flow with next/previous navigation
- Image rendering (local)
- Footnotes support with navigation
MIT License - see LICENSE for details.

