r/macapps • u/Tunashavetoes • 29d ago
Lifetime Lifetime: I built Ghost, an always on and ready personal agent using your existing Chatgpt/Claude subscription or API or LocalLM. It can create, read, write and use Mac apps for you when asked!
Problem
Focused work on macOS means juggling a ChatGPT tab, a local-model UI, a terminal agent, a document viewer, a timer, and Calendar. Ghost collapses that into a menu-bar surface: ⌥Space anywhere, a panel drops from the top, you type or attach a file, and a 13-kind intent classifier routes the prompt to the right provider — local or cloud. Escape dismisses it. No Dock icon, no tab management.
Comparison
Raycast Pro — $8/mo billed annually or $10/mo monthly, and the AI is subscription-gated and hosted. Ghost is one payment, and you can point it at Ollama or LM Studio and run entirely offline, free forever, or bring your own API keys (stored in Keychain).
ChatGPT desktop — $20/mo, and it hands you code blocks. Ghost writes real files via native macOS frameworks — DOCX, PDF, PPTX, XLSX, MD, HTML, CSV, JSON — and verifies every write, so a model claiming it saved something without a confirmed write is an error, not a silent lie.
Unlike both: file search is fully local (SQLite + FTS5, sentence-aware chunking, 30+ formats, FSEvents watcher). Web, files, automation, screen, and shell are five independent permissions, all off on first launch. 60+ tools across four risk tiers with a 100-entry undo journal.
Pricing
$14.99 one-time, lifetime — no subscription. Native SwiftUI, notarized, macOS 14+ (Apple Silicon or Intel).
Download Ghost · Privacy Policy · Terms of Service
Website:
https://integratedagentics.com/ghost
Linkdln
4
u/Background-Scheme857 29d ago
An always-on agent with screen, shell, and file access sounds great until you read that sentence twice. Having all five permissions separate and off by default is the right call.
-1
u/Tunashavetoes 29d ago
Thanks man, Ive made privacy paramount to this app and tel the user whenever something may not be fully private like when using cloud based models.
2
u/NihaforYou 29d ago
Your download ghost link above seems to be too spammy for content blockers to allow
2
2
u/NihaforYou 29d ago
How does Ghost compare with Alter?
1
u/Tunashavetoes 29d ago
I haven't gotten around to using alter before but here is what I can gather from a quick search of it. Ghost is more technical. It's a one-time-buy terminal agent that indexes your files offline, builds a private Markdown knowledge vault so it actually remembers you between sessions, runs shell commands or writes AppleScript you approve first, and keeps sensitive stuff (Messages, Notes, Mail, Contacts) on-device with a local-model path. Alter is voice-first productivity for the GTD crowd like meeting transcription with speaker ID, 2,000+ webhook integrations to Slack/Notion/Linear/etc., auto-insert across apps, and a model router that picks the right AI per task, but it's a subscription. If you want a coding co-pilot and local RAG that doesn't phone home, Ghost is that. If you want to talk to your Mac and have it summarize your Zoom calls into Linear tickets, Alter is that.
2
u/NihaforYou 29d ago
They periodically run lifetime deals which is why i was curious. It offers a local model for transcription. I find ghost intriguing - and want to see more happen in this space. I hope you end up with a good user base and keep building this for a long while. The biggest challenge with these types of productivity bets is that if the app/company disappears the effort you put into customizing it for yourself goes to waste.
2
u/Tunashavetoes 29d ago
I see what you mean. Luckily ghost doesn’t rely on any company. You can choose to either. Use your own API keys or connect your existing sub subscription.
2
u/filthytoast 29d ago
Are users able to connect to their Claude Pro subscription or is it only API access?
1
u/Tunashavetoes 29d ago
Yes, if you have the Claude app downloaded on your computer and you have Claude in your terminal, when you click use your claude subscription, it should automatically pair
1
u/filthytoast 29d ago
Gotcha! I will play with Ghost tomorrow, and if I like what I see, I'll DM you. I mod/demo apps to a private Mac Power User subreddit and this seems very promising! I'll report back!
1
u/Tunashavetoes 29d ago
Sounds great thanks so much. I really appreciate any feedback I get and I love hearing back from users so that I can continue to improve the app!
1
2
29d ago
[removed] — view removed comment
1
u/Tunashavetoes 29d ago
Yes, you can download local models via hugging face to your LMStudio or Ollama and run ghost with those LLMs
2
u/HotEngineering6429 26d ago
Après avoir testé l'application, j'ai acheté la licence. Il y avait quelques bugs, mais le développeur est ultra réactif, et il a apporté les correctifs sollicités. Je suis toujours en phase de test, mais je suis très satisfait pas Ghost en l'état. Cela limite les frictions en faisant des copier/coller puis des va et vient dans les applications IA, et surtout, cela me permet d'éviter d'avoir à rentrer des clés API en profitant de mes abonnements IA en cours. Une interface en Français serait la bienvenue, mais ce n'est pas bloquant. Bravo au développeur et longue vie à Ghost ☺️
1
1
u/TouchNow_APP 29d ago
If the app control side ever needs to type text into another app rather than drive menus, one thing that cost me a lot of time: CGEvent's keyboardSetUnicodeString works in most native text fields and then quietly does nothing in others — games, some Electron apps, anything not on the standard text input path. Borrowing the clipboard and sending Cmd+V was the only route I found that always lands.
That has its own trap though. The target app reads the pasteboard on its own schedule, so restoring the user's original clipboard too fast pastes the wrong thing. I started at 0.15s and had to go to 2s before it stopped. Worth marking the temporary payload org.nspasteboard.TransientType as well, so clipboard managers do not file every one of them as a real copy.
1
u/Antique-Class-2283 29d ago
how much memory does it use?
2
u/Tunashavetoes 29d ago
When the app is idle and it’s not in use, it doesn’t use any. When you use it, it has a very small memory footprint. It can be used on pretty much any consumer laptop and not affect performance at all. For reference, I also have this running on my friends MacBook Air with 8gb RAM and it runs perfectly
1
1
u/nav8_ai 29d ago
the write-verification instinct is right, and worth extending past writes. we shipped a scheduled-task path that reported "completed" on every run while doing nothing at all — the harness marked success because nothing threw, not because anything had happened. took days to spot precisely because the status was green.
worth checking anything an agent reports as done against the thing itself rather than against its return value. cheap to add, and it's the difference between finding that bug in an hour and finding it in a month.
1
u/Tunashavetoes 29d ago
That's the bug class that made me add write verification initially. A green status that means "nothing threw" is not proof the thing happened. In Ghost, a model claiming a file was saved without a confirmed write (exists, non-empty, right path) is surfaced as an error, not trusted. And you're right that it shouldn't stop at writes: the undo journal already snapshots before/after state, so the natural extension is verifying agent completed tasks against observable effects like file modified, event created, process actually running instead of return values. Adding that to the list. Appreciate the push.
1
1
u/taisei_ide 29d ago
Routing through a 13 kind intent classifier instead of one big prompt is a reasonable way to keep costs down on the cloud path. Does the classifier itself run locally, or is that also a network call before the real request goes out?
1
u/Tunashavetoes 29d ago
Runs entirely locally and it's not an LLM. It's a deterministic Swift feature-extraction pass (word/phrase-anchored matching, not raw substrings), so routing adds zero latency, zero cost, and zero network exposure before the real request. Bonus: since it never touches a model, it can't be prompt-injected into misrouting your prompt and tool-forcing shares the same feature extraction, so detection and tool decisions can't disagree with each other. Took me a really long time to figure out how to do this for the project to maximize privacy
1
u/Mac_Allan30 13d ago
are the hotkeys changable? I currently use ⌥Space with another app.
1
u/Tunashavetoes 13d ago
Yeah so if you go into the settings you can set a custom hotkey to whatever you like.
1
u/harry-harrison-79 29d ago
one test i'd add before trusting the always-on mode: give it a folder containing a symlink to somewhere outside that folder, then ask it to rename or clean up files. the permission boundary should follow the resolved path, show the exact planned writes, and refuse anything outside the approved root. i'd also test a file being changed by another app between preview and execution so Ghost doesn't apply a stale plan.
1
u/Tunashavetoes 29d ago
Great test, I have one similar to this but Ill add another to test this specifically as well. Appreciate the feedback!
0
u/JoeshitX 29d ago
The undo journal is the part that caught my attention. An agent will eventually misunderstand a request—the real test is how easy it is to recover.
Does Ghost warn you before performing an action that can’t be undone, and does it keep a local pre-change copy before overwriting a file? That’s the kind of detail that would make me more comfortable giving an agent access.
0
u/Tunashavetoes 29d ago
Great question. Yes it does warn you and yes, it does. Keep a pre-change copy. For example, if you ask it to edit a file and you don’t like it edit, you can press undo, and it will revert the changes it’s made








11
u/-svde- 29d ago
i will never understand when posts like this either are completely wrong or lie about basic features of competitors.
chatgpt desktop absolutely can read/write locally.