Building Roost: a terminal I extend and use daily
Why I built my own terminal: a native macOS and Linux app on libghostty, organized by project, with quick theme/font switching and scriptable launch points for the commands I run most.
I built my own terminal because I wanted one I could make my own. The starting point was a small itch: I liked how cmux organizes work into projects, and I wanted that shape on Linux as well as macOS, on a terminal I understood well enough to extend. So Roost began as a cmux-like, project-organized terminal built on libghostty.
The first cut was a Go app that bundled GTK through cgo and ran on both platforms. Once I had used it enough to know I wanted to keep using it, I rebuilt it native per platform: Swift and AppKit on macOS, Rust and gtk4-rs on Linux. Building on libghostty was deliberate. I like Ghostty, I have a lot of respect for Mitchell Hashimoto's work and writing, and libghostty was encouraged as a reusable terminal foundation. That made it the natural starting point: high-quality terminal work I could build on while staying native and lean instead of reaching for web tech to render a terminal.