RUNE
WRITE IT DOWN.
LOSE NOTHING
A small, fast text editor for the Mac, with one scratch file in iCloud Drive that all your Macs share. It saves as you type, and edits from two Macs are merged, never overwritten.
File
iCloud
Macs
Log
This Mac is Studio, the other is Air, and time runs faster. Click the status line for the sync details.
Nothing lost between Macs
Every difference between your Macs is merged or shown to you. Nothing is dropped quietly.
Saved as you type
A crash or a force quit loses at most the last 300 ms. There's no "Save?" to answer, and File › Revert To brings back any version from the last 30 days.
Merged, not overwritten
Rune uploads each version itself, and an upload fails rather than replace a newer one. Edits that don't overlap are merged, by line and by word, and ⌘Z undoes the merge.
Conflicts you can see
Where both Macs changed the same lines, both versions stay in the file. ⌘1, ⌘2 or ⌘3 keeps one side or both; ⌥⌘R opens the merge view.
Says how far it got
The status line says when a version is saved, uploaded and on your other Mac. A deleted file, a full disk or iCloud turned off gets a plain red line and a way out.
$ cat scratch.md - [ ] two shirts <<<<<<< Air · 10:44 - [ ] rain jacket and umbrella ======= - [ ] rain jacket >>>>>>> Studio · 10:44 - [ ] passport
Plain text in
Paste anything and get clean, unstyled text, in Rune or in any other app.
Paste is always plain
⌘V in Rune inserts only the text: no fonts, colors, links or images. Copy puts plain text on the clipboard too.
Paste Clean
⌥⇧⌘V also removes invisible characters such as zero-width spaces, makes unusual spaces plain, and trims trailing whitespace.
Clean Clipboard
⌃⌥⌘V, in any app, rewrites the clipboard as clean plain text, with no window.
Append to Scratch
Adds the clipboard, or a selection through Services, to the end of scratch.md without leaving the app you're in. In Shortcuts too.
Quick edits
Open a file, fix it, close it. Highlighting that matches Sublime Text, Sublime's keys, and nothing an IDE would add.
export function totalsByMonth(invoices, { round = true } = {}) { const totals = new Map(); for (const { date, amount } of invoices) { const month = date.slice(0, 7); totals.set(month, (totals.get(month) ?? 0) + amount); } return round ? [...totals].map(([m, t]) => [m, Math.round(t * 100) / 100]) : [...totals]; }
33 languages HTML · CSS · JavaScript · TypeScript · JSX · JSON · Markdown · Shell · Python · Go · Rust · Ruby · Swift · Java · C · PHP · SQL · YAML · TOML · XML · CSV · and more
Sublime's colors and keys
An Old Hope built in, or import your scheme and font from Sublime Text in one click. Sublime's default keys for every command Rune has, and its minimap.
Multiple carets
⌘D adds the next match, ⇧⌘L splits a selection into lines, ⌘-click adds a caret, ⌥-drag makes a column.
Find anything
Find and replace with regular expressions. ⌘P goes to a file, ⇧⌘P runs any command, ⌘R jumps to a Markdown heading.
Files kept as they were
Encoding, line endings, permissions and extended attributes stay as they were. Big files open fast; past 5 MB, highlighting turns off.
A real Mac app
Show Scratch
⌥Space, in any app, brings the scratch window forward with the caret where you left it. Press it again to go back.
Tabs that come back
Files open as native tabs beside the scratch file. Untitled tabs are kept like everything else, and the tabs open at a quit open again.
In the menu bar
Its panel has Show Scratch, Clean Clipboard and your recent files.
Quiet
No timers while nothing happens. Notifications only when something needs you, never for a save.
rune command, like Sublime's sublSpec sheet
| Platform | macOS 27, Apple silicon. Native: Swift, AppKit and TextKit 2. |
| Sync | iCloud Drive and nothing else: no account, no server of Rune's own. |
| Merging | Three-way, by line and then by word. Conflicts go between git's markers, readable in any editor. |
| On this Mac only | The recovery journal, 30 days of History, and a Sync Log of every save, upload and merge. |
| Highlighting | 33 languages with tree-sitter. An Old Hope · Rune built in; imports .tmTheme and .sublime-color-scheme. |
| Accessibility | VoiceOver reads the status line as one sentence. Reduce Motion stops everything that moves. |
| Privacy | No analytics, no telemetry. Your files go only through iCloud Drive. |
| Updates | Signed, checked once a day, or off in Settings. |
| Distribution | Developer ID, notarized by Apple. Not sandboxed, so it opens any file. |
Measured
| Show Scratch to typing | 25 ms, p95 |
| Cold launch to typing | 274 ms, p95 |
| A keystroke | 1.4 ms, median |
| Opening a 2.4 MB file | under 100 ms |
| Idle | 43 MB of memory, 0.00-0.05% CPU |
On a Mac mini with macOS 27.
Price
- 7-day free trial on each Mac, everything included
- After it, Rune is read-only until you buy, and keeps syncing what you wrote
- 30-day refunds, no questions asked
- Updates to Rune 1.x included