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>
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/hermes@latest. 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
hermes directly and follow the instructions from the help. At the moment, there are two main commands available:
Hermes is a command-line interface for iMessage databases.
You can use it to analyze and display retrieveConversations and view statistics.
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
--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.
To display conversations, use the
conversations list command. 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.