Ghost 3.4.1 · macOS 14+ · Apple silicon

An AI workspace you summon.

Local-first, native macOS, and yours in one keystroke. Ghost drops from your notch or floats above your dock, routes prompts to local and hosted models, searches your private files, and runs verified Mac actions.

Ghost answering "What does a Jaguar look like" from the top-center notch, with the photograph inline in the answer
What Ghost is

Ghost is a native SwiftUI app for macOS that connects local models, hosted APIs, optional agent CLIs, document retrieval, timers, and verified Mac actions through one quiet surface, placed as a top-center notch or a floating bar.

It runs as an accessory. It keeps clear of the Dock, leaves the full screen to whatever you were doing, appears with a keystroke, does the work, and steps back. Your Mac stays your Mac.

Every capability starts off. You opt into each one (web, files, automation, messaging, screen, shell) in a three-step first run. Everything Ghost can do, it does because you switched it on and asked.

Watch it work

One sentence. A real file
on your Desktop.

Ghost is asked for an interactive Milky Way. It writes milky-way.html, saves it to the Desktop, and opens it in Safari. The finished file is yours to keep, edit and send on.

Recorded on macOS, 26 seconds, no cuts.
NEW What's new

The latest update.

Ask Ghost to text someone by name and it reaches them. Messages accepts a name as though it were a phone number — it does not check and it does not complain — so a message addressed to the word “mom” went nowhere while Ghost reported it as sent. Ghost now resolves the contact on your Mac, shows you their photo and the real number before anything goes out, and refuses rather than guessing. Antigravity also answers as it thinks instead of all at once at the end.

Version 3.4.1 · shipping now
Messages

“Text mom: running late” reaches your mother

Ghost looks the name up in Contacts on your Mac — including family words like mom or dad, which it reads from the relationships on your own contact card the way Siri does — picks their iPhone or mobile number, and sends to that. Nothing about who you are texting reaches any AI model on any provider: the lookup and the choice both happen on-device. A name that cannot be resolved is refused with what to add, rather than sent into the void.

Confirmation

You see their face before it sends

Confirming a message used to collapse the whole panel and throw a dialog on top of it showing a phone number — and nobody has their family’s numbers memorised, so it asked a question you could not actually answer. The confirmation is now part of the panel, in the same form as every other action Ghost asks about, and it leads with the contact’s photo, their name and the number. There is no “always allow”: Ghost asks every single time.

Antigravity

Answers start in a third of the time

Nothing about the model got faster. Antigravity’s CLI was being asked for plain text, which it holds until the run ends — so the first word and the last word arrived together and a long answer looked like half a minute of nothing. Ghost now reads it as it is written: the first text appears at 2.7 seconds instead of 7.1 on the same question. Its model picker and effort control also work at all now, which they did not.

Before that

Twenty-three releases, newest first. Open one to read what changed.

  1. Messages treats any text you hand it as an address, so a contact name became an address that did not exist. The send appeared to succeed at every level — no error, a tick in the activity log, and Ghost telling you it had sent the message — while nothing arrived. Ghost now resolves the name on your Mac, refuses anything that is not a phone number or an Apple ID email, and shows you the contact’s photo and the real number before sending. Message threads also open at the newest message instead of far up the conversation, and Antigravity gained a working model picker.

  2. Every release since Ghost started hardening its builds asked macOS for Contacts, Calendar, Reminders, the microphone and app automation — and was refused before you were ever shown a prompt, which is why Ghost never appeared in System Settings under any of them. Resetting the permission did nothing, because there was no permission to reset. All five are declared now, and updating is all it takes. The Messages view also stopped throwing away most of what a thread contains: photos, videos, link cards, tapbacks, and the text of about one message in five.

  3. Glass shipped drawing a dark panel with a frost rim — a perfectly nice surface, and not the one its own description promised. Two separate things were laying Ghost’s own paint over the macOS material underneath, and the second only became visible once the first was gone. Both are fixed, so Glass now shows the material rather than a painting of one.

  4. DeepSeek shipped a vision model, so if you run Ghost on DeepSeek you can hand it a screenshot, a chart or a photo and ask about it — until now that only worked on Claude, Gemini and local vision models. And the theme picker gained two entries at the restrained end: Minimal, where nothing on the surface moves unless Ghost is working, and Glass, the sheerest surface the material will give.

  5. If you ever went looking for Open at Login and found it greyed out, that was not your Mac. Ghost was reading a perfectly normal signal from macOS, "this app has never been set to open at login", as "this build cannot do it", and then telling you to move Ghost into your Applications folder, which is where it already was. Every install had it switched off with no way to switch it on. It works now, and because replacing the app is how an update works, Ghost also puts the registration back when macOS loses it.

  6. Paste a snippet into Ghost and two things used to go wrong. The answer came back with the code set in small grey type that ran straight into the explanation, so the hardest part of reading it was working out which half was which. And the answer landed wherever Ghost decided, which was sometimes the Terminal and sometimes the chat. Code is now set in a proper block, coloured, at reading size, and Ghost asks you where the answer should go before it starts. The Terminal typesets its replies as prose rather than raw markdown, the chat bar grows to eight lines so a long paste is visible, and the countdown plate sits in the notch on every display.

  7. Ghost could always read text off your screen, and it could never look at a picture you handed it. Both of those changed. Press ⌘V with a screenshot on the clipboard and it goes into the message like a file, whatever model you are on, including your Claude subscription, which used to be told to go and find an API key and a vision model instead. And the screen reader that used to sit there for the better part of a minute over two words now answers in about a tenth of a second: that was macOS loading its text recognizer, and Ghost wakes it quietly at launch.

  8. Two things made Ghost overstay. Opening it with the shortcut quietly made it permanent, so the only way to close it was the shortcut again, and on a monitor with no notch the collapsed surface had no shape to sit in, so it either showed nothing at all or a black tab stranded in the middle of the menu bar. Ghost now leaves a second after your pointer does, unless leaving would cost you something, and it draws itself a notch wherever it lands.

  9. A timer running in Ghost was invisible unless you opened the Timer section, and so was everything else: a question you asked and walked away from, and any news Ghost had for you afterwards. The collapsed notch now says all three out loud, shaped to the cutout on your Mac. It also stops carrying yesterday's focus sessions into today.

  10. Asking about your own documents used to mean attaching them again on every question, and forgetting to was worse than useless. You can now state the rule once, in your own words, and Ghost keeps it: a matching question finds that document, reads the part that answers it and brings it into the reply. Spreadsheets can be changed as well as read, one cell at a time, without the workbook losing anything you set up.

  11. Ghost has always asked before it does anything risky, and an approval prompt can only ever answer one question at a time. It cannot hold a standing rule. So there was no way to say never touch that folder, or never message anybody, and no way afterwards to find out what Ghost had actually attempted: a refusal left no trace, and a read that worked left none either. Boundaries are those standing rules, checked before anything else runs, and the action log is the record. Both live on your Mac.

  12. Ghost has had a knowledge base since 2.0, and on most Macs it was empty. Saving a fact needed a tool, and a plain sentence like remember that I am in the Tuesday section is answered on the fast route that carries no tools, so the one moment you told Ghost something worth keeping was the one moment it had no way to write it down. Asking what do you know about me then got the only honest answer available: nothing. Both halves are fixed, and the fact is saved on your Mac by Ghost itself rather than by a model deciding to.

  13. Sums, conversions, the clock, dates and text tools are computation. There is nothing for a model to add to any of them, and waiting a few seconds and paying for the privilege was the wrong answer to 2+558. All of it now happens on your Mac, before any provider is contacted, with no API key and no permission needed. Contact lookups got the opposite fix: they used to reach a model that has no way to read Contacts, so it would invent a phone number and present it as fact.

  14. Open Safari has always happened the moment you asked, on your Mac, with no model involved. Close Safari went the other way entirely: it became a model turn, then a high-risk tool that stopped to ask for approval, and on a bad day an answer claiming it had closed something it never touched. Both halves are the same mechanical thing now, and neither needs a model or an API key.

  15. Settings has a row promising what Ghost can do, with examples to try. Opening it gave you four lines about installing an optional external runtime that almost nobody turns on. It now answers the question someone opening that row is actually asking, and the help text around it stopped naming three features that no longer exist: a command palette on ⌘K that was never built, and screens inside a window Ghost stopped opening.

  16. Ghost draws its privacy line by origin: anything out of Messages, Notes, Mail or Contacts is private and never goes to a cloud model. That rule is exact about where text came from and blind to what is in it. A card number pasted into a plain text file is, as far as the rule is concerned, ordinary text from an ordinary app. Ghost now reads the selection itself first and says what it found before you press anything. The same release adds a Diagnostics page for the opposite problem: the actions that quietly did not work, and had nowhere to say so.

  17. Two things you could not see. The model picker gained a second column for the model, and the window it lives in was still the width of the old single column, so the picker looked like it had been cut in half. Separately, asking Ghost to write code put the answer in the chat window, where a long diff is the wrong shape. Coding requests now open the Terminal and stay there, with the full diff, the file cards, and a line telling you what is happening while it happens.

  18. Two things a user reported, both broken since before anyone said so. A Ghost app launched from the Finder does not inherit the PATH your Terminal has, and Codex installed through npm is a small script that goes looking for Node on exactly that PATH. Separately, every image Ghost looked up on the web was being checked with a request the check itself could not read, so real pictures were judged unreachable and removed from the answer before you saw it.

  19. A Ghost user pointed out that the "Try: …" line above the composer was suggesting phrases that did nothing, and the reason it stayed hidden is that a Ghost action which failed produced no card at all. So an action blocked on a missing permission looked identical to one that quietly did nothing. Every suggested phrase is now checked against the code that has to answer it, failures say so on screen, and there is a page in Settings listing everything you can say.

  20. Choosing Low, Medium, High or Max on the Codex route only ever added a sentence of advice to the prompt. The real model and reasoning effort came from whatever your own ~/.codex/config.toml said, so a setting made inside Ghost changed nothing about how Codex actually ran. Ghost now chooses the model and the effort for each run, keeps that choice to itself, and tells you what Codex reported using.

  21. A Ghost user wrote in to say the Codex route was simply dead: choosing "your ChatGPT plan" produced nothing, with no error to explain it. They were right, and it had been broken for everyone who had not first pointed Ghost at a code repository. So is the larger problem behind it, which was that Ghost never checked whether your subscription was signed in before asking it to answer.

  22. This release came out of using Ghost for a day and writing down everything that went wrong. It was taking ⌘/ away from every app on your Mac, telling you about keyboard shortcuts it had never implemented, hiding its own update window behind itself, and freezing for a quarter of a second every time you pressed Return. It has a menu bar icon again, so you can tell it is running.

  23. Ghost had no first run at all: a new install opened an empty text field and left you to guess. It now walks you through where answers come from, offers you a first question, and stops taking your keyboard at every launch. Typing a slash lists everything it can do. Conversations can be searched and named. This release also closes a security hole in web fetching, and finishes the undo journal.

Every release ships its own notes inside the app. Ghost shows them once, on the first launch after it updates.

01 Summon

Call it from anywhere.

Ghost lives in the background and comes forward on a keystroke. It answers to global shortcuts that work across every app on your Mac, and you decide whether it drops from the top-center notch or floats like Siri near the bottom of the screen. No Accessibility permission required: the hotkeys are registered through Carbon, the same system Spotlight uses.

Space

Global shortcut

Press Option+Space from anywhere to open Ghost. The same surface, wherever you are. Configurable to ⌘⇧Space, ⌃Space, ⌃⌥Space, or ⌘⌥G.

Notch or floating bar

One surface, two homes. A toggle in Settings drops Ghost down from the top-center notch, or floats it as a Siri-style bar about an inch up from the bottom of your screen, growing upward as it fills.

Hover to reveal

In notch placement, glide your pointer to the top center of the screen and Ghost reveals itself. The pointer alone is enough. The floating bar stays inert until you summon it, so a stray hover passes it by.

⌥⇧Space

Alternate shortcut

Enable a second global shortcut, ⌥⇧Space by default, that opens the very same surface. A muscle-memory backup for when your hands are already on the keys.

Deep link

ghost://toggle opens Ghost from any app or script. Opening is the whole of what it does: the link takes no arguments, so there is nothing in it to name a file or carry content outward.

macOS Services

Right-click any text in any app → Services → Ghost for Rewrite Professionally, Rewrite Casually, Humanize, Check Grammar, or Ask Ghost for Feedback.

02 Route

One prompt.
Two engines.
Eight providers.

You ask naturally. Ghost scores the prompt, picks the provider, model, and engine, and decides whether a fast direct call is enough or whether the work needs a connected agent loop.

i

Direct API

The default path. Ghost calls the provider's HTTP API directly with its native tool harness: streaming, tool loops, prompt caching on Claude, retry with backoff on transient failures.

ii

Ghost Agent

For deeper work, Ghost shells out to a local CLI at ~/.local/bin/ghost or hermes, passing provider, model, turn limits, approval mode, and toolsets.

Local

LM Studio

localhost:1234

Local

Ollama

localhost:11434

Cloud

Claude

Anthropic

Cloud

Gemini

Google

Cloud

DeepSeek v4

reasoning

Cloud

OpenCode Go

zen/go/v1

Cloud

OpenCode Zen

free tier models

Custom

OpenAI-compatible

OpenAI · vLLM · any /v1

Ghost's provider picker open, showing eight providers and three subscription CLIs
Effort modes
Quick4 turns · 4K
Balanced12 turns · 8K
Deep40 turns · 16K
Max90 turns · 32K

Four effort levels cap how many turns a run may take, from a one-shot answer to a ninety-turn deep-work session, and how many tool rounds the Direct API path may spend: 6, 10, 14, then 20. Token budgets and mode names scale by provider. The figures above are Claude's ceilings; a local model gets a far larger one, up to its context window, because a reasoning model bills its whole thinking phase against the same budget and a tight cap returns an empty answer.

Approval modes

Ask

Read-only tools auto-run; medium and high risk ask first.

Safe

Low and medium auto-run; high risk still asks.

Auto-run

Everything classified runs, but file path scope never expands.

Ghost's run picker open on the subscription route, showing the four effort levels with Deep selected and the three approval modes with Ask selected
03 Remember

Your files,
searchable memory.

Ghost indexes the folders you approve into a local SQLite database with FTS5 full-text search. When a prompt needs context, it retrieves source-backed chunks with citations you can open.

The index

Local SQLite · FTS5 · WAL mode

Chunks live in ~/Library/Application Support/Ghost/rag/ghost_rag.sqlite. Max chunk 3,500 chars, 500-char overlap, sentence-aware splitting, page numbers preserved from PDFs, section titles from markdown headings.

32 file formats
txtmdmarkdownhtmlhtmpdfdocxepubxlsxcsvtsvjsonrtfswiftpyjststsxjsxjavacpphppchmmmsqlxmlyamlymltomllog
Desktop watcher

FSEvents, always in sync

Watch a folder recursively. Startup sync, event-driven sync with 8-second debounce, periodic rescan every hour. Up to 20,000 files per pass. Manual folder ingest scales to 50,000. Skips node_modules, build, __pycache__, venv, and the rest.

Cited answers

Open the source behind every claim

RAG queries return chunk metadata and source paths. Ghost can open the cited file at the right spot, or reveal it in Finder. Ten RAG tools: ingest a file, ingest a folder, sync, query, search, open, status, remove, reindex, clear.

Ghost answering a Saturn question with an inline image and a Wikipedia reference
Semantic recall

Paraphrase and still match

Beyond literal keyword matching, Ghost uses on-device word embeddings, Apple's NaturalLanguage, so a paraphrased request still matches your saved facts and fast local commands. All on-device.

04 Act

Models request.
Ghost verifies.

The capability harness is Ghost's action layer. The model never touches the filesystem directly. It asks, Ghost normalizes the path, checks permissions, runs app-owned code, and returns a machine-readable receipt. You see what actually happened.

78 built-in capabilities
18 file operations
9 document formats
4 risk tiers
Files

Read, write, move, convert

List, glob, grep, read, write, create, edit, patch, move, copy, delete (trash by default), zip, reveal in Finder. Conversions between PDF, DOCX, HTML, TXT, and Markdown. Desktop, Downloads, Documents, Ghost Outputs, and the workspace are all safe output targets.

A gated call shows you the tool name, its risk tier, and the exact arguments before anything runs. Where a path is involved you can also grant it for that folder for the rest of the session, so one answer covers the whole run.

Ghost pausing on ghost_create_pdf with the destination path and document content shown, offering Deny, Allow Once, or Always for that folder
Ghost pausing on ghost_schedule_reminder, tagged MEDIUM, showing the title and due date it would use, with Deny and Allow Once
Documents

Generate real artifacts

Create Markdown, HTML, TXT, CSV, JSON, PDF, DOCX, PPTX, and XLSX, all through native macOS frameworks. If a local model answers with a usable code block where it should have called a file tool, Ghost saves the artifact itself and returns the real path.

Ghost writing solar-system.html to the Desktop with an Undo and Reveal receipt
Risk classification

Four tiers, fail closed

Low

Read-only: search, list, read, grep, weather, web search.

Medium

Writes, creates, calendar, reminders, file copy, app launch.

High

Patches, moves, deletes, app quit, Shortcuts, shell, send email, index clear.

Blocked

Unknown future tools fail closed and say so.

Undo

Action journal

Every write, edit, move, and delete records before-and-after state. Up to 100 journal entries. If a run goes sideways, you can roll it back.

Mac utilities

One-word control of your Mac

Run a system report: CPU, RAM, disk, battery, even SMC temperatures. Set display brightness and audio device or volume, snap windows into layouts, run Homebrew, uninstall apps and clean junk, compress video and images or make a GIF, run a network speed test, keep the Mac awake, and pick a screen color.

Ghost answering "What is my battery health at" with a one-line battery report
05 Native

It speaks macOS
fluently.

Ghost talks to Calendar, Reminders, Notes, Shortcuts, Vision OCR, and Speech Recognition through the same native APIs your other apps do, and reaches for a script only where macOS leaves it no other way in.

Calendar

Query events in a date range and create new ones after explicit intent. A deterministic parser turns natural language into real calendar entries.

Ghost answering "What is on my calendar today" with the day's agenda read from macOS Calendar

Reminders

Turn "remind me to check the oven in 10 minutes" into a real macOS Reminder with a due date, parsed deterministically from your sentence.

Ghost answering "Remind me tomorrow to go to the grocery store and get apples" with a Reminder Set card that carries an Undo button

Apple Notes

Create notes in specified folders, append to existing ones, and search by title and content, all through AppleScript.

Ghost creating an Apple Note called Vacation 2027 with Paris added, shown as a Note Created card with an Undo button

Messages & FaceTime

Ask Ghost to read recent iMessages, send an iMessage, or start a FaceTime call. It resolves a name like "Mom" to the right contact and asks before sending. Off by default. Enable Messages & FaceTime in Privacy & Access. Everything is read on-device and never sent to a cloud model.

Ghost reading a Messages thread on-device

Paste an image

Take a screenshot, press ⌘V in the notch or the floating bar, and ask your question. The picture rides along with the message on whatever model you are using, including a Claude or ChatGPT subscription.

Voice input

On-device SFSpeechRecognizer with a live three-bar EQ waveform driven by RMS from the audio tap. Start, stop, send, or press Space to toggle.

Screen capture & OCR

Drag over a region and the words are there in about a tenth of a second, read by Apple Vision on your Mac. Ghost wakes the recognizer at launch so the first read of the day is as fast as the hundredth, hides itself during the capture, and restores afterward. Asking flatly to read your screen runs the same instant capture the button does, with no model round trip.

Ghost showing the text read out of a selected screen region in VS Code: seven OCR lines at 100% average confidence, with the temporary capture deleted

Shortcuts & timers

Run macOS Shortcuts through /usr/bin/shortcuts. Set pomodoro and countdown timers in natural language. Active timers take over the compact notch, and completed timers reopen with pause, resume, add-time, restart, and dismiss controls.

Ghost's Pomodoro timer with focus history, streaks, and top subjects
06 Build

A workspace
for deeper work.

When a compact notch isn't enough, Ghost opens into deeper work modes: agent workflows, an in-app terminal, and an intent router that classifies prompts before they run.

Ghost Code

Four agent modes

Plan

Inspect & propose

Build

Edit files & run commands

Explore

Read & map codebase

Review

Inspect diffs & catch bugs

Live progress in the notch, including creating-file and using-tools states.

Terminal

A terminal that also codes

Press ⌘3 inside Ghost. Run shell commands, or hand a coding turn to your model and watch the coloured diff arrive as a card with its own Undo. Slash commands like /new, /model and /help run before anything else, so they work with no provider connected.

Ghost's Terminal answering "What is the last file I added to desktop?"
Intent Router

14 intent kinds

Classifies prompts into Answer, Research, Files, Summarize, Screenshot/OCR, Clipboard, Create, Organize, Automation, Messaging, Code, Debug, Review, Terminal, then detects filenames, save targets, and RAG references before routing.

Local & private models

Run fully on-device

Ghost talks to LM Studio and Ollama running on your Mac, and your Messages, Mail, Notes, and Contacts are only ever read with one of these local models. A cloud model is refused.

07 Protect

Your data follows
a route you choose.

Privacy is the architecture here, settled before anything runs. Ghost separates local providers, local indexes, and hosted key paths, so where your data goes follows from the route you pick.

Secrets

Keychain first

API keys live in macOS Keychain. A legacy ~/.ghost/.env file is migrated transparently and deleted. Keys are only read when their provider is actually called, with no Keychain prompts at launch.

Provider isolation

Only the right keys are visible

Environment scrubbing ensures the agent process only sees the selected provider's keys. DeepSeek keys are blocked when any other provider is selected. Local providers can't launch agent mode at all.

Web egress guard

No private networks, ever

Web fetches block localhost, private IPv4/IPv6, link-local, multicast, and reserved addresses. DNS resolution checks every address. Redirects to private destinations are blocked. Cookie-free, cache-free, 5MB max.

Sensitive access gate

Credentials ask twice

Even with Full Disk Access, paths like .ssh, .gnupg, .aws, login.keychain, .kube/config, and .env require explicit consent: Allow Once, Always This Session, or Deny.

Tool access policy

Six independent switches

Web, local files, Mac automation, Messages and FaceTime, screen capture, and terminal inspection are each toggled independently. Disabled capabilities are removed from model tool schemas and checked again before execution. Revoking cancels active work mid-flight.

On-device only

Messages, Notes, Mail, Contacts

Anything read out of those four stays on your Mac at every step of a run: the answer, any summary of it, and the tool results folded back into the next turn. A local model or a deterministic reader does the work, and where Ghost cannot do it that way it declines the request and says why.

Content scan

Ghost reads the selection itself

The origin rule is exact about which app text came from and blind to what it says, so a card number in a plain text file is just ordinary text. Ghost reads the selection itself before anything leaves, tells you what it found, and lets you decide with that in front of you.

Boundaries

Rules that hold across every run

An approval prompt answers one question at a time and expires with it. Write a boundary once, in your own words, and Ghost checks it before anything else runs: a rule can put a folder off limits, or keep Ghost out of Messages entirely. The action log is the other half, recording what Ghost attempted, including the refusals and the reads that worked. Both live on your Mac.

Deep link security

Only ghost://toggle

The only deep link Ghost accepts is one that opens Ghost. It takes no arguments at all, so there is nothing in it that could name a file or carry your content outward. Older deep link patterns are blocked.

08 Feel

Cosmic glass,
one accent.

Ghost's interface is built on a "Cosmic Glass" design system: NSVisualEffectView blur with a subtle noise layer, and a single azure accent that every token resolves to, so the hue is retuned in one place.

Accentazure
Surfacecosmic glass
Sheengold
Edgegilded ring

Signature animations

The surface condenses into view with scale, blur, and a soft bloom, plus a trackpad haptic. A gentle haptic marks answer completion. A single welcome-back bloom swells from the logo the first time you open Ghost each day.

Liquid glass & iridescence

Ghost's pill is rendered in a "liquid glass" material that samples the desktop behind it, with a slow iridescent streak that drifts near the caret while you type: deep amber, gold, pale champagne, and rose-gold across the composer.

State-reactive send button

Hollow when the composer is empty, primary accent when ready, red stop button while a run is in flight. Answer blocks ease in from a soft blur.

Premium HUD

Tabular numerals, a latency sparkline, a token counter with rolling number animation, and skeleton loaders while content arrives.

Usage & cost

Open with ⌘⇧U. Today, 7-day, and 30-day spend, a 30-day sparkline, per-model breakdown, and a recent activity log, with cost approximated from a per-model rate table.

Section bar

Chat, Timer, Terminal and Settings sit on one bar inside the surface, and ⌘1 through ⌘4 jump between them. Every shortcut on the sheet is dispatched from the same list the sheet renders, so a row can only exist if something handles it.

Flexible surfaces

Whether it lives in the notch or the floating bar, the compact surface stays small for quick asks, expands for transcripts and settings, and hands deeper work to larger app surfaces when a task needs more room.

Accessibility

All motion respects prefers-reduced-motion. VoiceOver support through native menus that back every custom control, and full keyboard navigation. Reduce Motion is honored throughout.

FAQ

Frequently asked questions

finale

Bring your models, your files,
and your Mac together.

Ghost is native macOS, notarized by Apple, and runs as a quiet accessory you summon with a keystroke, as a notch or a floating bar.

ryuhemingway/Ghost-App One-time purchase · macOS 14+ · Apple silicon