If you read my last post about project management in the terminal, you know I have a simple bash script that lets me jump between projects with proj myproject.
That was the start of this.
Every time I opened a project I did the same thing: open Ghostty, jump to the folder, split panes, start the dev server, open the editor. Manually. Every time.
When I found out that Ghostty has native AppleScript support I wrote a quick test script. Split panes, run commands, all automated. 🙌🏼 It worked!
But writing a custom .applescript for each project isn’t a workflow. So I built 👻 Hauntr.
How Hauntr works
Hauntr is a macOS menu bar app. You design your project’s pane layout visually, assign commands to each pane, and launch everything with one click or from the CLI.

Features
- Visual pane editor - split, assign commands, done
- Custom names -
📰 Blogin the menu,blogin the terminal - Project groups -
Client Work,Side Projects, keeps the menu clean - CLI tool -
hauntr myprojectfrom anywhere
Shell integration
Hauntr fits right next to my old proj script. I replaced proj with a single p() function that handles both:
p() {
if [ "$2" = "win" ]; then
hauntr "$1" --window
elif [ "$2" = "here" ]; then
hauntr "$1" --here
elif [ "$2" = "cd" ]; then
cd "$(hauntr "$1" --path)"
else
cd "$(hauntr "$@" --path)"
fi
}
Now I have one shortcut for everything:
p blog # cd into the project folder
p blog here # launch layout in current window
p blog win # launch layout in a new window
p blog alone just cds into the folder, same as before. When I want a full session I add here or win.
Open source
MIT license, built in Swift.
Try Hauntr and let me know what you think on X.