Edition No. 30 · 24 Sep 2026
Twelve repositories for watching a machine, backing it up and publishing what it holds
Jellyfin's release after 10.11.11 is 12.1, and the missing version 11 was a deliberate decision.
Jellyfin is one of the best-known ways to keep a film and music collection on a machine of your own. Its last version was 10.11.11. Its newest version is 12.1. There is no version 11 and there never will be: the project decided to drop the leading 10. it had carried since 2018, so the release that would have been 10.12 came out as 12.0. That is entry 11, and it is the most interesting true thing found this morning.
The rest of the edition is a backup tool that finally gives restic a screen, two ways to watch a machine without paying a monitoring bill, a PostgreSQL backup project with 319 stars, and a file renamer that shows you the whole rename before it touches anything.
We aim for twelve every day. Some candidates fall out while we check them — those are listed at the end, with the reason.
Three things worth knowing
Jellyfin skipped version 11 on purpose. The release after 10.11.11 is 12.1. The project's own notes say it is "dropping the preceding 10." from its version numbers, so what would have been 10.12.0 shipped as 12.0. Eight release candidates, 12.0 and then 12.1 are all on the releases page; there is nothing numbered 11 between them, and there will not be.
A modified open-source licence is still a licence somebody has to read. GoatCounter's licence file opens by saying it is "a slightly modified version of European Union Public License (EUPL) 1.2", with a change to the appendix that lists compatible licences. EUPL-1.2 has appeared twice before in this archive — Edition 19 covered Zola and Edition 27 covered tere — and this is the first copy of it carrying an edit.
The file-renaming category is mostly abandoned. Four alternatives to F2 were opened this morning. One is alive: pipe-rename, last code 21 February 2026. The other three stopped between twenty-one and forty-seven months ago — massren in December 2024, node-rename-cli in January 2023 and, in the mail-filter list, gmail-britta in October 2022. A simple job that is finished attracts no maintenance, which is why the survivors matter.
If you only do three things
- ayoisaiah/f2 (#7) — five minutes, on files that already exist. It renames a folder full of files in one command and shows you the full list of changes before it does anything. Nothing is renamed until you say so.
- garethgeorge/backrest (#3) — one evening, and it is the strongest thing on the page. It puts a web screen on top of restic, so scheduling backups and, more importantly, restoring a file becomes clicking rather than remembering a command.
- k1LoW/tbls (#5) — half an hour, read-only, on a database that already exists. It writes the documentation nobody ever writes: every table, every column, every link between them, as Markdown you can keep in the project.
Every link in one place
| # | Repository | What it does | Stars | Licence | Project site |
|---|---|---|---|---|---|
| 1 | glanceapp/glance | One page with your feeds and machine stats | 37,192 | AGPL-3.0 | docs |
| 2 | openobserve/openobserve | Logs, metrics and traces in one program | 21,692 | AGPL-3.0 | openobserve.ai |
| 3 | garethgeorge/backrest | A web screen for restic backups | 7,277 | GPL-3.0 | garethgeorge.github.io/backrest |
| 4 | arp242/goatcounter | Visitor counting with no personal data | 5,858 | EUPL-1.2 (modified) | goatcounter.com |
| 5 | k1LoW/tbls | Documents a database and checks its rules | 4,344 | MIT | github.com/k1LoW/tbls |
| 6 | pgmoneta/pgmoneta | PostgreSQL backup and restore in C 💎 | 319 | BSD-3-Clause | pgmoneta.github.io |
| 7 | ayoisaiah/f2 | Renames many files at once, safely 💎 | 2,432 | MIT | f2.freshman.tech |
| 8 | mbrt/gmailctl | Gmail filters written as a file 💎 | 2,199 | MIT | github.com/mbrt/gmailctl |
| 9 | mufeedvh/code2prompt | A folder of code as one prompt | 7,501 | MIT | code2prompt.dev |
| 10 | 11ty/eleventy | Templates in, plain website out | 19,870 | MIT | 11ty.dev |
| 11 | jellyfin/jellyfin | Your film and music collection, streamed | 55,366 | GPL-2.0 | jellyfin.org |
| 12 | ranaroussi/yfinance | Market prices into Python, free | 25,217 | Apache-2.0 | ranaroussi.github.io/yfinance |
Jellyfin skipped version 11 on purpose
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
37,192 stars · AGPL-3.0 · v0.8.5 (2026-05-30, /releases/latest and ungh agree) · Track this in Scout
One configurable web page that gathers RSS feeds, weather, release notifications and machine statistics into a single view.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Glance is a small program written in Go that reads a configuration file and renders a dashboard in the browser. Each block on the page is a "widget" — an RSS feed, a weather forecast, a list of the newest releases of a repository, a graph of processor and memory use.
What it is good for. Anyone who starts the day by opening the same eight websites in the same order. It is also useful on a machine that runs a few services, because one of the built-in widgets shows processor, memory and disk use without installing a separate monitoring system.
- One binary, a few megabytes, and it will happily run on the smallest rented machine you can buy.
- The configuration is one readable YAML file, so the whole page can be kept in version control and copied somewhere else in a minute.
- It reads normal RSS and Atom feeds, so it works with sites that have nothing to do with the project.
- AGPL-3.0. If you modify it and let other people use your modified copy over a network, you have to publish your changes. Running it unmodified for yourself is fine.
- Everything is configuration. There is no click-and-drag editor, so a first page takes a little reading of the documentation.
- The newest release is v0.8.5 from 30 May 2026, while code landed on 5 September 2026. Still before version 1.0, so settings can change between releases.
- gethomepage/homepage
The same idea with 32,815 stars and far more built-in connections to other self-hosted services, but a heavier Node.js install.
Track this in Scout - bastienwirtz/homer
A much simpler static start page with links and nothing live, which makes it smaller and less useful.
Track this in Scout - ajnart/homarr
A drag-and-drop dashboard you arrange in the browser instead of in a file, at the cost of a database and a bigger install.
Track this in Scout
mkdir glance && cd glance curl -fsSL https://raw.githubusercontent.com/glanceapp/glance/main/docs/glance.yml -o glance.yml docker run --rm -p 8080:8080 \ -v "$PWD/glance.yml:/app/config/glance.yml" \ glanceapp/glance:latest
21,692 stars · AGPL-3.0, with a separately licensed commercial Enterprise Edition for single sign-on and fine-grained permissions · v1.0.4 (2026-09-24T11:57:05Z, /releases/latest and ungh agree to the minute) · Track this in Scout
Logs, metrics, traces and browser monitoring in one Rust program that stores data in a compressed columnar format on cheap object storage.
▶Repo detailsthe review · specs · pros & cons · install
What it is
OpenObserve is an observability platform written in Rust that stores data in a compressed columnar format and can keep it on cheap object storage instead of fast disks. It covers logs, metrics, traces and browser-side monitoring in a single deployment.
What it is good for. Anyone running two or three services who has so far been reading logs by connecting to the machine and scrolling. It is also for anyone who priced a hosted logging service, saw what a few gigabytes a month costs, and closed the tab.
- One binary or one container, with no separate database, message queue or search cluster to install first.
- It speaks OpenTelemetry, the common standard for sending this kind of data, so most programming languages already have a library that can talk to it.
- Old data can be pushed to object storage, which is the cheapest place to keep things you will rarely read again.
- AGPL-3.0, and there is a separate Enterprise Edition under a commercial licence that holds single sign-on and fine-grained permissions. The free version is complete for one person or a small team; it is not the same product a company buys.
- Searching a lot of data still wants memory. Budget 1 to 2 GB before you store anything serious.
- The vocabulary is not simple. Logs, metrics and traces are three different things, and the screen assumes you already know which one you want.
- grafana/loki
28,934 stars, logs only, and designed to sit beside Prometheus and Grafana rather than replace them, so it is more pieces to run.
Track this in Scout - SigNoz/signoz
32,055 stars and the same three-in-one idea, built on ClickHouse, with a stronger focus on application performance monitoring.
Track this in Scout - VictoriaMetrics/VictoriaMetrics
17,611 stars, built for numbers over time rather than logs, and very economical with disk.
Track this in Scout
docker run -d --name openobserve \ -v "$PWD/openobserve-data:/data" \ -p 5080:5080 \ -e ZO_ROOT_USER_EMAIL="you@example.com" \ -e ZO_ROOT_USER_PASSWORD="change-this-password" \ public.ecr.aws/zinclabs/openobserve:latest
7,277 (ungh); the repository page displayed 7.4k stars · GPL-3.0 · v1.14.1 (2026-07-12, /releases/latest and ungh agree) · Track this in Scout
A web screen that schedules restic backups, applies retention rules and restores single files by browsing a snapshot.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Backrest is a Go program that runs restic on a schedule and keeps the schedule, the repository list and the retention rules in one place. It ships as a single binary with restic as its only dependency, and it is reached in a browser on port 9898.
What it is good for. The situation where backups exist but nobody has ever tested a restore, because restoring means reading the manual again under pressure. It is also for anyone who has put off backups entirely because the good tools are all command-line tools.
- Restoring is browsable. You open a snapshot, find the file, and download it — which is the half of backup that usually goes untested.
- It supports the destinations restic supports, including S3-compatible storage, Azure, Backblaze B2 and a plain folder, so the copy can live off the machine.
- Backups are encrypted and de-duplicated by restic itself, so a daily copy of 200 GB does not cost 200 GB every day.
- GPL-3.0. Fine to run; a problem if you wanted to build it into a closed product you distribute.
- It is a screen on top of restic, not a replacement, so restic's rules still apply. Lose the repository password and every backup is unreadable for good.
- The web page has no authentication switched on by default. Do not expose port 9898 to the open internet before setting a password.
restic/restic35,949 stars, the backup program underneath this one, covered in Edition 8. Everything Backrest does, restic does from a terminal.
Track this in Scout
rustic-rs/rustic3,274 stars, covered in Edition 21; a rewrite of restic in Rust that can read the same backup repositories.
Track this in Scout- duplicati/duplicati
14,879 stars, an older backup program that has always had a web interface, with wider destination support and a heavier .NET install.
Track this in Scout
docker run -d --name backrest \ -v "$PWD/backrest-config:/config" \ -v "$PWD/backrest-cache:/cache" \ -v /path/to/the/files/you/want/copied:/userdata:ro \ -v /path/to/where/backups/go:/repos \ -p 9898:9898 \ ghcr.io/garethgeorge/backrest:latest
5,858 stars · EUPL-1.2 (modified) - the LICENSE file states 'a slightly modified version of European Union Public License (EUPL) 1.2', changing the appendix that lists compatible licences; count.js is ISC · v2.7.0 (2025-12-15, the release title carries the year and ungh agrees) · Track this in Scout
Web analytics that records a visit by hashing non-identifying details rather than storing an identifier, so it keeps no personal data and needs no cookie banner.
▶Repo detailsthe review · specs · pros & cons · install
What it is
GoatCounter is a web analytics program written in Go. A visit is recorded by hashing a few non-identifying details rather than by storing an identifier, so the same person on the same day counts once without a record that can be traced back.
What it is good for. Anyone who put a large analytics script on a small site, then found themselves adding a consent banner to justify it. It is also for anyone who only ever looked at two numbers — how many people, and which page — and never used the other four hundred.
- No cookies and no personal data, which removes an entire legal conversation for a small site.
- The counting script is about 3 KB, against roughly fifty times that for the large hosted products, so pages stay fast.
- It runs on SQLite, a database that is just a file, so there is nothing else to install or back up separately.
- The licence is EUPL-1.2 with a modification to its compatible-licence appendix, written by the author. EUPL is a real open-source licence and this is the third project in this archive to use it, but a modified licence is a licence somebody has to read.
- The newest release is v2.7.0 from 15 December 2025 while code landed on 20 July 2026, so a release is nine months old. That is a release habit, not a sign of trouble.
- It is deliberately simple. There are no funnels, no cohorts and no session recordings, and no plan to add them.
umami-software/umami38,976 stars, covered in Edition 10; more reports and a nicer interface, but it wants PostgreSQL or MySQL rather than a file.
Track this in Scout- plausible/analytics
29,181 stars, the best-known privacy-first analytics product, with a heavier self-hosted install built on Elixir and ClickHouse.
Track this in Scout
medama-io/medama642 stars, covered in Edition 23; smaller and newer than GoatCounter, with the same no-cookies position.
Track this in Scout
curl -fsSL -o goatcounter \ https://github.com/arp242/goatcounter/releases/latest/download/goatcounter-linux-amd64 chmod +x goatcounter ./goatcounter db create site -vhost stats.example.com -user.email you@example.com ./goatcounter serve -listen :8081 -tls http
4,344 stars · MIT · v1.96.0 (2026-09-03, /releases/latest and ungh agree) · Track this in Scout
Reads a live database and writes its documentation as Markdown with generated diagrams, then lints the schema against rules you set.
▶Repo detailsthe review · specs · pros & cons · install
What it is
tbls is a single Go binary that connects to a database and produces Markdown documentation with a diagram of every table and every relationship. It also includes a linter, so the same command can fail a build when the schema drifts from the rules you agreed.
What it is good for. Anyone who has inherited a database that nobody documented, which is almost everyone. The linting half is for a small team that keeps meaning to write column comments and never does.
- Read-only. It connects, reads the structure, and writes files. There is no version where it changes your data.
- It supports PostgreSQL, MySQL, SQLite, SQL Server, BigQuery, DynamoDB and several more, so one tool covers a mixed estate.
- The output is Markdown and the diagrams are generated, so the documentation lives in the same place as the code and is reviewed like the code.
- It documents structure, not meaning. It will tell you a column is called
statusand an integer; it cannot tell you that 3 means refunded. - The rules of the linter have to be written by somebody, and an empty rule file finds nothing.
- Diagrams of a large database are large. Past about eighty tables the single picture stops being readable and you need to split it by schema.
azimuttapp/azimutt2,183 stars, covered in Edition 28; a visual explorer you click through in a browser, rather than files you commit.
Track this in Scout- schemaspy/schemaspy
3,721 stars, the long-standing Java tool that does the same job and outputs HTML; its last code landed 5 March 2026.
Track this in Scout - holistics/dbml
3,702 stars, a small language for writing a schema by hand and generating diagrams from it, which is the opposite direction.
Track this in Scout
# macOS or Linux with Homebrew brew install k1LoW/tap/tbls # or with Go installed go install github.com/k1LoW/tbls@latest tbls doc "postgres://user:password@localhost:5432/mydb?sslmode=disable" ./dbdoc
319 stars · BSD-3-Clause · 0.21.0 (2026-04-29, the repository page and ungh agree) · Track this in Scout
Full and incremental PostgreSQL backups with continuous write-ahead log shipping and point-in-time recovery, written in C for low memory use.
▶Repo detailsthe review · specs · pros & cons · install
What it is
pgmoneta takes full and incremental backups of PostgreSQL, ships the write-ahead log continuously, and supports point-in-time recovery — putting the database back to the state it had at a specific timestamp. It compresses and can encrypt the stored copies and exposes its own numbers for monitoring.
What it is good for. The situation where a database runs on one machine, the backup is a nightly dump, and nobody has worked out how much work would be lost if the disk failed at four in the afternoon. Point-in-time recovery turns "we lost today" into "we lost four minutes".
- Incremental backups and continuous log shipping, so the gap between the last good copy and now is minutes rather than a day.
- Written in C with small memory use, which matters when the backup tool shares a machine with the database it is protecting.
- BSD-3-Clause, one of the least demanding licences there is. No conditions beyond keeping the copyright notice.
- 319 stars. That is the smallest project in this edition, and it means fewer worked examples and fewer people who have hit your exact problem.
- PostgreSQL only, and it expects a Unix-like system. Packages exist for RPM-based distributions; elsewhere you compile it.
- The newest release, 0.21.0, is dated 29 April 2026 while code landed on 14 September 2026. It is still before version 1.0, so configuration can change.
pgbackrest/pgbackrest4,367 stars, covered in Edition 18; the established choice, also in C, with stronger verification of its own backups and far more history behind it.
Track this in Scout
wal-g/wal-gCovered in Edition 29; written in Go and not limited to PostgreSQL, so it also covers MySQL and SQL Server.
Track this in Scout- EnterpriseDB/barman
3,222 stars, a Python backup manager for PostgreSQL built around managing many servers from one place.
Track this in Scout
# RPM-based systems, from the PostgreSQL YUM repository
sudo dnf install -y pgmoneta
# or from source
sudo dnf install -y git gcc cmake make libev-devel openssl-devel \
systemd-devel zlib-devel libzstd-devel lz4-devel libssh-devel
git clone https://github.com/pgmoneta/pgmoneta.git
cd pgmoneta && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release && make && sudo make install2,432 stars · MIT · v2.2.2 (2025-11-10, the repository page and ungh agree) · Track this in Scout
Renames many files at once from a pattern, prints the full list of changes before writing anything, and can undo a rename that went wrong.
▶Repo detailsthe review · specs · pros & cons · install
What it is
F2 is a cross-platform command-line renamer written in Go. It matches files by text or by pattern, can pull information out of the files themselves — such as the date a photograph was taken — and defaults to a dry run so the result is visible before anything is written.
What it is good for. Anyone with a folder of downloads, scans, invoices or camera files named by four different programs in four different ways. It is also for anyone who has once renamed a batch wrongly and spent the evening undoing it.
- Dry run by default. You see every old name and new name, and the rename only happens when you ask a second time.
- It has an undo. If a rename does go wrong, one command puts the names back.
- It can read EXIF data from photographs and tags from music files, so files can be renamed by the date a picture was taken rather than by the date it was copied.
- The newest release, v2.2.2, is dated 10 November 2025, while code landed on 22 June 2026. The release is ten months old; the project is not.
- It is a command-line tool. There is no window, and the pattern syntax takes twenty minutes to learn properly.
- Renaming is not moving. It changes names in place and does not sort files into folders.
- marcusbuffett/pipe-rename
437 stars, a smaller idea: it opens the list of names in your text editor and applies whatever you saved. Last code 21 February 2026.
Track this in Scout - laurent22/massren
1,397 stars, the same text-editor approach, but its last code landed 8 December 2024, twenty-one months ago.
Track this in Scout - jhotmann/node-rename-cli
172 stars, a Node.js renamer whose last code landed 9 January 2023, forty-four months ago.
Track this in Scout
# with Go installed go install github.com/ayoisaiah/f2/v2/cmd/f2@latest # or download the binary for your system from # https://github.com/ayoisaiah/f2/releases # see what would happen (nothing is changed) f2 -f 'IMG_' -r 'holiday_' . # do it f2 -f 'IMG_' -r 'holiday_' . -x
2,199 stars · MIT · v0.12.0 (2026-05-19, ungh; the page summary read this as May 2025 and was wrong by a year) · Track this in Scout
Keeps Gmail filters as one declarative file written in Jsonnet, shows the difference before applying, and pushes the whole set through Google's own interface.
▶Repo detailsthe review · specs · pros & cons · install
What it is
gmailctl is a Go command-line tool that turns a declarative configuration into Gmail filters through Google's own API. The configuration is written in Jsonnet, a small language that allows comments, variables and reusable pieces, so a rule used in ten filters is written once.
What it is good for. Anyone whose inbox is held together by thirty filters built up over five years, none of which they can now explain. Writing them down makes the whole set visible, reviewable and copyable to a second account.
- It shows a difference before applying anything, so you can see which filters will be added, changed or removed.
- The configuration is a file, which means it can go in version control and be restored after a mistake.
- Variables and functions remove the repetition that makes a long filter list unreadable in the Gmail screen.
- The setup is the hard part. You have to create a Google Cloud project, switch on the Gmail API and download credentials before the first command works.
- Jsonnet is another small language to learn. It is not difficult, but it is not JSON either.
- Gmail's own limits still apply, including the cap on how many filters an account may hold.
- lefcha/imapfilter
937 stars, filters mail on any IMAP server using Lua scripts, so it is not tied to Gmail, but it runs the filtering itself rather than handing rules to the provider.
Track this in Scout - pimalaya/himalaya
6,702 stars, a terminal email client rather than a filter manager; the overlap is doing email from the command line.
Track this in Scout - antifuchs/gmail-britta
768 stars, the older Ruby answer to the same problem. Its last code landed 29 October 2022, forty-seven months ago.
Track this in Scout
# with Go installed go install github.com/mbrt/gmailctl/cmd/gmailctl@latest # or on macOS brew install gmailctl gmailctl init # walks you through the Google API setup gmailctl edit # write the rules gmailctl diff # see what would change gmailctl apply # apply it
7,501 stars · MIT · v4.2.0 (2025-12-11, ungh) · Track this in Scout
Turns a folder of code into one templated prompt with a source tree and a token count, respecting the ignore rules already in the project.
▶Repo detailsthe review · specs · pros & cons · install
What it is
code2prompt is a Rust command-line tool that walks a directory, respects the ignore rules already in the project, and writes the result as a single templated prompt. Templates control the shape of the output, so the same codebase can be formatted differently for different questions.
What it is good for. Anyone who asks an assistant about their own code and keeps getting answers based on half the picture. It is also useful for writing documentation from a codebase, or for producing a review request that actually contains the files being reviewed.
- It obeys
.gitignore, so build output and dependency folders do not end up in the prompt by accident. - The token count is printed before you send anything, which is the difference between a question that fits and a question that is silently truncated.
- Filters by file type and by path, so you can send only the parts that matter.
- A big codebase produces a prompt too large for any model. The filters are not optional on a real project; they are the job.
- The newest release, v4.2.0, is dated 11 December 2025, while code landed on 29 June 2026 — three months ago.
- It prepares a prompt and stops. It does not talk to any model, so you still need something to paste it into.
- yamadashy/repomix
28,481 stars, the same job in Node.js with more output formats and a hosted web version.
Track this in Scout - cyclotruc/gitingest
15,341 stars; you change hub to ingest in a GitHub address and get the extract in a browser, with no install at all.
Track this in Scout - simonw/files-to-prompt
2,765 stars, the simplest version of the idea, but its last code landed 19 February 2025, nineteen months ago.
Track this in Scout
# with Rust installed cargo install code2prompt # or on macOS brew install code2prompt code2prompt . --exclude "node_modules,dist,*.lock"
19,870 (ungh; the repository page could not be opened) stars · MIT (read from the npm registry entry for @11ty/eleventy, because the repository page returned HTTP 504) · v3.1.6 (2026-06-02, ungh; npm agrees on the version) · Track this in Scout
Turns a folder of templates in any of about ten languages into finished HTML files, adding no client-side JavaScript of its own.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Eleventy is a static site generator written in JavaScript. It reads templates in whichever of ten or so languages you prefer — Markdown, Nunjucks, Liquid, plain HTML, JavaScript — and writes finished HTML files, adding no client-side JavaScript of its own.
What it is good for. Anyone with a blog, documentation site or small company site who is paying for hosting that runs code they do not need. A generated site can be served from free static hosting and will survive any amount of traffic.
- It adds no JavaScript to the finished pages unless you ask for it, so the result is genuinely light.
- Ten template languages are supported and can be mixed in one project, so an existing site rarely has to be rewritten to move.
- Configuration is a single JavaScript file, and the project has an unusually direct upgrade path between major versions.
- GitHub's own page for this repository returned HTTP 504 three times on 22 September and twice again today. The licence below was read from the npm registry, not from the repository page. Everything else here comes from the ungh mirror.
- Needs Node.js 18 or later, so there is a runtime to install and keep patched even though the finished site has none.
- There is no editing screen. Content is files, and a person who wants a login and a text box needs a separate content system on top.
getzola/zola17,281 stars, covered in Edition 19; one Rust binary with no Node.js at all, but only its own template language.
Track this in Scout- gohugoio/hugo
89,177 stars, the fastest of the three and also a single binary, with a steeper template language and far more themes.
Track this in Scout
withastro/astro62,220 stars, a bigger framework that also generates static pages but is built for sites that mix in interactive parts.
Track this in Scout
mkdir mysite && cd mysite npm init -y npm install @11ty/eleventy --save-dev echo "# Hello" > index.md npx @11ty/eleventy --serve
55,366 stars · GPL-2.0 · 12.1 (2026-09-15, /releases/latest and ungh agree on the tag and the timestamp) · Track this in Scout
A media server that indexes a library of video and audio, fetches artwork and descriptions, and streams to browsers, phones, televisions and set-top boxes.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Jellyfin is a media server written in C# that indexes a library of video and audio, fetches metadata and artwork, and streams to browsers and to client apps on televisions, phones and set-top boxes. It converts formats on the fly when a device cannot play a file directly.
What it is good for. Anyone with years of ripped discs, recorded lectures or family video on a disk somewhere, who would like to watch them the way they watch everything else. It is also the answer for a household that wants its own library without a monthly bill.
- The newest release is 12.1, published 15 September 2026. There is no version 11: the project dropped the leading
10.it had used since 2018, so 10.11 was followed by 12.0. - No subscription, no account, no tier. Every feature, including hardware-accelerated conversion, is in the free version.
- Client apps exist for Android, iOS, Android TV, Roku, Kodi and the browser, so the library is reachable from the devices people already own.
- GPL-2.0. Fine to run; awkward if you wanted to bundle it inside something you sell.
- Converting video in real time is heavy work. Without a graphics card that can help, one 4K stream can occupy an entire processor.
- It organises what it can recognise. Files named inconsistently will be matched to the wrong film, and fixing that is manual.
navidrome/navidrome23,121 stars, covered in Edition 23; music only, much lighter, and it speaks the Subsonic protocol so dozens of third-party apps work with it.
Track this in Scout
advplyr/audiobookshelf13,886 stars, covered in Edition 28; audiobooks and podcasts only, with position tracking built for long listening.
Track this in Scout- Kareadita/Kavita
11,730 stars, the same idea for books and comics rather than video.
Track this in Scout
docker run -d --name jellyfin \ -v "$PWD/jellyfin-config:/config" \ -v "$PWD/jellyfin-cache:/cache" \ -v /path/to/your/media:/media:ro \ -p 8096:8096 \ jellyfin/jellyfin:latest
25,217 stars · Apache-2.0 · 1.7.0 (2026-08-26, ungh; pypi.org is blocked by robots.txt from this sandbox) · Track this in Scout
A Python library that fetches historical prices, dividends, company financial statements and option chains from Yahoo Finance and returns them as pandas dataframes.
▶Repo detailsthe review · specs · pros & cons · install
What it is
yfinance is a Python library that fetches historical prices, dividends, company financial statements and option chains from Yahoo Finance's public endpoints and returns them as pandas dataframes. It handles the request details, caching and rate limiting behind one simple call.
What it is good for. The situation where you want to test an idea about markets and the first obstacle is that every data provider wants a subscription before you have written a line. It is also the quickest way to build a table of prices for a hobby portfolio.
- Free, and it covers shares, indices, currencies, funds and cryptocurrency in one interface.
- The output is a pandas dataframe, so it drops straight into the rest of the Python analysis world with no conversion.
- Very widely used, which means almost every question has been asked and answered somewhere.
- It is not affiliated with Yahoo, and the project says so plainly. Yahoo's terms describe the data as being for personal use, so read them before building anything commercial on top.
- The data source is unofficial and can break. When Yahoo changes something the library stops working until a new version appears, which has happened more than once.
- The history is not clean. Splits, dividends and delisted companies all have edge cases, and a backtest that trusts the raw numbers will flatter itself.
OpenBB-finance/OpenBB73,356 stars, covered in Edition 24; one interface in front of many data sources, of which Yahoo is only one, at the cost of a much bigger install.
Track this in Scout- JerBouma/FinanceToolkit
5,250 stars, focused on calculating financial ratios and performance measures from data you supply rather than on fetching it.
Track this in Scout
nautechsystems/nautilus_traderCovered in Edition 17; a full trading engine rather than a data library, for when fetching prices is no longer the hard part.
Track this in Scout
python3 -m venv venv
source venv/bin/activate
pip install yfinance
python3 -c "import yfinance as yf; print(yf.Ticker('MSFT').history(period='1mo'))"Checked, and left out
These were opened for this edition and did not make it, with the reason.
antifuchs/gmail-britta - FINISHED. 768 stars, last code 29 October 2022, forty-seven months. New to the ledger as not-qualified, found under the comparison list for entry #8. Listed inside the edition with its date, because a dead alternative is a useful fact about a live one.
antifuchs/gmail-britta - FINISHED. 768 stars, last code 29 October 2022, forty-seven months. New to the ledger as not-qualified, found under the comparison list for entry #8. Listed inside the edition with its date, because a dead alternative is a useful fact about a live one.
laurent22/massren - FINISHED. 1,397 stars, last code 8 December 2024, twenty-one months. New to the ledger as not-qualified, found under the comparison list for entry #7.
laurent22/massren - FINISHED. 1,397 stars, last code 8 December 2024, twenty-one months. New to the ledger as not-qualified, found under the comparison list for entry #7.
jhotmann/node-rename-cli - FINISHED. 172 stars, last code 9 January 2023, forty-four months. New to the ledger as not-qualified, found under the comparison list for entry #7.
jhotmann/node-rename-cli - FINISHED. 172 stars, last code 9 January 2023, forty-four months. New to the ledger as not-qualified, found under the comparison list for entry #7.
gethomepage/homepage - ALIVE. 32,815 stars, code 23 September 2026
gethomepage/homepage - ALIVE. 32,815 stars, code 23 September 2026 (ungh). The larger, heavier answer to the job glance does; queued deliberately because glance was published today.
SigNoz/signoz - ALIVE. 32,055 stars, code 8 September 2026
SigNoz/signoz - ALIVE. 32,055 stars, code 8 September 2026 (ungh). The ClickHouse-based answer to the job openobserve does; queued deliberately because openobserve was published today.
yamadashy/repomix - ALIVE. 28,481 stars, code 23 September 2026
yamadashy/repomix - ALIVE. 28,481 stars, code 23 September 2026 (ungh). The Node.js answer to the job code2prompt does; queued deliberately because code2prompt was published today.
twopirllc/pandas-ta - COULD NOT BE SETTLED. ungh returned HTTP 404 and nothing else here can confirm it, so it was left out of the comparison list under entry #12 rather than listed unopened. Not added to the ledger.
twopirllc/pandas-ta - COULD NOT BE SETTLED. ungh returned HTTP 404 and nothing else here can confirm it, so it was left out of the comparison list under entry #12 rather than listed unopened. Not added to the ledger.
Coming tomorrow






















