Introducing hermes: A CLI tool for Apple iMessage
I just released the first version v0.1.0 of hermes on my Github account. Hermes is named after the Greek god - the messenger of Mount Olympus. With hermes you can analyze you iMessage display statistics of your iMessage database on the command line and extract conversations. The supported formats at this time are JSON, plain text and YAML. An example looks like this:
$ hermes statistics Total messages: 100000 Received messages: 40000 Sent messages: 60000 Daily Average: 45.66 Monthly Average: <Not available> Yearly Average: <Not available> Chats: 30
Installing hermesTo install hermes, you can follow the instructions in the readme. There are two ways of installing hermes.
- Download the latest binary from the releases page. I am providing 64 bit binaries for both Intel and ARM architectures for MacOS.
- Build hermes from source with
go install github.com/f-ewald/[email protected]. This will get you the most up to date version.
./hermes, depending on your installation location.
UsageThe simplest way to get started is to call
hermesdirectly and follow the instructions from the help. At the moment, there are two main commands available:
You can view statistics with the
% ./hermes Hermes is a command-line interface for iMessage databases. You can use it to analyze and display retrieveConversations and view statistics. Usage: hermes [command] Available Commands: check Validate the environment completion Generate the autocompletion script for the specified shell conversation Show retrieveConversations, find participants help Help about any command statistics Display message statistics Flags: --config string config file (default is $HOME/.hermes.yaml) -d, --database string Full path to the chat database if it is different than the default path. -h, --help help for hermes -o, --output string The output format. Can be either json, yaml or text (default "text") Use "hermes [command] --help" for more information about a command.
statisticscommand. To display conversations, use the
conversations listcommand. This returns a list of all conversations sorted by internal id together with the participants. If this is a one-to-one conversation, there will be only one participant. Group conversations have multiple participants. To show the conversation, use the
conversation get <id>command. Replace
<id>with the unique conversation identifier that can be obtained from the list command. The conversation will contain the participants and all messages ordered by date. Each message is prefixed with the unique participant identifier.