Open-source project
aimen08/noty avatar
aimen08/noty

Noty: edge-of-screen sticky notes for macOS, reviewed for adoption

Sticky notes that live at the edge of your screen. Native macOS, SwiftUI + AppKit, local-only with encrypted note bodies.

479 stars66 forksSwiftMIT

At a glance

What is it?
Noty is a native Swift and SwiftUI macOS app that keeps sticky notes in a 12 pt pill on the edge of your screen and fans them out on hover. It is local-only, MIT licensed, and the last push to the repository was on 2026-09-15.
Who is it for?
Adopt Noty if you work on one macOS machine and want notes that never take a window or a dock slot, and if the noty:// URL scheme fits how you already capture text from Shortcuts, Raycast, Alfred or a terminal. Do not adopt it if you need notes on Windows, Linux, iOS or a browser, since the repository lists only Swift sources, an Info.plist and a build.sh.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Noty solves, and who it is for

Most note apps fail at the same moment: you want to write something down, and the app is not in front of you. You switch to it, find the right note, type, switch back. Noty removes that switch. The deck lives on the right edge of the screen as a 12 pt pill, one coloured dash per note, and the pointer entering the pill fans the notes out as vertical tabs. No dock icon and no window to manage, per the README.

The target user is narrow and specific. Someone who works full screen on macOS, keeps a handful of short-lived notes (a shopping list, a checklist, a phone number), and resents giving a window to a text field. The README's own demo shows the intended loop: the deck fans out, a checklist is pulled open, two tasks are ticked off, and the note is dismissed by clicking away. If your notes are long documents with structure, or if you need them on more than one machine, the design fights you rather than helping.

The repository describes the app as local-only with encrypted note bodies. That is a privacy stance as much as a feature: nothing in the README describes a sync service, an account, or a network endpoint.

The three-state deck and how the fan is laid out

Noty has exactly three visual states, and the transition between them is the whole product. At rest you see a 12 pt pill on the screen edge. When the pointer enters it, notes shingle down the edge 45 ms apart as vertical tabs, each keeping its colour and carrying its label vertically; the README notes that CJK and emoji glyphs stay upright. Clicking a tab slides that note clear of the deck at full size, level with its own tab, which remains visible behind it.

The deck shows five notes at a time and pushes the rest behind a +N tab that opens a scrolling list. The fan is only 56 pt wide, so it covers almost nothing behind it. Tabs shingle like roof tiles: each is full height but sits only a strip below the one before, which is what keeps the deck to roughly half the screen height instead of running the full length of the display. The strip is sized to the longest title currently on the deck, so labels read in full rather than being clipped mid-word.

Two deck styles exist. Right-clicking the pill opens a Deck style menu with Labelled tabs (the default, full-size tabs carrying their titles) and Colour chips (colour only, no labels, shrinking the deck to a row of chips). Deck size scales every metric off one multiplier, tab width, the lap between tabs, the label type, the chips and the resting pill, so the deck grows without drifting out of proportion with itself. Settings gives a 70 to 180 percent range and the pill's context menu offers four presets. Keep deck open makes the fan the resting state, so tabs and labels stay on the edge without being hovered first; it is off by default.

Installing Noty and automating it with the noty:// scheme

The README points at a single distribution channel: the latest DMG on the GitHub releases page, linked from the project site at noty-sepia.vercel.app. There is no Homebrew formula documented, so installation is a download and drag rather than a package manager command. The README does not state whether the DMG is signed or notarised, so treat Gatekeeper as something to verify on your own machine before first launch.

The feature that makes Noty scriptable is the registered noty:// URL scheme. The README gives these four examples, and they are the entire documented surface:

bash
open "noty://new?text=Buy%20milk"   # create a note with this text
open "noty://capture"               # open the quick-capture box
open "noty://all"                   # the All Notes window
open "noty://settings"              # Settings

The README states explicitly that the text only ever becomes note content and that nothing in a URL is executed, which matters if you wire noty:// into a launcher that accepts arbitrary input. Anything that can run open, including Shortcuts, Raycast, Alfred and a terminal, can drive it.

Global shortcuts are registered through the Carbon hotkey API, so no Accessibility permission is required. The four defaults are Option-Command-N for a new note (opened straight away), Shift-Command-Space for quick capture, Option-Command-A for All Notes and Option-Command-L for the Archive window. The README says the first four can be rebound in Settings, opened with Command-comma. Inside a note, Escape closes it, Command-F opens find, Command-period cycles its colour, Command-T turns the current line into a task or strips the checkbox off, Command-delete deletes with ten seconds to undo, Shift-Command-A archives, Command-P pins the note open, and Control-plus and Control-minus change the note text size. Standard editing keys work because the app builds a main menu at launch purely so those key equivalents dispatch, even though an accessory app draws no menu bar.

Tasks, images and where your data actually sits

Tasks are plain text with a convention. Command-T puts a checkbox on the current line, clicking the box strikes the line through and dims it, Return carries the list to the next task, and Return on an empty task ends the list. The prefixes are the literal characters for an empty and a ticked box, so a note stays plain text. Markdown export writes them as standard task syntax and import reads that back, and All Notes shows a done/total count per note.

Images are the more interesting design decision. Pasting, dragging a file in, or right-clicking and choosing Insert Image renders the picture inline at full width, while the body keeps a one-line token underneath. Unlike the other markdown markers, that token never surfaces just because the caret is near. Clicking the image parks the caret right after it, and pressing delete there reveals the token fully selected as a confirmation step: delete again to remove the image, or type, press Return or Space, paste, or click elsewhere to keep it. Hovering an image gives a drag handle at the bottom-right corner; the height follows the aspect ratio, and the width is written back into the token so sizes survive restarts and export/import.

On disk, images live as files under ~/Library/Application Support/Noty/Images/ and are deleted when the last note referencing them is deleted. The .stickies export archives carry them as base64, so a round-trip keeps every picture. If you care about what leaves the machine, that export file is the thing to think about, not the app's own storage.

Where Noty is the wrong tool

The platform boundary is absolute. The repository is Swift, SwiftUI and AppKit with an Info.plist and a build.sh, and the README describes only macOS behaviour: a dock icon that is absent, a menu bar the app deliberately does not draw, a Carbon hotkey API for globals. There is no iOS, iPadOS, Windows, Linux or web client in the repository. If you work across devices, Noty is a single-machine tool and will stay one.

The second limitation is scale. The deck shows five notes at a time, with the remainder behind a +N tab, and the shingled tabs are deliberately kept to roughly half the screen height. That is a good shape for a dozen short notes and a poor one for a hundred long ones. All Notes gives you a searchable window with an editable detail pane, but it is a fallback view, not the primary interface the app is designed around.

The third is the automation surface. Four URL routes are documented: new, capture, all and settings. There is no documented route for updating an existing note, querying notes, or appending to a specific note from outside the app. Quick capture can append to the end of an existing note, but the README frames that as an in-app interaction with chips, not as a URL parameter. If your workflow needs to read notes back out programmatically, the documented interface does not offer it.

How Noty differs from a menu-bar note app or Apple Stickies

The obvious comparison is the built-in Stickies app. Stickies gives you floating windows you position yourself and a .stickies file format. Noty inverts the spatial model: nothing floats by default, notes live in a deck pinned to the screen edge, and the resting state is a 12 pt pill. Noty also imports and exports .stickies, so the two are not mutually exclusive on the file level, though the README does not describe a live sync between them.

The second comparison is the menu-bar note app, which puts its entry point in the top-right of the screen. The difference is what happens after you click. A menu-bar app typically opens a panel near the menu bar; Noty expands a note at the screen edge, level with its own tab, and carries that tab along as a left gutter separated by a dashed rule, so the note reads as growing out of the deck rather than floating beside it. If you already have a crowded menu bar, the edge-of-screen placement is the practical argument for Noty over that category.

The third is a plain text file in a synced folder. That gives you portability and grep, and Noty gives you none of that. What it gives back is the interaction: hover, fan, click, type, click away, with no window to manage and no dock slot consumed. Choose based on which of those two you lose more sleep over.

Upgrade cost, licence and what the repository does not say

The project ships often. Three releases appear in the recent list: v1.6.1 on 2026-09-03, v1.7.0 on 2026-09-10 and v1.8.0 on 2026-09-15, the same day as the last push to main. The repository is not archived, and the last push was on 2026-09-15. The repository layout includes appcast.xml and appcast-intel.xml, which is the standard Sparkle update-feed arrangement for a macOS app distributed outside the App Store, so in-app updates are plausibly wired up, though the README does not describe the update flow and does not document rollback to an earlier version.

The licence is MIT. That permits use, modification and redistribution, including in closed products, provided the copyright notice and permission notice are preserved; the licenses/ directory in the repository suggests bundled third-party notices are kept alongside it. MIT also disclaims warranty, so nothing about data loss or compatibility is guaranteed. None of this is legal advice, and if you plan to redistribute a modified build you should read the LICENSE file and the contents of licenses/ yourself.

The upgrade cost is mostly the cost of a fast-moving app. With releases roughly weekly, a settings screen, a URL scheme and a deck layout are all surfaces that can shift. The README describes the current behaviour of Deck size, Deck style and Keep deck open; it does not promise that these keys or their defaults stay put across versions.

Editorial conclusion

Adopt Noty if you work on one macOS machine and want notes that never take a window or a dock slot, and if the noty:// URL scheme fits how you already capture text from Shortcuts, Raycast, Alfred or a terminal. Do not adopt it if you need notes on Windows, Linux, iOS or a browser, since the repository lists only Swift sources, an Info.plist and a build.sh. Before installing, verify the DMG is signed and notarised on your own machine, confirm the noty:// scheme behaves as documented on your macOS version, and check that notes survive an export and re-import as .stickies with their images intact. The MIT licence places no conditions on redistribution of the source, but it offers no warranty, and the README does not document an upgrade or migration path between releases.

Frequently asked questions

How do I install Noty on macOS?

Download the latest DMG from the releases page linked in the README, which is also linked from the project site at noty-sepia.vercel.app. There is no documented Homebrew formula, so installation is a manual download rather than a package manager command.

Does Noty require Accessibility permission for its global shortcuts?

The README states that global shortcuts are registered through the Carbon hotkey API, so no Accessibility permission is required. The four defaults are Option-Command-N, Shift-Command-Space, Option-Command-A and Option-Command-L, and the README says the first four can be rebound in Settings.

Where does Noty store my notes and images?

Images live as files under ~/Library/Application Support/Noty/Images/ and are deleted when the last note referencing them is deleted, according to the README. The README describes the app as local-only with encrypted note bodies and does not document any sync service or account.

Official sources

  1. aimen08/noty on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/aimen08-noty.svg)](https://hysenlabs.com/projects/aimen08-noty)