Static is a tool that polls Gemlogs - in convention-based or Atom formats - and sends out email digests of their contents. It's written in Nim and uses SQlite for data storage. The code is small but could definitely be smaller. At some point a macro-oriented rewrite of static_server and static_cli is on my radar. Other things I plan to address -- - Unit tests. - Reference service files for systemd, OpenRC, and probably sysvinit. - RSS. - A bunch of general housekeeping stuff. There are areas where my lack of familiarity with Nim shows. This has been a "learn Nim" project and there is most definitely room to improve. - Changes to how ingests are managed. I'd like to take a smarter approach to this than "hash all the URLs we eat, forever." (There's not even an especially good reason to be hashing them in the current manner to begin with.) - Multithreading, especially in feed polling. - Make static_data less irregular! This can be compiled with nim build and will generate three binaries in the bin directory. static This is the batch processor. Pulls the feeds, compares them against the already-ingested hashes for that feed, generates an email with a digest of any new posts, then terminates. Takes a configuration path as a command-line param; if not given one, defaults to static.conf in the working directory. static-cli The command-line tool for managing the Static instance. It doesn't need the full set of configuration keys, so it just takes a path to the SQlite database as a parameter. "static-cli help" describes the available parameters and their syntax. static-server The frontend Gemini daemon. Like static, it takes a path to a config file as a param, or defaults to static.conf. There's a sample static.conf included in the source distribution. This is a JSON config file, and the keys should generally be self-explanatory, but will be better documented in a future version. The Static database can be generated with dbinit.sql in the scripts/ directory.