A MacOS app for better iMessage search and statistics
See the code
Native macOS search and analytics for your iMessage history.
Everything runs locally — nothing is uploaded, sent, or shared.
with:Henry, last:7d, type:image, regex, AND, OR⌃⌥Space from anywhere (rebindable in Settings)brew install xcodegen xcbeautify create-dmg
git clone https://github.com/ammesatyajit/hourglass.git
cd hourglass
./scripts/generate.sh # XcodeGen → Hourglass.xcodeproj
./scripts/build.sh # Debug build → build/Build/Products/Debug/Hourglass.app
./scripts/test.sh # ~500 tests, ~1 second
open Hourglass.xcodeproj # or just iterate in Xcode
Requires macOS 15+ and Xcode 26+. Apple Silicon recommended.
Or hand the repo to a coding agent and say "set this up locally and run the tests." The project is XcodeGen + SPM with a hermetic test suite (synthetic fixture, no real data), so most agents figure it out.
PRs welcome. Run ./scripts/test.sh before sending; everything should be green. For larger changes, file an issue first so we can talk about shape.
The one hard rule: no new network calls. Local-only is the core promise. The one existing outbound is the optional first-run Hugging Face model download for NL search — and it's gated/opt-in.
MIT — fork it, audit it, ship your own version.
164 commits
Swift
94.9%
Shell
2.4%
TypeScript
1.1%
A MacOS app for better iMessage search and statistics
See the code
Native macOS search and analytics for your iMessage history.
Everything runs locally — nothing is uploaded, sent, or shared.
with:Henry, last:7d, type:image, regex, AND, OR⌃⌥Space from anywhere (rebindable in Settings)brew install xcodegen xcbeautify create-dmg
git clone https://github.com/ammesatyajit/hourglass.git
cd hourglass
./scripts/generate.sh # XcodeGen → Hourglass.xcodeproj
./scripts/build.sh # Debug build → build/Build/Products/Debug/Hourglass.app
./scripts/test.sh # ~500 tests, ~1 second
open Hourglass.xcodeproj # or just iterate in Xcode
Requires macOS 15+ and Xcode 26+. Apple Silicon recommended.
Or hand the repo to a coding agent and say "set this up locally and run the tests." The project is XcodeGen + SPM with a hermetic test suite (synthetic fixture, no real data), so most agents figure it out.
PRs welcome. Run ./scripts/test.sh before sending; everything should be green. For larger changes, file an issue first so we can talk about shape.
The one hard rule: no new network calls. Local-only is the core promise. The one existing outbound is the optional first-run Hugging Face model download for NL search — and it's gated/opt-in.
MIT — fork it, audit it, ship your own version.
164 commits
Swift
94.9%
Shell
2.4%
TypeScript
1.1%