macOS 14+ · Local-first · Menu bar

A premium AI workspace
that lives in your menu 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 notch that appears the moment you need it and vanishes when you don't.

What Ghost is

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

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.

01 Summon

Call it from anywhere.

Ghost lives in the menu bar and answers to global shortcuts that work across every app on your Mac. No Accessibility permission required — the hotkeys are registered through Carbon, the same system Spotlight uses.

Menu bar

Click the ghost in your menu bar to toggle the notch. Right-click for a context menu: New Chat, Agent Console, Usage & Cost, Check for Updates, Quit.

Space

Global shortcut

Press Option+Space from anywhere to open the top-center Ghost notch. Configurable to ⌘⇧Space, ⌃Space, ⌃⌥Space, or ⌘⌥G.

⌥⇧Space

Ghost Bar

A compact quick-ask surface reuses the same routing, tool harness, deterministic parsers, and streaming pipeline for one-off questions from the active screen.

K

Command palette

One hub to switch provider and effort, insert saved prompts, run quick actions, and jump to destinations — fully keyboard-driven.

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, Check Grammar, or Ask Ghost for Feedback.

02 Route

One prompt.
Two engines.
Seven 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

Effort modes
Quick4 turns · 4K
Balanced12 turns · 8K
Deep40 turns · 16K
Max90 turns · 32K

Four effort levels control how many turns and tokens a run may spend — from a one-shot answer to a ninety-turn deep work session.

Approval modes

Ask

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

Safe Auto

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 50,000 files per pass. 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.

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.

60+ built-in capabilities
20+ file operations
8 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.

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, 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.

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.

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, an intent router that classifies prompts before they run, and a local model capability probe that picks the safest calling convention.

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, Clipboard, Create Artifact, Organize, Automation, Code, Debug, Review, Shell — then detects filenames, save targets, and RAG references before routing.

Local model probe

Picks the safest calling convention

Probes LM Studio and Ollama models for chat, JSON mode, native tool calls, and argument accuracy — then recommends native_tool_calls, json_action_mode, harness_first, or answer_only.

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 notch condenses into view with scale, blur, and a soft bloom — plus a trackpad haptic. A gentle haptic marks answer completion. Welcome-back confetti fires once a day from the logo.

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

The compact notch 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. Full keyboard navigation in the command palette. 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 menu-bar app you summon with a keystroke.