![]()
28 Sep 2026 Stickee is my sticky note app for macOS. I write a line or a short list, it sticks to the screen, and 1 click shows it full screen on every monitor I have. The small note keeps a reminder in view. The full-screen version makes sure I can't miss it.
02 Nov 2026 Stickee is now 1 sticky, fed from my iPhone. After a few days of use I chose 1 to-do list over many notes. The text lives in a plain file in iCloud Drive, so an iPhone Shortcut can add a line from Siri, Back Tap or the share sheet, and the Mac puts it on top. I edit the list in place, line by line. Every version goes into a history, so nothing gets lost. The first version had several notes and a separate editor window. The screenshot of 2 notes is from that version.
The name fits the -ee family of my other tools, next to Dictee: my own local dictation app and Portee: one page for all my local apps.

Why I built it
Apple's Stickies app still looks like 2005, and it has no way to make a note impossible to ignore. I work on 4 displays. A small yellow square on 1 of them is easy to lose.
I wanted 3 things:
- Fast capture. 1 shortcut, type, done.
- Loud when it matters. A note that can take over every screen until I dismiss it.
- My own look. Black, white and red, my fonts and my edelweiss logo, like everything else I build.
What it does
02 Nov 2026 The table shows Stickee as it is today.
| Feature | How it works |
|---|---|
| 1 sticky | 1 to-do list, always on top, on every Space. Each line gets a red square |
| Quick add | ⌃⌥⌘N from any app opens the sticky on a new empty line at the top |
| From the iPhone | A Shortcut appends a line to a file in iCloud Drive. The Mac puts it on top within 2 s |
| Edit in place | Double-click the text. Each line becomes a row with a drag handle and a delete button |
| Red lines | A line that starts with ! shows in red. ⌘R toggles it while I edit |
| Full screen, all | The button covers every display with the list in large bold type |
| Full screen, 1 screen | ⌘↩ on the sticky: full screen only on the display where it sits |
| Prompter toggle | ⌥⌘S from any app moves the list between my desk prompter and a side display |
| History | Every change saves the text it replaces. The menu lists the 20 latest versions |
| Clear and undo | Clear needs no confirmation: Undo on the bar, or ⇧⌘T later |
28 Sep 2026 The first version had a separate composer window. It's gone: I edit on the sticky itself now. This is how the composer looked, in dark mode:

And this is the full-screen view on my 4 displays at once, including the one in portrait:

All features
The sticky
- 1 sticky. 1 floating to-do list, always on top and on every Space, in bold Montserrat with red squares.
- List or text. List mode by default.
⌘Lwhile I edit switches to plain, centred text. - Red lines. A line that starts with
!shows in red, without the!.⌘Ror right-click adds or removes it. - Quiet chrome. Full screen, edit and clear buttons appear only when the pointer is on the sticky.
- Last change. The time on the sticky is the last change, from the Mac or the iPhone.
- Hide and show.
⇧⌘Hor the menu bar menu hides the sticky and brings it back. - Displays come and go. When a display goes away, the sticky moves to one I can see, and goes back when the display returns.
- Square corners. The sticky and its windows draw no corner radius.
Editing
- Quick add.
⌃⌥⌘Nfrom any app, or⌘Nin Stickee, opens a new empty line at the top. When I finish, the keyboard goes back to the app I was in. - Edit in place. Double-click or the pencil turns each line into a row.
⌘↩or a click elsewhere saves,Esccancels. - Move and delete lines. Drag handles,
⌥↑and⌥↓, and a×button on every line. - Line keys. Return splits a line, Backspace joins it to the one above, the arrow keys step between lines,
⌘Zundoes in order. - Nothing lost on Esc. A discarded edit goes into the history. Quit or logout during an edit saves it.
Full screen and the prompter
- Full screen on every display. Large bold type, sized to fill each screen, portrait displays included.
- Full screen on 1 display.
⌘↩on the sticky. - Prompter toggle.
⌥⌘Sfrom any app shrinks the list onto a side display, or shows it full screen on the prompter only, without taking the keyboard. - Edit on the full screen. Double-click or the pencil opens the line editor at full-screen size.
- Long lists. A list too long for the screen shows the lines that fit, then "+N more".
Sync and safety
- iPhone input. An iPhone Shortcut appends a line to
iCloud Drive/Stickee/sticky.txt. Siri, Back Tap, a home-screen icon or the share sheet run it. - 3-way merge. New lines go on top. An empty, cut-off or stale file never deletes lines. A line I deleted on the Mac in the last 24 hours doesn't come back from an old iPhone copy.
- History. The last 1,000 versions on disk, the 20 latest in the menu. Click one to put it back.
- Clear and undo. An Undo bar after a clear, and
⇧⌘Tto restore later, even after a relaunch. - Keyboard shortcuts panel. Help > Keyboard Shortcuts lists every key.
- Agent interface. A
stickeecommand line with JSON output: status, lines, add a line (optionally red), show, hide.
For business people
A sticky note is the cheapest reminder there is, and the easiest to ignore. Stickee keeps the cheap part and fixes the ignore part. Before a call I put the 3 points I must not forget on a note. When the moment comes, 1 click puts them on every screen in front of me, in type I can read from across the room.
It costs nothing to run: no account, no server, no subscription. The list is 1 text file in my own iCloud Drive.
02 Nov 2026 The phone side is the cheapest possible: an Apple Shortcut that appends a line to that file. I compared 6 options, including a native iPhone app and a small web page. The Shortcut won because it's free, works offline and needs no code on the phone.
The limit: it's a personal tool. 1 list, no sharing with anyone else.
For technical people
Stack
Native Swift, AppKit for the windows and SwiftUI for the composer. No Xcode project and no Swift package: build.sh compiles the sources with swiftc, assembles the .app bundle, signs it ad hoc and copies it to /Applications.
./build.sh --install # compile, bundle, sign, install
./build.sh --run # build and open from build/
How it's built
| File | Role |
|---|---|
main.swift |
App delegate, menus, menu bar item, Carbon global hotkey |
StickyNoteController.swift |
The borderless floating NSPanel |
LineEditorView.swift |
The line editor: drag handles, delete buttons |
FullscreenPresenter.swift |
1 borderless window per NSScreen, auto-fitted type |
NoteStore.swift |
Note model, iCloud Drive file sync, history |
NoteMerge.swift |
The merge rule between the Mac and the file, no file access |
RedLine.swift |
The ! mark of a red line |
AppState.swift |
The state file the agent command line reads |
Theme.swift |
NicAI design tokens: colours, Montserrat, Lato, logo |
02 Nov 2026 The SwiftUI composer of the first version is retired. Editing happens on the sticky.
A few details worth knowing:
- Non-activating panels. The stickies are
NSPanelwindows with.nonactivatingPanel. Clicking one doesn't pull Stickee to the front, so the app I'm working in keeps focus. - Full screen is not macOS full screen. It's a borderless window per display at screen-saver level, sized to
screen.frame. That covers the menu bar and the Dock, and it works on every monitor at once. - Type that fits the screen. The font size shrinks from large until the text fills about 80% of each display. A 4K screen and a small portrait one each get their own size.
- Cursors set by hand. macOS applies cursor areas reliably only in the active window. The sticky tracks the pointer itself: arrow on the buttons, open hand on the body, closed hand while dragging.
- Fonts in the bundle. Montserrat and Lato ship inside the app and load through
ATSApplicationFontsPath. The Montserrat variable font resolved to "Thin" in Core Text, so the build uses static weights instead. - 02 Nov 2026 A merge that can't lose iPhone lines. The Shortcut can only append, and iCloud sometimes delivers an old copy of the file. Stickee polls the file every 2 seconds and merges it against the last text it synced. The merge rule has no file access, so 42 headless tests cover it. Old iCloud conflict versions go into the history only: once, they brought back 6 lines I had deleted.
Agent interface
02 Nov 2026 Claude Code and my other agents use a stickee command line. Every command prints 1 JSON document.
| Command | What it does |
|---|---|
stickee status --json |
Running, line count, editing, hidden, on the prompter |
stickee lines -n 10 --json |
The top 10 lines of the sticky |
stickee add "<text>" --json |
Puts a line on top, as the iPhone does. --red makes it red |
stickee show / hide |
Shows or hides the sticky, without taking the focus |
Writes go to the running app as stickee:// URLs, and the command line confirms each one through a small state file. An agent can't add a line while I'm editing: the command is refused, so it never fights with my typing.
How I built it
Claude Code built it in 1 morning, with several agents working in parallel. I wrote the shared pieces first (the note model and the design tokens), then 3 agents built the sticky and full-screen windows, the app shell and composer, and the packaging (build script, icon, fonts) at the same time. A 4th agent, briefed as a designer, reviewed the UI from screenshots and reworked it within my design rules.
The first version was about 2,000 lines of Swift in 7 files. 02 Nov 2026 After 3 weeks of changes from daily use, it's about 4,100 lines in 13 files.


Further reading
- Dictee: my own local dictation app: my local dictation app, same
-eefamily - Portee: one page for all my local apps: the dashboard for my local apps
- My Claude Code setup: how I run Claude Code