Caelestia-inspired desktop shell for macOS 26 Tahoe: sidebar with its own dock, launcher, dashboard, quick actions and a settings app. Native Swift, English and German.
See the code
A desktop shell for macOS 26 Tahoe: a sidebar with its own dock, a launcher, a dashboard and a control centre, all built from blocks you arrange yourself.

ApolloShell brings the look of Linux shells like Caelestia to the Mac. It doesn't replace Finder or the window manager. It adds panels to the edges of your screen and stays out of the way otherwise.
[!NOTE] This is an early release. It relies on private macOS interfaces, so a macOS update can break parts of it. The design follows Caelestia, but ApolloShell is an independent project and contains no Caelestia code.
If you like it, a star on GitHub helps other Mac users find it.
.dmg build), or says when a new version
is out (Homebrew).| Dashboard | Control centre | Launcher |
|---|---|---|
![]() | ![]() | ![]() |
You need macOS 26 Tahoe or later, on Apple silicon or Intel.
Download. Get the .dmg from the latest release and drag
ApolloShell into Applications. The app isn't notarised (that needs a paid Apple
developer account), so macOS blocks the first launch. Open System Settings →
Privacy & Security and click Open Anyway, or run:
xattr -dr com.apple.quarantine /Applications/ApolloShell.app
Homebrew. Builds it from source on your Mac:
brew trust --tap Silvertree2010/apolloshell # Homebrew 7 and newer
brew tap Silvertree2010/apolloshell
brew install apolloshell
From source. Only the Command Line Tools are needed, no Xcode:
git clone https://github.com/Silvertree2010/ApolloShell.git
cd ApolloShell
scripts/setup-signing.sh # once, keeps permissions across rebuilds
./build.sh
More about building and testing is in CONTRIBUTING.md.
A theme is a CSS file in
~/Library/Application Support/ApolloShell/themes: colours, sizes, fonts and
gradients as --apollo-* tokens, a dark-mode block, and nothing else - no
scripting, no selectors of your own. Pick one in Nexus > Themes. Saving
the file applies it at once, and anything that could not be read falls back
to the built-in value and is listed on that page. The format and every token
are in docs/THEMES.md.
The same shell, three themes. Colours, fonts, corners, sidebar width and dock size all come out of the theme file.
| Afterglow | Marble | Tide |
|---|---|---|
![]() | ![]() | ![]() |
The .dmg build keeps itself up to date: it checks once a day in the
background, downloads a new version when it finds one, and installs it the
next time the app quits. Nexus also offers Restart now as soon as an
update is waiting, because a shell rarely quits on its own. Both switches are
on by default and can be turned off in Nexus > Updates.
A Homebrew install belongs to Homebrew, so ApolloShell never replaces itself there. It says when a new version is out; you install it with:
brew upgrade apolloshell
| Keys | Opens |
|---|---|
| ⌥Space | Launcher |
| ⌃⌥D | Dashboard |
| ⌃⌥U | Control centre |
| ⌃⌥, | Nexus |
You can change them in Nexus → Keyboard Shortcuts.
Permissions. A short welcome guide walks you through them on first launch.
/etc/sudoers.d/apolloshell that allows only
pmset -a disablesleep 1 and 0. You can remove it in Nexus.Privacy. No telemetry, no accounts. The only network traffic is weather:
the place you picked goes to Open-Meteo, MET Norway or wttr.in. After a crash,
ApolloShell asks whether to send the crash report (versions, Mac model and
where in the code it crashed; you can read it first). Nexus → Updates can set
that to always or never. Settings live
in ~/Library/Application Support/ApolloShell/. Delete that folder to reset
everything.
Apple's Dock. Nexus → General can hide it while ApolloShell runs. It comes back when ApolloShell quits.
Private interfaces. Spaces, fullscreen detection, Night Shift, dark mode, window lists and "now playing" use undocumented macOS APIs (SkyLight, CoreBrightness, HIServices, MediaRemote through mediaremote-adapter). ApolloShell checks for them at launch and turns a feature off if one is missing. That's also why it can't be in the Mac App Store.
After an update Accessibility stops working? Remove ApolloShell from the list in System Settings, add it again and restart it.
Full notices are in THIRD_PARTY_NOTICES.md.
The core was written by me and two friends in our free time. I do most of the work; my friends help out. Since then the code has been refactored several times with Claude (Fable 5.1), and we ran large multi-agent bug hunts with it.
This stays the same for new releases:
| Part | Done by |
|---|---|
| New features | Us |
| Refactoring and bug hunts | Claude |
| Patch releases (fixes only) | Claude |
| Commits and code comments | Claude |
MIT © 2026 Silvertree2010. Contributions are welcome, see CONTRIBUTING.md.
Swift
93.2%
Objective-C
4.8%
Shell
1.3%
Caelestia-inspired desktop shell for macOS 26 Tahoe: sidebar with its own dock, launcher, dashboard, quick actions and a settings app. Native Swift, English and German.
See the code
A desktop shell for macOS 26 Tahoe: a sidebar with its own dock, a launcher, a dashboard and a control centre, all built from blocks you arrange yourself.

ApolloShell brings the look of Linux shells like Caelestia to the Mac. It doesn't replace Finder or the window manager. It adds panels to the edges of your screen and stays out of the way otherwise.
[!NOTE] This is an early release. It relies on private macOS interfaces, so a macOS update can break parts of it. The design follows Caelestia, but ApolloShell is an independent project and contains no Caelestia code.
If you like it, a star on GitHub helps other Mac users find it.
.dmg build), or says when a new version
is out (Homebrew).| Dashboard | Control centre | Launcher |
|---|---|---|
![]() | ![]() | ![]() |
You need macOS 26 Tahoe or later, on Apple silicon or Intel.
Download. Get the .dmg from the latest release and drag
ApolloShell into Applications. The app isn't notarised (that needs a paid Apple
developer account), so macOS blocks the first launch. Open System Settings →
Privacy & Security and click Open Anyway, or run:
xattr -dr com.apple.quarantine /Applications/ApolloShell.app
Homebrew. Builds it from source on your Mac:
brew trust --tap Silvertree2010/apolloshell # Homebrew 7 and newer
brew tap Silvertree2010/apolloshell
brew install apolloshell
From source. Only the Command Line Tools are needed, no Xcode:
git clone https://github.com/Silvertree2010/ApolloShell.git
cd ApolloShell
scripts/setup-signing.sh # once, keeps permissions across rebuilds
./build.sh
More about building and testing is in CONTRIBUTING.md.
A theme is a CSS file in
~/Library/Application Support/ApolloShell/themes: colours, sizes, fonts and
gradients as --apollo-* tokens, a dark-mode block, and nothing else - no
scripting, no selectors of your own. Pick one in Nexus > Themes. Saving
the file applies it at once, and anything that could not be read falls back
to the built-in value and is listed on that page. The format and every token
are in docs/THEMES.md.
The same shell, three themes. Colours, fonts, corners, sidebar width and dock size all come out of the theme file.
| Afterglow | Marble | Tide |
|---|---|---|
![]() | ![]() | ![]() |
The .dmg build keeps itself up to date: it checks once a day in the
background, downloads a new version when it finds one, and installs it the
next time the app quits. Nexus also offers Restart now as soon as an
update is waiting, because a shell rarely quits on its own. Both switches are
on by default and can be turned off in Nexus > Updates.
A Homebrew install belongs to Homebrew, so ApolloShell never replaces itself there. It says when a new version is out; you install it with:
brew upgrade apolloshell
| Keys | Opens |
|---|---|
| ⌥Space | Launcher |
| ⌃⌥D | Dashboard |
| ⌃⌥U | Control centre |
| ⌃⌥, | Nexus |
You can change them in Nexus → Keyboard Shortcuts.
Permissions. A short welcome guide walks you through them on first launch.
/etc/sudoers.d/apolloshell that allows only
pmset -a disablesleep 1 and 0. You can remove it in Nexus.Privacy. No telemetry, no accounts. The only network traffic is weather:
the place you picked goes to Open-Meteo, MET Norway or wttr.in. After a crash,
ApolloShell asks whether to send the crash report (versions, Mac model and
where in the code it crashed; you can read it first). Nexus → Updates can set
that to always or never. Settings live
in ~/Library/Application Support/ApolloShell/. Delete that folder to reset
everything.
Apple's Dock. Nexus → General can hide it while ApolloShell runs. It comes back when ApolloShell quits.
Private interfaces. Spaces, fullscreen detection, Night Shift, dark mode, window lists and "now playing" use undocumented macOS APIs (SkyLight, CoreBrightness, HIServices, MediaRemote through mediaremote-adapter). ApolloShell checks for them at launch and turns a feature off if one is missing. That's also why it can't be in the Mac App Store.
After an update Accessibility stops working? Remove ApolloShell from the list in System Settings, add it again and restart it.
Full notices are in THIRD_PARTY_NOTICES.md.
The core was written by me and two friends in our free time. I do most of the work; my friends help out. Since then the code has been refactored several times with Claude (Fable 5.1), and we ran large multi-agent bug hunts with it.
This stays the same for new releases:
| Part | Done by |
|---|---|
| New features | Us |
| Refactoring and bug hunts | Claude |
| Patch releases (fixes only) | Claude |
| Commits and code comments | Claude |
MIT © 2026 Silvertree2010. Contributions are welcome, see CONTRIBUTING.md.
Swift
93.2%
Objective-C
4.8%
Shell
1.3%