/\___/\
  /.:(0)(0)\
<<<    ,____o>
  / / ,, \

What's New with Anvilope: September Edition

September 17, 2026

Hello! Once again the leaves are changing color, the days are getting shorter. Time marches on, and I haven’t written about Anvilope in a while. Given how long it’s been there’s a decent amount of updates to dig into.

Git Forge Housekeeping

As you may know, SourceHut added a new LLM policy to its terms of service at the end of August that (paraphrased) disallows:

  1. using LLMs for coding and other kinds of writing
  2. creating programs that include LLM features

Anvilope could reasonably satisfy the first requirement but unfortunately has no path to satisfying the second. The whole project is kind of one big LLM feature!

So in order to abide by the new terms I spent part of yesterday moving Anvilope’s repository and tickets to GitHub. The new location for the project is here:

https://github.com/dvshkn/anvilope

As for SourceHut, I still like what they’re doing over there and plan on keeping my subscription. I just won’t be using it for machine learning related stuff.

A Few Improvements So Far

The last Anvilope blog post I wrote was from over a year ago when I did a sort of project unveiling. While it never feels like I’ve made enough progress there have been some decent changes since then.

Applying Email Labels

Perhaps the most central feature of the whole project, Anvilope now supports copying an email message into a folder based on classifier results. In Gmail-land this is known as applying a label to a message. Hooray.

Database Migrations

Anvilope stores its program state in a SQLite database file, and I procrastinated on writing a schema migration system for a very long time. Happily, I did eventually get around to doing it once the shame of repeatedly deleting my database became too great. What does this mean for regular users? It means that user data should carry over smoothly from version to version. If it doesn’t it’s a bug!

Completions API and Llama.cpp Support

When I first began working on Anvilope I developed directly against Ollama’s raw inference API. It worked okay, but it was Ollama-specific and I wasn’t even using chat templates! Fast forward to today and virtually every piece of inference software exposes OpenAI-compatible chat completions API endpoints. After some refactoring Anvilope now uses this more standard API to access LLM inference. Intentionally, this change also unlocked using Anvilope with Llama.cpp, which is the inference software I regularly develop against today.

The Road to v0.1

Okay, so now that Anvilope can label emails does that mean version 0.1 is coming? Not quite. I would say the project has made it to that rut where it can do some useful things for me, but it’s not put together well enough yet for me to recommend it to other people.

In terms of what’s left to work on, I’ve decided to confront and undo an old YAGNI (you ain’t gonna need it) decision around the system only having one overarching classifier prompt. Adding support for multiple classifiers will let me also clean up the configuration format in a way that should make it resemble traditional email rules somewhat. I think that will be nice.

(Advice for Others: never let me play with syntax or I will fiddle with it ENDLESSLY)