Ghost 2.0 · macOS 14+ · Local-first · Keystroke-summoned

A Premium AI workspace
in your Notch/Dynamic Bar

Ghost routes prompts to local and hosted models, searches your private knowledge base, starts local timers, and runs verified Mac actions — all from one quiet, native surface you summon with a keystroke. Choose where it lives: dropping from the top-center notch, or floating like Siri near the bottom of your screen.

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 — no Dock icon, no full-screen takeover. It appears with a keystroke, does the work, and steps back. Your Mac stays your Mac.

Every capability starts off. You opt into each one — clipboard, web, files, automation, screen, shell — in a six-step onboarding. Nothing is on by default. Nothing runs in the background without you asking.

NEW What's new

The latest update.

2.1.0: Ghost introduces itself, shows you what it can do, and stops taking your keyboard at launch.

First run

Ghost introduces itself now

A new install used to open an empty text field and leave you to guess. There is a proper first run: where answers come from, one honest page about permissions, and a first question you can click to run. Ghost also no longer brings its window forward and takes the keyboard every time it launches, including at login.

Discovery

Type a slash to see everything

Around thirty commands were reachable only if you already knew to type /help. Type a single / in the composer and they are listed and filtered as you go. A blank chat suggests a few questions too, picked from what your permission switches actually allow, and they retire once you have used Ghost a few times.

Conversations

Search and name your threads

The saved list is searchable across titles and message text, threads can be renamed, and they delete one at a time instead of all at once. Answers also fill the window now, and the window itself has a size setting.

Security

A web fetch could leak your conversation

When you named a page for Ghost to read, it skipped its approval prompt because you had chosen the destination yourself. That check compared only the host and the path, so a web page could talk Ghost into fetching the same address with your conversation attached as a query string, and no approval appeared. The check now covers the whole destination: query, fragment, port and credentials. Fixed in 2.1.0.

Shortcuts

Ask Ghost from Shortcuts and Spotlight

Ask Ghost, Start Focus Timer and Toggle Ghost are system actions now, so they can be used in a Shortcut or launched from Spotlight.

Instant actions

Select text anywhere, act on it

A small bar appears beside your selection in any app — Copy, Search, Summarize, Fix, with rewrites, Explain and Translate one click away. Results open in the bar, and Replace writes the new text straight back into the field you selected in, so that app's own undo still works. Press ⌃⌥Space to bring the bar back.

Sections

Chat, Timer, Terminal, Settings

A bar across the top of the Ghost window switches between sections in one click. The new Terminal runs shell commands without leaving Ghost — arrow keys for history, cd carries over — behind the same permission switch as its shell tool. Timer starts Focus, Break, or Deep Work directly, with no model involved.

Private by design

Your data stays on device

Messages, Notes, Mail, and Contacts are never sent to a cloud model by Ghost's own tools or memory — a sensitive read on a cloud model is refused outright. The one exception is text you select and act on: an action like Summarize cannot work unless the model may read it, so the bar tells you which app the text came from and which provider it is going to before you press anything. A local model (LM Studio or Ollama) keeps it on the machine.

Knowledge base

Ghost remembers you

A personal knowledge base quietly grounds every chat, so Ghost knows your people, preferences, and the usual. Say "remember that …" or ask "what do you know about me?" — it's plain Markdown you can read or edit at ~/Ghost Outputs/Knowledge.

Proactive

A daily brief, on demand

Ask "what's on my plate?" and Ghost ranks what needs you now — overdue and upcoming reminders plus imminent calendar events.

Computer-use

Do the thing no tool covers

For a Mac task without a dedicated tool, Ghost writes an AppleScript to do it. You review the exact script and approve it — nothing runs until you say yes.

Bring your own plan

Run on your own subscription

Route chat through your own Claude Code, Codex, or Google Antigravity CLI — your account, your plan, at no extra cost. Install the CLI, then pick it under "Your subscription (CLI)" in the model picker.

01 Summon

Call it from anywhere.

No Dock icon, no window to manage. Ghost 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 — no click, no shortcut. The floating bar stays inert until you summon it, so it never traps a stray hover.

⌥⇧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. No file paths or user content accepted — the link only ever opens, never exfiltrates.

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

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. Token budgets and mode names scale by provider; the figures above are Claude's ceilings, and local models run leaner.

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.

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 cited, source-backed chunks — not vague confidence.

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.

30 file formats
txtmdhtmlpdfdocxepubcsvjsonrtfswiftpyjststsxjsxjavacppchmsqlxmlyamltomllog
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, sync, query, search, open, status, remove, reindex, clear.

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.

57 built-in capabilities
18 file operations
9 document formats
3 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.

Documents

Generate real artifacts

Create Markdown, HTML, TXT, CSV, JSON, PDF, DOCX, PPTX, and XLSX — all through native macOS frameworks. If a local model returns a usable code block instead of calling a file tool, Ghost can save the artifact itself and return the real path.

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 — never silently run.

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.

05 Native

It speaks macOS
fluently.

Ghost doesn't shell out to scripts when it doesn't have to. It talks to Calendar, Reminders, Notes, Shortcuts, Vision OCR, and Speech Recognition through the same native APIs your other apps do.

Calendar

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

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.

Apple Notes

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

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.

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

Capture a region and extract text with Apple Vision OCR — fast or accurate mode. Ghost hides during capture and restores afterward.

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.

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.

Agent Console

An in-app terminal

Open with ⌘⇧T. Slash commands \clear, \model, \help. An activity timeline with live streaming output.

Intent Router

13 intent kinds

Classifies prompts into Answer, Research, Files, Summarize, Screenshot/OCR, Clipboard, Create, Organize, Automation, 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

Local-first
by default.

Privacy isn't a setting you find later. It's the architecture. Ghost separates local providers, local indexes, and hosted key paths — so where your data goes is a routing choice, not an afterthought.

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 — 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

Five independent switches

Web, local files, Mac automation, 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.

Deep link security

Only ghost://toggle

The only deep link Ghost accepts is one that opens Ghost. No file paths, no user content, no exfiltration vectors. Older deep link patterns are blocked.

08 Feel

Cosmic glass,
living aurora.

Ghost's interface is built on a "Cosmic Glass" design system — NSVisualEffectView blur with a subtle noise layer, and an aurora background that shifts hue with the tone of your conversation.

Codecyan
Neutralroyal violet
Emotionalchampagne
Creativeorchid

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 champagne 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 Siri-style iridescent streak that plays near the caret while you type — violet, cyan, champagne, and pink drifting 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, a reasoning depth meter, and skeleton loaders instead of spinners.

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.

Radial context menu

Right-click any message for a circular menu — Copy, Regenerate, Fork, Pin, Copy ID, Delete — with champagne highlight on the active item and red on destructive. A native NSMenu sits underneath for keyboard and VoiceOver.

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 open source, native macOS, and runs as a quiet accessory you summon with a keystroke — as a notch or a floating bar.