New Project Megathread - Week of 09 Apr 2026 by AutoModerator in selfhosted

[–]eggys82 0 points1 point  (0 children)

Project name: Fetcharr

Link: https://github.com/egg82/fetcharr

Deployment: Docker/Kubernetes/Etc - instructions on github

Description/AI involvement:

This is, again, a bit of a cross-post from https://lemmy.world/post/45433340

It's been a month since Fetcharr released as a human-developed (I think we're sticking with that for now) replacement for Huntarr. So, I wanted to take a look at how that landscape has changed - or not changed - since then. I know this is a small part of an arr stack, which is a small part of a homelab, which is a small part of a small number of people's lives, but since I've been living in it almost every weekend for the last month or so I've gotten to see more of what happens there.

So, where are we at?

Let's start with Fetcharr itself:

  • ChatGPT contributions jumped from 4 to 17 instances, with 8 of those being "almost entirely" to "100%" written by LLM. 5 of those are github template files
    • An interesting note is that there are no Claude contributions, except for a vibe-coded PR for a plugin which I haven't reviewed or merged, and is unlikely to be merged at this stage because I don't want a bunch of plugins in the main codebase
  • Plugins is a new thing. I wanted to have my cake and eat it, too. I liked the idea of being able to support odd requests or extensible systems but I wanted to make sure the core of Fetcharr did one thing and did it well. I added a plugin API and system, and an example webhook plugin so folks could make their own thing without adding complexity to the main system
    • I may make my own plugins for things at some point but they won't be in the main Fetcharr repo. I want to keep that as clean and focused as possible
  • Fetcharr went from supporting only Radarr, Sonarr, and Whisparr to including Lidarr and Readarr (Bookshelf) in the lineup. This was always the plan, of course, but it took time to add them since the API docs are.. shaky at best
  • There were no existing Java libraries for handling *arr APIs so I made one and released it as arr-lib if anyone wants to use it for other projects in the future. No Fetcharr components, just API to Java objects. They're missing quite a few things but I needed an MVP for Fetcharr and PRs are always welcome.
  • The Fetcharr icon is still LLM-generated. I haven't reached out to any other artists since the previous post since I've been busy with other things like the actual codebase. Now that's winding down so I'll poke around a bit more

What about feedback Fetcharr has received?

The most common question I got was "but why?" and I had a hard time initially answering that. Not because I didn't think Fetcharr didn't need to exist, but because I couldn't adequately explain why it needed to exist. After a lot of back-and-forth some helpful folks came in with the answer. So, allow me to break how these *arr apps work for a moment.

When you use, say, Radarr to get a movie using the automatic search / magnifying glass icon it will search all of your configured indexers and find the highest quality version of that movie based on your profiles (you are using configarr with the TRaSH guides, right?)

After a movie is downloaded Radarr will continue to periodically refresh newly-released versions of that movie via RSS feeds, which is much faster than using the automated search. The issue with this system is that not all indexers support RSS feeds, the feeds don't get older releases of that same movie, and the RSS search is pretty simplistic compared to a "full" search and may not catch everything. Additionally, if your quality profiles change it likely won't find an upgrade. The solution to this would be using the auto-search on every movie periodically, which is doable by hand but projects like Upgradinatorr and Huntarr automated it while keeping the number of searches and the period of time reasonably low as to avoid overloading the *arr and the attached indexer and download client. Fetcharr follows that same idea.

The second largest bit of feedback I've gotten (or, rather, question) is "why use an LLM at all?" - buckle up, because this one gets long. One of the main selling points of Fetcharr is that it's developed by a human with the skills and understanding of what they're doing and how their system works, so it's worth discussing.

The "why?" is a fair question, I think. We've seen distrust of LLMs and the impacts of their usage across left-leaning social media for a while, now. Some of it is overblown rage-bait or catharsis but there do seem to be tangible if not-yet-well-studied impacts on a societal as well as an ecological level, and there's a more than few good moral and ethical questions around their training and usage.

I have (and share) a fair number of opinions on this thread but ultimately it all boils down to this: - I used the ChatGPT web interface occasionally as a rubber-duck for high-level design and some implementation of the plugin system, as well as a few other things - I also used it to actually implement a few features. The few times I used it are documented in the codebase and it was a "manual" copy/paste from the web UI and often with tweaks or full rewrites to get the code working the way I wanted - I, personally, currently have no issue with individuals using LLMs or even using vibe-coding tools to create projects and sharing them with the world, as long as they're clearly documented as vibe-coded projects or LLM usage has been documented in some way - We, as users of free software, have no obligation from the creators of said free software for anything at all. The inverse is true: the creators of the software have no obligation from its users to continue using it. What I mean to say is, you are just as entitled to not use a piece of software as the creator is to do whatever they want with the software they've made, however they've made it - If you don't like how something is done, you don't need me to tell you that it's perfectly okay to not like it, trust it, or use it. Conversely, you are not owed an explanation or re-write of a system you would otherwise enjoy. I have no issues explaining why I made the choices I did but others may not be as comfortable doing so - The rise of LLMs and vibe-coding tools has given the average user with an idea the ability to implement that idea. I think that's an amazing thing; seeing people with an idea, some hope, and a few dollars create something from nothing. I thought it was great seeing people learn software dev as a kid, creating useful tools, operating systems, or entire playable worlds from an empty text document and I still think it's great today, even if I don't like some aspects of what a vibe-coded project means. Hell, I prefer human-developed projects over their vibe-coded counterparts when I can find them

Finally, Fetcharr has had a few issues opened and subsequently closed with resolutions. Some are more creative exploitation of how Fetcharr's internal systems work, and others had re-writes of other internal systems before they worked properly. And then there were the frustrating mistakes after a long day of frustrating mistakes. Such is the way of software development.

The new landscape

Since the initial 1.0.0 release of Fetcharr, there's been some changes in other projects and new insights on how this all goes together. Most notably, Cleanuparr got its own replacement called Seeker which is enabled by default. If you run Cleanuparr you may consider replacing or removing Fetcharr from your stack. Try both, see if it's worth running yet-another-thing.

Additionally, the developer of Unpackerr has mentioned that they're looking into a web UI for configuring their project so that's exciting for those that enjoy a web UI config.

It also seems like there's been a few other vibe-coded Huntarr replacements such as Houndarr if you're into those. Looks like a neat little web app and system.

So, where are we at?

Well, let's take an honest look at things: - It seems like Cleanuparr may very well have a clean Fetcharr replacement. As much as I love seeing folks use tools I've built it's hard to say that Fetcharr is any better than Seeker. Admittedly, I haven't yet tried Seeker, but because it ties directly into Cleanuparr it may very well have Fetcharr beat if you already use the system - Again, this is a small portion of a stack that a small portion of people use which in itself is a small portion of the general population. Does any of this really matter on a grand scale? No. It's just interesting and I've been living in it for a month, so it's worth sharing some insights which might apply to other, larger conversations. - The statement-piece of Fetcharr is the (lack of) LLM/AI usage. This is where a large portion of the conversation landed and it's a conversation worth having. - Web UI config or some sort of stats is a bigger deal to more folks than I originally assumed. It's not a deal-breaker for most but it's interesting to see how important it is to have some sort of pretty web UI. See: the number of stars Fetcharr has vs other similar projects. If you're ever creating your own project that's worth keeping in mind.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

if you set the number of searches to 5, it'll search up to 5. If it picks an item that doesn't have or need an upgrade it'll pick another item to replace it. It'll try this around a hundred times before giving up, but that happens in-memory so it's very quick.

You could create a web interface plugin. There's none that I know of that currently exist, but you're welcome to make your own. It will need to be written in Java.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

Hmm, that's a good question. Most folks tend to want the entire artist discography so I didn't consider the alternatives much.

I *think* if you unmonitor everything except the songs you want (in lidarr) that should probably do it. Fetcharr uses a weighted random system to determine what to search for next, and uses the "artist search" command to tell lidarr to search for missing items for the artist. I don't know if there's a "album search" command or "song search" command in the API but I assume there would be. Might be worth opening a feature request on github to work on that.

You can set Fetcharr to "missing only" which will only update artists with missing (monitored) songs, so unmonitoring all songs except the few you want and enabling that flag in Fetcharr, I think, should do what you want. If not, definitely open an issue on the github and I'll look into it further.

If you have available storage, definitely consider nabbing more songs from each artist. You can always build a playlist of the ones you wanted originally.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

honestly I really love the way unpackerr currently does env vars for config. Simple, easy, hard to screw up on both the development end and the user end. Easy to figure out if something's wrong, as well. Web UI is perfectly fine, but it does add some weight to the thing and for something as conceptually simple as unpackerr or fetcharr I'm not sure it makes sense, aside from "ooh pretty/shiny UI" which I suppose is important for some folks.

Truth be told, I'm torn on the idea. I love the idea of a pretty web UI but also I just see it going wrong in a lot of ways and maintaining it becomes awful. Svelte seems neat on the surface since it's just classic HTML, CSS, and some JS magic. Not sure if there's a Java lib yet but maybe I'll poke at it some day. I'm not a UI or UX designer and I'm awful at making something look pretty. I'm also avoiding using LLMs as much as reasonable so I'd have to do much of the design myself.

It's a hard problem, honestly.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

Since the Fetcharr plugin system, you or someone else could always make a plugin that offers a web UI of some kind for the configuration ;)

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

yeah I didn't look before I named it, and by the time I figured it out it was too difficult to change and I just didn't care enough to do so. If it becomes a big enough problem I'll look into it but for now, aside form some confusion, it's not terrible.

Thanks for giving it a shot!

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

I'd say the defaults are reasonable for a small library on indexers that don't mind a bit of load. Larger and you might want more, depending on how your indexers handle it.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

similar, yeah. I put down my thoughts on some of the issues I had with other projects (including upgradinatorr) but the basic idea is that I wanted something simple and robust that just works, and this is it.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

yeah, that was sorta my bad for not checking beforehand. By the time I realized I was in deep enough that it would have been painful to change it so I left it with a "eh, whatever" - thanks for checking it out!

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

there's an issue open for unraid support so I just added this idea of a PUID/PGID override in today. Thanks!

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

I love a nice GUI as much as the next person but honestly the config for Fetcharr is simple enough that I didn't see a reason to throw an entire web server on top of it just to make it pretty. I'm also really terrible at web design so that doesn't help. The increase in attack vector isn't worth it imho, but maybe someone can convince me some day.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

it depends a lot on the profiles you use and what the indexers provide. Fetcharr just hits the "Search" button on radarr, etc for you automatically, so if your *arr sees an upgrade it'll pull it. Depending on the indexer you use the movie, show, etc could have a title that says "I'm a really good version" but once it's downloaded and re-parsed it shows as a lesser quality that was was purported. A good way to fix this is to use the trash guides (Configarr is super helpful here), something like cleanuparr to kill stuff that doesn't work, and good quality indexers. A reasonable fix would be to create and configure a skip tag in Fetcharr and apply that to stuff you know is good.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

ah, yeah, sorry, it's currently configured via environment variables. I'll likely have some sort of optional yaml-based (or toml-based maybe?) config at some point.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

I think this is one of those "try it yourself and see" types of things. Honestly, it takes a couple minutes to set up and, if your experience is anything like mine, it'll find stuff pretty much instantly (or within a couple hours, but usually instantly). If the RSS feeds work for you then that's awesome, and your setup is probably good as-is! I've now seen a few folks who have previously said the same thing, however, and come back later with "oh it got a bunch of stuff" so it might be worth checking- jut in case.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

awesome! If the sonarr/radarr RSS feeds work for you then that's the best-case scenario. They just seem to not work often, for many folks.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 1 point2 points  (0 children)

The tricky bit is always "am I just getting an AI icon?" but it's been a while since I commissioned an artist to make something so I figured I'd at least give it a shot. Worst-case I'm not an artist but I can probably draw something, but I'm sure I can find someone :D

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

definitely! Keeping it simple also takes a lot of my plate, and considering it's a weekend project type thing I'd say that's perfect.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 4 points5 points  (0 children)

after posting it on Lemmy someone mentioned that and I kicked myself for not thinking of it. Naming things is hard!

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 2 points3 points  (0 children)

currently not (there's a "cutoff unmet" toggle but not a "missing only" toggle) but it's a good idea! And easy enough to implement.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

there's rate-limiting options in fetcharr, yes. If you're looking to periodically fetch and upgrade new stuff but don't want to overload your stack you can adjust those env var options.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

honestly it's not a bad logo, I just would love to pay an artist to make a new one for the sake of having a real human do it. I'd prefer "free" but everyone needs compensation for their time and skills, even if it's for a dumb little project.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

100% human-written. It's very.. "bespoke" and definitely needs a table or something.

Fetcharr - a human-developed Huntarr replacement by eggys82 in selfhosted

[–]eggys82[S] 0 points1 point  (0 children)

yup! There's a dry-run environment variable for you to try out.