Reef: a macOS window manager that gives every app its own Alt-Tab
The macOS window manager that gives every app its own Alt-Tab.
At a glance
- What is it?
- Reef is a Swift menu bar app for macOS that binds applications to number keys, so pressing a key opens a panel of that app's windows and releasing the modifier switches to the one you pick. The price is macOS 14.6 or later and a scope limited to the current space.
- Who is it for?
- Adopt Reef if you live in one application at a time on macOS, keep several windows of the same app open, and want to reach them with a number key instead of hunting through a general window list, particularly if you work with a Rectangle style tiling setup where the geometry is already handled.
- 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 27 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 October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One switcher per application, not one for the whole desktop
The idea is one line long: Reef is the macOS window manager that gives every app its own Alt-Tab. The README says it was built because the authors wanted a fast and simple window switcher for macOS. The mechanism is a set of number key bindings. You bind an application to a number key, and pressing that key opens a panel listing the windows of that application only, so the switcher shows three browser windows rather than thirty windows from every running program. From there you can select any of that app's windows, not just the frontmost one, which is the part the system Alt-Tab cannot do. Two features support the model. Profiles let you keep different sets of bindings for different contexts, and the binding and profile management is done through the keyboard rather than through a settings window, so you can rearrange your layout without leaving the application you were working in.
Hold the modifier, press the key, release to commit
The switching gesture is a three step sequence, and the README gives a concrete example with an editor bound to 0. You hold Control and press 0, which opens a panel showing each window of that editor. You then press 0 multiple times to select the specific window you want, cycling through them inside the panel. Releasing Control switches to the selected window. Nothing is committed until the modifier is released, so an accidental press costs nothing and the selection can be changed while the panel is open. This is why the README calls it an Alt-Tab-like interface rather than a plain switcher, since the interaction is a mode rather than a single keystroke. The modifiers are configurable, and Reef Preferences under Shortcuts lets you change the modifiers used for switching applications, for switching profiles and for binding applications, so the gesture can be moved away from Control if it clashes with something else in your setup.
Profiles turn the number keys into a mode
Bindings are not global, they are per profile, and the README illustrates the idea with two named sets. A Coding profile would bind your editor, browser and terminal, while a Browsing profile would bind a web browser, a messaging app and a music client. You switch profiles either from the menu bar or by binding the profiles themselves to number keys and pressing Ctrl + Option + a number between 0 and 9. That second route matters, because a profile switch triggered from the keyboard can be part of a larger gesture: bind a profile to a key, hit it, and the same number keys now mean something else. Since the number keys are reused across profiles, the profile is really the addressing scheme, and the window count per app never exceeds what fits on a single row of keys, which is a deliberate constraint rather than a limitation of the implementation.
Binding an app is a keyboard action in itself
There are two ways to bind an application, and the README lists both. The first is through Preferences and Profiles in the menu bar, which is the obvious route. The second is to select the application you want and press Ctrl + Option + Shift, which captures the frontmost application into the current binding without opening a settings panel. That second route is the one that makes Reef usable at speed, since a binding you can record while you are already in an app is a binding you will actually keep up to date. The Preferences and Profiles panel remains the place to review the whole map, and Profiles is where the set of bindings is stored. The README frames the whole management flow as keyboard driven as one of the key features, so the menu bar is the fallback rather than the primary surface.
Spaces narrow the field: switching stays in the current space
There is one scope limit the README states explicitly. Window switching is scoped to your current macOS space, so a window of the same application that lives on another space or another display arrangement is not part of the panel. On a multi monitor setup with separate spaces per display, Reef can only reach the windows in the space you are currently in, which is a genuine limit for anyone who spreads work across several virtual desktops. The workaround is the usual macOS one, switching spaces first and then using Reef inside the new space, but it does mean the number keys are not a global window address. The README also points out that Reef pairs well with Rectangle, with the division of labour stated plainly: Rectangle positions and rearranges your windows while Reef re-focuses them. The Related Projects list names yabai, Aerospace, Rectangle and AltTab for macOS, which places Reef in a family of tools rather than as a complete window management solution.
A signed app you install by hand, with an Xcode project behind it
Installation is a manual drag and drop, which is normal for a small macOS utility. You download the zip from the project site or from GitHub Releases, unzip the file, and drag Reef.app into your Applications folder. The README states compatibility with macOS 14.6 Sonoma and onwards, and the download links also carry the same requirement. The app is free or pay what you want, with a link on the site for supporting the project. The repository is a Swift project with an Xcode project, Reef.xcodeproj, alongside the application sources in Reef/, a Config/ directory, and both ReefTests/ and ReefUITests/, so there is a unit test target and a UI test target. The README invites issues and feedback on the GitHub issues page and says pull requests are welcome, with the honest caveat that the maintainers cannot guarantee they will get to them.
Editorial conclusion
Adopt Reef if you live in one application at a time on macOS, keep several windows of the same app open, and want to reach them with a number key instead of hunting through a general window list, particularly if you work with a Rectangle style tiling setup where the geometry is already handled. Do not adopt it if you need a switcher that crosses macOS spaces, if you are on a macOS version older than 14.6, or if you want a tiling window manager, since Reef only refocuses windows and leaves their placement to other tools. Verify first that your version of macOS is 14.6 Sonoma or later, download the release archive from the project site or the GitHub releases page rather than building from source, and try the default modifier combination before changing it, since the hold and release gesture is the part that takes practice.
Frequently asked questions
What does Reef do on macOS?
Reef is a window manager that binds applications to number keys, so each bound application gets its own Alt-Tab style panel listing only its windows. You pick a window in that panel and switch to it.
How do I switch between the windows of one app with Reef?
Hold Control and press the number key bound to that application to open the panel, press the number key again to cycle through the windows, and release Control to switch to the selected window.
What are profiles in Reef?
A profile is a named set of bindings, for example a Coding profile for your editor, browser and terminal or a Browsing profile for a browser, messaging app and music client. You switch profiles from the menu bar or by binding them to number keys and pressing Ctrl + Option plus a digit.
Can Reef switch to windows on other macOS spaces?
No. The README states that window switching is scoped to your current macOS space, so only the windows in the active space are offered in the panel. Reef re-focuses windows and leaves their arrangement to tools such as Rectangle.
How do I install Reef and what are the requirements?
Download the zip from the project site or GitHub Releases, unzip it, and drag Reef.app into your Applications folder. The app requires macOS 14.6 Sonoma or later, and it is free or pay what you want.
Official sources
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.
[](https://hysenlabs.com/projects/gouwsxander-reef)Was this useful?