Aster is a Markdown editor built in Rust on top of GPUI, the GPU-accelerated UI framework from the Zed team. It delivers a live split view: rope-backed editing on the left, formatted preview on the right. The goal is to create a fast and efficient markdown editor using GPU rendering. 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)
- Support for tables, footnotes, strikethrough, and task lists
- Image loading (local)
- File explorer sidebar with folder navigation
- Atomic file saves with dirty-state tracking; open/save dialogs via
rfd
| 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),PreviewState(rendered blocks)src/services/: Markdown parsing into structured blocks; file I/O helperssrc/ui/: editor view (rope-backed input), preview view (styled blocks), root layout (split panes)src/ui/theme.rs: light palette and typography tokens
- Split edit/preview layout renders headings, italics, bold, code blocks, list items, quotes, and tables
- Light theme applied across panels and preview components
- Keyboard shortcuts for text input and file operations (Cmd+O / Cmd+S)
- File explorer sidebar for navigating markdown files
- Image rendering (local)
- Footnotes support with navigation
MIT License - see LICENSE for details.

