Markdotmichaelzizzadoro.com
Markdot app icon

Markdot

Markdown for Mac.
Ready for your AI agents.

A fast, native editor for your .md files. Live styling, a project sidebar and a clean preview. And when Claude edits the file you have open, you both keep working.

  • Native macOS 26 app
  • Opens .md in place of Xcode
  • Not released yet
notes.mdtrailhead
# Launch notes

- [x] Cache map tiles for saved trails
- [ ] Fix the elevation chart
- [ ] Write the release notes

Ship date: Monday
Saved20 words
claude
╭─ Claude Code ─ ~/trailhead

Mac native

Made for Mac.

Built with Swift, AppKit and TextKit 2, so it opens fast, feels right and fits in with every app around it.

PLAN.mdtrailhead
PLAN.md+
# Trailhead 1.2

A small update: offline maps, a better packing list, and fixes from the beta.

## This week

- [x] Cache map tiles for saved trails
- [x] Fix the elevation chart on iPad
- [ ] Packing list: group by category

swift
```swift
func cacheTiles(for trail: Trail) async throws {
let tiles = trail.bounds.tiles(zoom: 12...16)
}
```
SavedLine 1, Column 154 words

Liquid Glass, throughout

The macOS 26 sidebar, toolbar and panels. It looks like it came with your Mac.

Your whole project

Every markdown file in the project sits in the sidebar, live as files come and go.

Open Quickly, Find in Project

⇧⌘O jumps to any file. ⇧⌘F searches all of them at once.

A real Mac document

Tabs, Versions, Rename, Move To, Print and Share, the way Mac apps work.

Your choice of type

San Francisco, New York or SF Mono, at the size you like.

The app for .md

Double-click any markdown file and Markdot opens it, not Xcode.

Works with AI agents

Most editors make you pick a side.

Agents like Claude Code write to your markdown files while you have them open. Reload, and whatever you just typed is gone. Markdot keeps both.

notes.mdAny other editor
# Launch notes

QA: in progress
Ship date: Monday
You’re typing…
notes.mdMarkdot
# Launch notes

QA: in progress
Ship date: Monday
Saved
You’re typing…

The merge

Both edits.
One file.

Markdot merges line by line, then word by word. It only stops to ask when you both changed the same word.

Last savedShiponMondayifQApasses.
YouShiponTuesdayifQApasses.
ClaudeShiponMondayafterthemapsreview.
In the file

Try it.

Play a scene, or type into notes.md while Claude works.

claude — trailhead
╭─ Claude Code ─ ~/trailhead
Play a scene, and Claude edits notes.md from here.
notes.mdtrailhead
# Launch notes

- [x] Cache map tiles for saved trails
- [ ] Fix the elevation chart on iPad
- [ ] Write the release notes

Ship date: Monday, if QA passes.

SavedLine 1, Column 125 words
Type while a scene plays, and the merge works with your words instead.

Details

Thoughtful, down to the keystroke.

Changes glow, then fade.

Every edit from another app lights up for two seconds, right where it happened.

# Trails this fall

- [x] Bear Mountain loop
- [ ] Breakneck Ridge
- [ ] Mount Beacon
- [ ] Anthony's Nose

Pack: water, headlamp, map

Never miss one.

An edit out of view? A button takes you straight there.

# Field guide

## Before you go
- Check the forecast
- Tell someone your route
- Download the map

## On the trail
- Stay on marked paths
- Pack out what you pack in
- Turn back by 2 pm

## Gear
- Water, two liters
- Headlamp
- First-aid kit
- Rain shell

## After
- Log the hike

Saved when you pause.

About a second after you stop. So your agent reads what you see.

Saved

Markdown stays markdown.

Styled as you type. Plain text on disk. One click to Preview.

## Launch notes

Ship **Wednesday**, after the `maps` review.

- [x] Cache map tiles
- [ ] Write the release notes

Fast at any length.

A keystroke rescans only what changed.

0of 4,000 lines rescanned
Waiting for a keystroke

Tested

Tested the way
agents write.

End-to-end tests write to a live copy of Markdot, then check the screen and the disk.

0unit tests for MarkdotKit
0end-to-end checks on the running app
0rounds of fuzzing the live styler
coedit_test.py
- [ ] An edit lands in place. The cursor doesn't move.
- [ ] Your typing and an edit elsewhere: both kept, then saved.
- [ ] Both sides change one line: saving waits for you.
- [ ] Appends, rewrites and `sed -i`: all caught.
- [ ] Fifteen rapid appends while you type. Nothing lost.
- [ ] Switching windows never rewrites an unchanged file.
- [ ] A read, replace, write edit, the way Claude Code works, is never overwritten.

How it was built

From viewer to co‑editor in six months.

Swift, AppKit, TextKit 2 and WebKit. The merge on this page is a port of the app’s own code.

March1.0A fast viewer, to replace Xcode for .md files.
MayTextKit 2A real editor, and the macOS 26 look.
JuneNSDocumentRebuilt on the Mac’s own document model.
September2.0Rebuilt from scratch to write alongside agents.
SwiftAppKitTextKit 2WebKitswift-markdownClaude Code

Markdot isn’t available to download yet.

← All projects