Edition No. 5 · 30 Aug 2026

Proof, repetition, and the price of everything

Repo Radar No. 5. Proof, repetition, and the price of everything.

Twelve repositories re-read on 12 October 2026: comments, bookings, a support desk, slides, video, subtitles, visitor counts, machine load, model costs, a job queue, structured answers and forecasting.

By Genn·12 repositories·17 min read

Refreshed on 12 October 2026. The repositories are the ones first published; any that are no longer maintained are left out.

Twelve repositories about what happens after somebody arrives: the traces visitors leave that a stranger can read, the machinery that makes the next video cheaper than the last one, and three meters that say what a small setup costs in traffic, in memory and in money. Every figure below was read again on 12 October 2026. All twelve projects are still being worked on, so none was dropped.

Two things worth knowing

This edition carried a correction to Edition 1, saying that umami’s latest release was v3.1.0 from 16 April 2026 rather than the v3.3.1 recorded on 20 August. That correction was itself wrong. v3.3.1 exists and was released on 20 August 2026; the original entry had been right. It was made by reading GitHub’s releases web page, which returned a partial list, and trusting it over the figure already on file.

The note is left here rather than deleted, because a corrections page that quietly removes its own mistakes is worth nothing. The full account is on the corrections page.

If you only do three things

  1. jdepoix/youtube-transcript-api (#6) — twenty minutes. One install, no key to apply for, and the spoken text of any public video with subtitles becomes a file on disk.
  2. umami-software/umami (#7) — two hours, one container, one existing database. Until something counts visitors, nothing else on this page can be judged by a number.
  3. procrastinate-org/procrastinate (#10) — half a day. Work that takes minutes cannot run inside a web request, and this is the smallest way to run it elsewhere without installing anything new.

Proof, repetition, and the price of everything

Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.

remark42: comments under any page. Keeps the comments on the same machine as the site.

5.6k stars · MIT · v1.16.4 (2026-07-10) · Track this in Scout · Share this tool

Self-hosted comment engine with no external database and no third-party tracking — the reply box under the Starlight docs.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You run one program and add a short script tag to the pages that should carry comments. Readers then post under them. Comments can be nested, written in Markdown, and can include uploaded images. Sign-in works through Google, GitHub, Telegram, email, or anonymously, so a reader with no account can still ask a question. It keeps everything in a single embedded data file, which means the storage lives inside the program's own file rather than in a database you install separately. The owner gets moderation tools — edit, pin, block, delete — and is told about new comments by email or Telegram. What it does not do is state any limits: the README lists no unsupported cases, no size or memory figures, and makes no claim about filtering spam.

Why it matters

Who it suits. Sites built as fixed pages, where a reader has nowhere to reply: documentation, a handbook, a blog. Three real questions under a page are worth having twice over, because they read as evidence that other people use the thing, and because each one names the next page worth writing in the words somebody actually typed. Skip it if nobody has time to read and answer what arrives, because an unanswered comment box is worse than none.

Verdict. Worth an evening, and the cheapest of the three in this layer to run. One program, one data file, and a release landed on 11 October 2026, the day before this refresh. Three things to plan for. Spam arrives in the first week and the moderation tools only help somebody who opens them. The default styling is plain, so an hour of CSS is the price of looking as though it belongs. And an empty comment section under every page looks worse than no comment section, so turn it on where discussion is likely and leave it off elsewhere. giscus/giscus is the alternative that stores nothing itself, at the cost of requiring every commenter to have a GitHub account.

Stars5.6k
LicenceMIT
Latestv1.16.4 (2026-07-10)checked 7 Sep 2026
Written inGo
Setup effort
2 / 5
Payoff
3 / 5
Good
  • One program and one data file: no database to install, patch or back up separately.
  • Anonymous commenting is supported, which matters when the audience is small and nobody will create an account to ask one question.
  • MIT licence, 76 open issues, and a release on 11 October 2026, so it is actively worked on.
Watch for
  • No stated limits of any kind: no unsupported cases, no size figures, and nothing published about spam filtering.
  • The default appearance is plain, and matching it to a site is hand-written CSS.
  • Comment sections need a person. Moderation is a daily habit, not a setting.
Install
docker run -d --name=remark42 \
  -p 8080:8080 \
  -v $PWD/var:/srv/var \
  -e SECRET=a-long-random-string \
  -e REMARK_URL=https://example.com \
  -e AUTH_ANON=true \
  umputun/remark42:latest
Screenshots
umputun/remark42: GitHub preview cardumputun/remark42: Screenshot 1
cal.diy: a self-installed booking page. A free slot becomes a meeting in both calendars.

48.3k stars · MIT · v6.2.0 (2026-03-01) · Track this in Scout · Share this tool

The MIT community fork of Cal.com after the company went closed source — a booking link for user interviews and demos.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You install it, connect a calendar, and publish a link. Someone opens the link, sees only the times that are actually free, and books one. It writes the meeting into the connected calendar and sends the invitations. It handles time zones, gaps between meetings, several people sharing one link, repeating availability, and video-call links. It is a Next.js application, meaning a JavaScript web application that needs its own server process, with its own database behind it and sign-in set up against each calendar provider. The README describes it as a copy of a larger scheduling product with "all enterprise/commercial code removed", licensed MIT throughout, and says there is no hosted version at all. What it does not do is present itself as ready for serious use: its own page says "Use at your own risk" and that it is "strictly recommended for personal, non-production use".

Why it matters

Who it suits. Anyone who wants a booking link without paying per seat, and who is comfortable running a JavaScript application and keeping it patched. It also suits anyone who needs the whole thing under a plain licence with nothing held back, which is unusual in this category. Skip it if the booking page would carry real customer appointments, because the project's own warning rules that out. And skip it if an evening of setup is not available, because this is not a single binary.

Verdict. Worth knowing about, and worth installing only with the warning in mind. Two facts sit awkwardly together. Code landed on 26 September 2026, so people are working on it, but the newest tagged release is v6.2.0 from 1 March 2026, more than seven months old, and there are 1,200 open issues and 350 open pull requests. That is the shape of a large codebase with a small number of hands on it. The licence is the genuine prize: plain MIT across the whole repository, which is more than the product it came from offers. Worth knowing that the address calcom/cal.com now answers for this same repository, so an old link is not a second project. For a booking page that has to be reliable this week, the commercial hosted service is the honest answer; for a simple group poll instead of a calendar, lukevella/rallly is far less work.

Stars48.3k
LicenceMIT
Latestv6.2.0 (2026-03-01)checked 7 Sep 2026
Written inTypeScript
NeedsDocker Compose, Docker and PostgreSQL
RunsSelf-hosted on your own server
Setup effort
1 / 5
Payoff
4 / 5
Good
  • Plain MIT across the whole repository, with no paid edition carved out of the code.
  • A very large accumulated feature set: time zones, buffers, repeating availability, shared links and video-call links.
  • Code landed on 26 September 2026, so the copy is being worked on rather than abandoned.
Watch for
  • Its own front page says "Use at your own risk" and recommends personal, non-production use.
  • 1,200 open issues and 350 open pull requests, against a newest release of 1 March 2026.
  • A real evening of setup: a server process, a database, and sign-in configured with each calendar provider.
Install
git clone https://github.com/calcom/cal.diy.git
cd cal.diy
yarn
cp .env.example .env
# Edit .env: set DATABASE_URL and NEXTAUTH_SECRET at least
yarn workspace @calcom/prisma db-deploy
yarn dev
Screenshots
calcom/cal.diy: GitHub preview cardcalcom/cal.diy: Screenshot 1calcom/cal.diy: Screenshot 2
03

abhinavxd/libredesk

💎 hidden gem
Libredesk: one inbox for every question. Live chat and email together, in one Go program.

2.9k stars · AGPL-3.0 · v2.8.0 (2026-08-22) · Track this in Scout · Share this tool

Self-hosted support desk — live chat and email in one shared inbox, as a single Go binary against Postgres.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You install it against a PostgreSQL database and it creates its own tables. It then collects live chat from a widget on a site, and email from a mailbox, into one inbox. Conversations can be assigned to a person, answered with saved replies, and moved by rules that run when something happens. It tracks response deadlines, keeps a help centre of articles, and offers an answering assistant that replies from those articles. Sign-in can go through Google, Microsoft, or any OIDC provider, which is the standard way one login works across several tools. There is a JSON interface with webhooks, and an activity log. The backend is one Go program and the interface is Vue, so the whole thing is a single binary plus the database. What it does not do is state any limits: the README lists no unsupported cases, no minimum database version, and no memory or disk figures.

Why it matters

Who it suits. A one- or two-person team whose questions currently arrive in four places. It fits best where email is the main channel and chat is added later, because email needs nobody sitting at a desk. Skip it if the volume is a handful of messages a month, because an inbox tool adds work at that size. And skip it if the AGPL licence is a problem, which it will be for anyone wanting to change the code and ship it inside something else.

Verdict. Worth an evening, and the lightest thing in this layer by a wide margin: one Go program against an existing PostgreSQL, where the better-known alternatives want several containers. At 2,881 stars it is just inside what this report calls a hidden gem, and the 2.x line means the interfaces have settled. Three cautions. A chat widget nobody answers is worse than no widget, so switch it on only for hours when somebody is there. AGPL-3.0 is fine for running the tool as it comes and restrictive the moment the code is modified and offered to others, so read it before touching it. And nothing is published about how much memory or disk it needs, so the machine has to be sized by trial. The large alternative is chatwoot/chatwoot, which does more and costs considerably more to run.

Stars2.9k
LicenceAGPL-3.0
Latestv2.8.0 (2026-08-22)checked 7 Sep 2026
Written inGo
NeedsDocker Compose, Docker and Redis
RunsSelf-hosted on your own server
Setup effort
2 / 5
Payoff
4 / 5
Good
  • One Go program plus an existing PostgreSQL: the lightest install of any tool in this category.
  • Live chat and email in one inbox, so nothing depends on remembering which mailbox a question came to.
  • A release on 22 August 2026, code on 5 September 2026, 68 open issues, and a 2.x version line.
Watch for
  • AGPL-3.0, which restricts changing the code and offering the result to other people.
  • No published figures at all: no memory, disk or database-version requirements anywhere.
  • Younger and thinner than the established desks: fewer connections to other tools and lighter reporting.
Install
# Docker, the quickest route
mkdir libredesk && cd libredesk
curl -LO https://github.com/abhinavxd/libredesk/raw/main/docker-compose.yml
docker compose up -d
# Or the single binary against an existing PostgreSQL
./libredesk --install     # creates the tables
./libredesk               # starts the server
Screenshots
abhinavxd/libredesk: GitHub preview cardabhinavxd/libredesk: Screenshot 1
Slidev: slides from one Markdown file. Write the deck as text and export PDF or images.

48.5k stars · MIT · v52.19.1 (2026-08-19) · Track this in Scout · Share this tool

Markdown-driven presentation tool — the explainer slides in a tutorial video, plus a PDF export that doubles as a lead magnet.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You write one Markdown file, with slides separated by a line of three dashes. Headings, lists and images work as they do anywhere else in Markdown. Code blocks are highlighted and can be revealed a line at a time, and Mermaid diagrams are written inline as text. There is a presenter view, with notes, a timer, and a drawing layer for marking up a slide while talking. It runs a live preview in a browser while the file is edited. Export produces PDF, PNG images or PPTX, so one source becomes several things. Because it is built on Vue, a slide can hold a live component rather than a screenshot. What it does not do is offer a visual editor: there is no canvas and no dragging, and moving an element means writing CSS.

Why it matters

Who it suits. Anyone who explains ideas on camera or on stage and keeps rebuilding the same explanatory frames by hand in a screenshot tool. It suits a second language best of all, because a translated deck is an edited copy of a text file rather than an afternoon of re-layout. Skip it if the recording is entirely screen capture with no explanatory frames, because there is nothing for it to do. And skip it if slides are built by dragging boxes, because that is not what this is.

Verdict. Worth an evening, and the PDF export is the part that earns it twice: a short "how to read this screen" PDF is something a visitor will hand over an email address for. Two cautions. The version number is 53.0.0, which is the result of frequent releases rather than fifty-three rewrites, but it does mean a reinstall next year can restyle an old deck, so pin the version in each project. And it needs Node.js 20.12.0 or newer, which the README states plainly. Code landed on 16 September 2026, the same day as the newest release. If one source file should produce slides, a web page and a PDF article all at once, quarto-dev/quarto-cli is the wider tool.

Stars48.5k
LicenceMIT
Latestv52.19.1 (2026-08-19)checked 7 Sep 2026
Written inTypeScript
NeedsNode.js
Setup effort
2 / 5
Payoff
4 / 5
Good
  • The deck is a text file, so a translation, a typo fix or a restructure is an edit rather than a redesign.
  • Exports to PDF, PNG and PPTX, so one source produces a deck, a set of images and a document.
  • MIT licence, 48,858 stars, 186 open issues, and a release on 16 September 2026.
Watch for
  • No visual editor: nudging an element means writing CSS, not dragging it.
  • Needs Node.js 20.12.0 or newer, and releases come often enough that an unpinned version can restyle an old deck.
  • Pointless for a video that is pure screen recording, so it only pays off where concepts are explained.
Works well with

A Node project on your Mac, one folder per video, checked into Git beside the scripts.

Install
npm init slidev@latest
cd slidev-deck
npm run dev        # live preview at localhost:3030
npm run export     # PDF
Screenshots
slidevjs/slidev: GitHub preview card
Remotion: video files from web code. One template renders every title and language.

58.6k stars · Remotion License · v4.0.522 (2026-09-07) · Track this in Scout · Share this tool

Render real MP4 video from React components — one branded intro template, unlimited language and title variants.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You describe each frame in JSX and CSS, the same languages used for web pages, and read a frame counter to decide what moves. A preview window plays the result while the code is edited. One command renders the composition to a video file, and values can be passed in at render time, so one template produces many variants from a script or a JSON file. It can render stills, audio-only output and image sequences as well, and it has its own player component for showing the result in a browser. Rendering is done by a headless browser capturing frames, which is why it is slow and heavy on the processor. What it does not do is come free for everyone: the licence has a free tier and a paid company tier, and the free tier covers individuals, non-profits, and for-profit organisations with up to three employees.

Why it matters

Who it suits. Anyone producing a steady stream of videos that share an opening, a closing and lower-third captions, especially in more than one language, where the same template with different words is the whole job. It also suits teams who already write React, because describing an animation in a familiar language is far less work than learning a motion-graphics program. Skip it if the licence tier does not fit, since a fourth employee changes the price. And skip it for one-off videos, because a template only pays back across a batch.

Verdict. Worth a weekend if videos are made weekly, and worth nothing if they are made twice a year. The honest warning first: this is not open source, and the licence is explicit that a company licence is "required for for-profit organizations of a certain size", with the free tier naming individuals, non-profits and for-profit organisations with up to three employees. That is a cost to plan for, not a trap, but it should be read before a workflow depends on it. Beyond that it is in very good health: 63,055 stars, a release on 7 October 2026, code on 10 October 2026, and documentation that is better than most paid products. Two practical notes. Rendering is processor-heavy, so it belongs on a desktop machine rather than the small server running the website. And thinking in frames instead of a timeline takes an evening to click.

Stars58.6k
LicenceRemotion License
Latestv4.0.522 (2026-09-07)checked 7 Sep 2026
Written inTypeScript
Setup effort
3 / 5
Payoff
4 / 5
Good
  • The same React and CSS used for web pages, so the first animation is written in a familiar language.
  • One template renders unlimited variants, driven by values passed in at render time.
  • Very actively developed: a release on 7 October 2026, code on 10 October 2026, and unusually thorough documentation.
Watch for
  • Not open source. A paid company licence is required above the free tier, which covers individuals, non-profits and for-profit organisations with up to three employees.
  • Rendering is slow and processor-heavy, because frames are captured through a headless browser.
  • Describing motion as frame numbers rather than a timeline is a real shift, and the first template takes an evening.
Works well with

Feed the same titles into Thumbnails-Maker from Edition 4 and the video, the thumbnail and the deck all say the same words.

Install
npx create-video@latest
cd my-video
npm run dev                 # preview in a browser
npx remotion render         # write the MP4
Screenshots
remotion-dev/remotion: GitHub preview card
Subtitles of any public video, as text. No key, no account and no browser needed.

8.2k stars · MIT · v1.2.4 (2026-01-29) · Track this in Scout · Share this tool

Fetches any YouTube video's subtitles with no API key and no quota — competitor research as plain text, tonight.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You give it a video identifier and it returns the subtitle track as a list of lines, each with a start time and a duration. It handles automatically generated subtitles as well as written ones, lists the languages a video offers, and can request a translated version. There is a command-line tool as well as the Python interface, and output can be written as JSON, plain text or the common subtitle formats. It needs no API key, no OAuth consent screen and no headless browser, which is why one install is the whole setup. It works on any public video that has subtitles at all. What it does not do is work reliably from a rented server: the README says YouTube "has started blocking most IPs that are known to belong to cloud providers", and cookie-based sign-in is currently broken, so age-restricted videos may be out of reach.

Why it matters

Who it suits. Anyone deciding what to make next in a crowded subject. The spoken text of the fifty most-watched videos in a niche, read together, shows what has been explained to death and what nobody has covered properly, and that is a decision made from evidence rather than instinct. It also suits anyone wanting the text of their own back catalogue for subtitles, articles or search. Skip it if the work must run on a rented server without a residential proxy, because the blocking will stop it. And skip it if view counts and watch time are what is needed, because those come from the official interface instead.

Verdict. Worth twenty minutes today, and the cheapest item in the whole edition. One pip install and one command produces a file. Three limits to hold in mind. It relies on an undocumented part of YouTube, which the README says plainly, so it can break and need an update. Running it from a home or office connection works; running it from a datacentre usually does not, and the proxy that fixes that is a paid service. And the newest release, 1.2.4, is dated 29 January 2026 with code landing on 19 May 2026, so it is quieter than most things on this page, though well inside what this report calls current. For video with no subtitles at all, openai/whisper transcribes the audio instead, at the cost of a download and a lot of processor time.

Stars8.2k
LicenceMIT
Latestv1.2.4 (2026-01-29)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Setup effort
1 / 5
Payoff
4 / 5
Good
  • No key, no account, no quota and no browser: one install and it works.
  • Automatically generated subtitles and translated versions are both supported, so other languages are in scope.
  • MIT licence, 8,076 stars, 18 open issues, and a small dependency list that drops into an existing project without a fight.
Watch for
  • It uses an undocumented part of YouTube and can stop working without warning until the library is updated.
  • Addresses belonging to cloud providers are widely blocked, so a rented server needs a paid residential proxy.
  • Cookie-based sign-in is broken at the moment, which puts age-restricted videos out of reach; the newest release is from 29 January 2026.
Install
python3 -m venv venv
source venv/bin/activate
pip install youtube-transcript-api
# One video, two preferred languages, as JSON
youtube_transcript_api VIDEO_ID --languages en de --format json
Screenshots
jdepoix/youtube-transcript-api: GitHub preview cardjdepoix/youtube-transcript-api: Screenshot 1jdepoix/youtube-transcript-api: Screenshot 2
Umami: counting visitors without cookies. Where people came from and which pages they left on.

38.7k stars · MIT · v3.3.1 (2026-08-20) · Track this in Scout · Share this tool

Self-hosted, cookie-free website analytics — the measurement floor for every other marketing move.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You add a small script tag to a site and it records page views. The dashboard shows visitors, page views, where people came from, which campaign links they followed, which pages they left on, and how fast pages loaded. Goals can be defined so a particular action is counted as a conversion. Recent versions add custom dashboards, Core Web Vitals, which are Google's three page-speed measurements, and session replay, which plays back an anonymous recording of one visit. Several people can have accounts, and sites can be grouped. It needs Node.js 18.18 or newer and PostgreSQL 12.14 or newer, and it reuses a database that is already there. What it does not do is match a full analytics suite on deep questions: there is no serious funnel or cohort analysis, and the README names PostgreSQL as the only supported database.

Why it matters

Who it suits. Anyone publishing anything with the intention of being found. Campaign links are the part that pays immediately: they turn "an article was published" into "that article sent nine people, two of whom signed up". It also suits anyone who wants visitor figures without a consent banner, since no cookies are set. Skip it if the questions are about cohorts and multi-step funnels, because a heavier product answers those. And skip it if the site already has a working analytics tool, because two of them is a maintenance job for no new information.

Verdict. Worth two hours, and the first thing on this page to install. It is in excellent health: 39,311 stars, a release on 17 September 2026, code landing on 11 October 2026, and only 42 open issues for a project that size. The session replay in current versions is more useful than it sounds, because watching six real visits through a confusing screen beats any amount of discussion about what to fix. Two honest costs. Upgrades, backups and uptime become somebody's job, which is one more service on a machine that entry #8 now measures. And it is deliberately shallower than the large commercial products, so a question about cohorts will eventually go unanswered. plausible/analytics is the closest alternative and is a heavier install; PostHog/posthog answers the deep questions and costs far more to run.

Stars38.7k
LicenceMIT
Latestv3.3.1 (2026-08-20)checked 7 Sep 2026
Written inTypeScript
NeedsDocker Compose, Docker and PostgreSQL
RunsSelf-hosted on your own server
Setup effort
2 / 5
Payoff
5 / 5
Good
  • Reuses an existing PostgreSQL database, so the install is one container rather than a new service to back up.
  • No cookies, so in most places no consent banner is needed and the landing page stays uninterrupted.
  • Session replay and page-speed measurements are included, which removes two more tools from a future shopping list.
Watch for
  • Shallower than the large commercial suites on funnels and cohorts: fine for a small site, a limit later.
  • Upgrades, backups and uptime are now a local job, on a machine that is probably already busy.
  • PostgreSQL is the only database the README supports, so an existing MySQL is of no help.
Install
# Docker, the quickest route
git clone https://github.com/umami-software/umami.git
cd umami
docker compose up -d
# Or from source against an existing database
pnpm install
# .env with DATABASE_URL=postgresql://user:pass@host:5432/umami
pnpm run build       # creates the tables on first run
pnpm run start       # serves on localhost:3000
Screenshots
umami-software/umami: GitHub preview card
Beszel: how busy the machine really is. Processor, memory, disk and network, with history.

25.2k stars · MIT · v0.19.0 (2026-09-03) · Track this in Scout · Share this tool

Very light server monitoring with per-container Docker stats, history and alerts — the answer to 'can the box take one more container?'

▶Repo detailsthe review · specs · pros & cons · install

What it does

You run a hub, which holds the web dashboard and the history, and a small agent on each machine being watched. The agent reports processor use, memory including swap, disk space and disk activity, and network traffic. On the host it also reports load average, temperature, battery charge, graphics-card use and power draw, and S.M.A.R.T. disk health, which is the drive's own report on whether it is failing. Containers running under Docker or Podman are reported individually, with their own processor, memory and network history. Alerts can be set for each of those, and several people can have accounts with sign-in through an OAuth or OIDC provider. Backups can be written to disk or to S3-compatible storage. What it does not do is watch the application: it reports resources only, so a slow page or a failing request will not appear here, and some measurements are host-only rather than per container.

Why it matters

Who it suits. Anyone running several services on one small machine who currently guesses whether another one will fit. The per-container memory history is the number that turns that guess into a decision. It also suits anyone who would rather be told about a full disk than discover it, since alerts work without configuration. Skip it if the question is "why is this page slow", because that needs request-level monitoring instead. And skip it if a full metrics stack is already running, because this measures the same things with less depth.

Verdict. Worth an hour, and the easiest honest answer to "can this machine take one more service". It is small enough not to consume the memory it is measuring, which is exactly the failing of the heavier alternatives. In good health too: 26,125 stars, a release on 2 October 2026 and code on 11 October 2026. Three cautions. It is still before version 1.0, at 0.21.0, so settings can move between releases — read the notes before upgrading. There are 262 open issues and the maintainer says in the README that he cannot always find time to reply. And it reports; it does not repair. Knowing memory is at 92 per cent is progress, and the next step is still a decision. For checking that a site is answering at all rather than how loaded it is, louislam/uptime-kuma is the companion rather than the competitor.

Stars25.2k
LicenceMIT
Latestv0.19.0 (2026-09-03)checked 7 Sep 2026
Written inGo
NeedsDocker and a GPU
Setup effort
2 / 5
Payoff
4 / 5
Good
  • Very light: two small programs, which matters when the thing being measured is short of memory.
  • Per-container processor, memory and network history, which is the right level of detail for install decisions.
  • MIT licence, alerts that work without configuration, a release on 2 October 2026 and code on 11 October 2026.
Watch for
  • Resources only. A slow page, a failing request or a stuck queue will not show up here.
  • Still before version 1.0, at 0.21.0, so settings can change between releases.
  • 262 open issues, and the README says plainly that the maintainer cannot always reply.
Works well with

Hub as a Docker container on the VPS behind your reverse proxy, agent alongside it on the same machine.

Install
# The hub, which holds the dashboard and the history
docker run -d --name beszel \
  -p 8090:8090 \
  -v ./beszel_data:/beszel_data \
  henrygd/beszel:latest
Screenshots
henrygd/beszel: GitHub preview cardhenrygd/beszel: Screenshot 1henrygd/beszel: Screenshot 2henrygd/beszel: Screenshot 3henrygd/beszel: Screenshot 4
LiteLLM: one interface, one spending meter. A hundred model providers behind one request shape.

58.2k stars · MIT, with a separate licence over the enterprise/ directory · v1.100.0 (2026-09-06) · Track this in Scout · Share this tool

One interface over 100+ model providers, with per-key budgets, spend tracking, caching and fallbacks — the meter on the AI bill.

▶Repo detailsthe review · specs · pros & cons · install

What it does

It comes in two forms. As a Python library it is a thin layer: one function call reaches any supported provider in the same shape, and switching provider is a changed model name. As a proxy server it is a real service: it issues virtual keys, counts spend per key, enforces a budget, caches repeated responses, retries failures and falls back to a second provider when the first one is down. It logs every request, which is what makes a cost question answerable after the fact. Over a hundred providers are supported, including models running on local hardware. The newest release on the Python index is 1.105.0, dated 11 October 2026, and it needs Python 3.10 or newer. What it does not do is come entirely under one licence: the LICENSE file says the enterprise/ directory "is licensed under the license defined in 'enterprise/LICENSE'", with everything outside it under MIT.

Why it matters

Who it suits. Anyone building a feature on a paid model who cannot currently say what one use of it costs. A per-feature key with a budget turns that into a figure and a hard ceiling, which is what makes a free tier safe to offer. It also suits anyone wanting to compare a cheap model against an expensive one honestly, since the switch is a settings change rather than a rewrite. Skip it if exactly one provider is used and the monthly bill is small, because the library adds a layer for no gain. And skip the proxy if a second database and cache are not welcome.

Verdict. Worth two hours as a library, and an afternoon as a proxy, and the response cache usually pays for the setup on its own: during development the same request goes through twenty times, and nineteen of those are currently full price. It is very busy — 60,866 stars, a release on 11 October 2026 — and that is both the attraction and the warning: 1,500 open issues and 2,500 open pull requests against a huge amount of code. Pin the version. Two further notes. The library and the proxy are two very different things sharing one name, and advice about one often does not apply to the other. And the separate licence over the enterprise/ directory should be read before any feature from it is depended upon. Portkey-AI/gateway is the nearest alternative for the gateway job; langfuse/langfuse is the better answer if the real question is tracing and evaluation rather than spend.

Stars58.2k
LicenceMIT, with a separate licence over the enterprise/ directory
Latestv1.100.0 (2026-09-06)checked 7 Sep 2026
Written inPython
NeedsRedis
RunsSelf-hosted on your own server
Setup effort
2 / 5
Payoff
4 / 5
Good
  • Per-feature keys with budgets and alerts, so a runaway loop can be capped instead of discovered on a statement.
  • One interface across more than a hundred providers, which makes swapping an expensive model for a cheap one a settings change.
  • Response caching and automatic fallback, which cut both the development bill and the risk of one provider's outage.
Watch for
  • One directory is under a separate licence, with the rest MIT, so a feature from enterprise/ needs its terms read first.
  • Two very different products under one name: the library is a small dependency, the proxy wants its own database and cache.
  • Enormous and fast-moving: 1,500 open issues and 2,500 open pull requests, so pin the version and use the part needed.
Install
python3 -m venv venv
source venv/bin/activate
# The library
pip install litellm
# Or the proxy server
pip install 'litellm[proxy]'
litellm --model gpt-4o
Screenshots
BerriAI/litellm: GitHub preview cardBerriAI/litellm: Screenshot 1BerriAI/litellm: Screenshot 2
Procrastinate: a job queue in PostgreSQL. Slow work runs elsewhere, with nothing new installed.

1.4k stars · MIT · 3.9.0 (2026-06-20) · Track this in Scout · Share this tool

PostgreSQL-backed task queue for Python — the background worker four editions of product advice quietly assumed he already had.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You declare a function as a task, and calling it puts a row in a table instead of running it. A separate worker process takes rows and runs them. Everything lives in PostgreSQL: the queue, the job state, the retries, the schedule and the notification that wakes a sleeping worker. It supports retries with back-off, locks so that two jobs cannot touch the same thing at once, jobs scheduled for a future time, and periodic jobs that run on a timetable. It works in both ordinary and async Python, and it has a Django integration. It needs Python 3.10 or newer and PostgreSQL 13 or newer. What it does not do is scale without limit: a database used as a queue has a real ceiling, which most projects never approach, and the README says the project is "looking for additional maintainers!".

Why it matters

Who it suits. Any Python web application that already has PostgreSQL and now needs something to run slow work. Document parsing, model training, long calculations and nightly jobs all belong here, and none of them can run inside a web request. It suits anyone who would rather not add a second data store, because one database dump still captures the whole system. Skip it if the job rate is in the thousands per second, where a purpose-built broker belongs. And skip it if the application is not Python.

Verdict. Worth half a day, and the quiet gem of this edition at 1,415 stars. The reason to choose this over the better-known alternative is the same reason a database extension often beats a separate search service: there is no second thing to secure, patch and back up. Three things to weigh honestly. The README asks for additional maintainers, which is the project saying out loud that the team is small — mature, well documented code with few hands on it, which is a real consideration for something load-bearing. The worker is a second process to keep alive, so a service file or a container is part of the job. And PostgreSQL as a queue has a ceiling; most projects are nowhere near it, and it is not the right tool at very high rates. In excellent health otherwise: a release on 23 September 2026 and code landing on 12 October 2026, the day of this refresh. celery/celery is the large alternative and wants a separate broker.

Stars1.4k
LicenceMIT
Latest3.9.0 (2026-06-20)checked 7 Sep 2026
Written inPython
NeedsPostgreSQL and Python 3
Setup effort
2 / 5
Payoff
5 / 5
Good
  • No new infrastructure at all: the queue is tables in a PostgreSQL database that is already backed up.
  • Retries, locks, scheduled and periodic jobs are included, so hand-written cron scripts are not needed.
  • Works in both ordinary and async Python, has a Django integration, and is small enough to read end to end.
Watch for
  • The README asks for additional maintainers, which means a small team behind code that would be load-bearing.
  • A database used as a queue has a genuine ceiling, so it is the wrong tool at very high job rates.
  • The worker is a second process to keep running, which means a service file or a container to look after.
Works well with

Install into the FastAPI virtual environment, run its migration against your existing PostgreSQL, and start one worker process beside the API.

Install
python3 -m venv venv
source venv/bin/activate
pip install procrastinate
procrastinate schema --apply            # creates its tables in the database
procrastinate --app=myapp.app worker    # the worker process
Screenshots
procrastinate-org/procrastinate: GitHub preview card
Instructor: answers in a declared shape. Checks what the model returned and asks again.

13.8k stars · MIT · v1.16.0 (2026-08-27) · Track this in Scout · Share this tool

Pydantic-validated structured output from any LLM, with automatic retry on malformed responses — so the subtopic map cannot fail to parse.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You describe the answer you want as a Pydantic model, which is the standard Python way to declare the fields and types of a piece of data. The library turns that into the schema the provider needs, sends the request, and checks the reply against the model. If the reply does not validate, it asks again, including the validation error in the new request so the model can see what was wrong. Results can be streamed as they arrive, and lists of items can be returned one at a time. The same code works across providers, with examples for several paid services and for models running locally. What it does not do is guarantee the answer is right: it enforces the shape only, so a confidently wrong value in the correct field passes every check. Its own README draws the line at agents, pointing elsewhere for those.

Why it matters

Who it suits. Anyone whose program feeds a model's answer straight into a screen, a table or a database. Structured output is where the "sometimes the page just fails" class of fault comes from, and that fault is fatal in anything whose purpose is to make a mess readable. It also suits anyone changing prompts often, because the declared model becomes the contract and a reworded prompt cannot quietly change the shape. Skip it if the output is meant to be prose. And skip it if a strict shape is being forced on a weak model, because the retries will cost more than a better model would.

Verdict. Worth an hour, and one of the easiest wins on this page if a model's output is already being parsed by hand. The schema is a Pydantic class, which an existing FastAPI application already uses, so there is no new vocabulary. In good health: 13,992 stars, a release on 9 September 2026, code on 8 October 2026, and only 44 open issues. Three honest costs. Every retry is a paid request and added delay, so a strict shape against a weak model can quietly multiply the price, which is exactly why entry #9 belongs in front of it. It promises the shape and never the quality. And it is one more layer between the code and the provider, so an odd failure now has two places to look. pydantic/pydantic-ai is where the same team's thinking goes for agents rather than extraction.

Stars13.8k
LicenceMIT
Latestv1.16.0 (2026-08-27)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Setup effort
1 / 5
Payoff
4 / 5
Good
  • The shape is an ordinary Pydantic class, which an existing Python web application almost certainly already uses.
  • Automatic retry with the validation error fed back, which fixes most malformed replies before the calling code sees them.
  • MIT licence, 44 open issues, a release on 9 September 2026 and code on 8 October 2026, and it works across providers.
Watch for
  • Retries cost money and add delay, so a strict shape against a weak model can multiply the price of a request.
  • It guarantees the shape of an answer and never its truth: a confidently wrong value validates perfectly.
  • One more layer between the code and the provider, which means one more place to look when something behaves oddly.
Install
python3 -m venv venv
source venv/bin/activate
pip install instructor
Screenshots
567-labs/instructor: GitHub preview card
12

skforecast/skforecast

💎 hidden gem
skforecast: forecasting, tested honestly. Trains on earlier data, tests on later data.

1.5k stars · BSD-3-Clause · v0.24.0 (2026-08-24) · Track this in Scout · Share this tool

scikit-learn-compatible time-series forecasting with rolling-origin backtesting built into the core — the anti-overfitting step most strategy work is missing.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You hand it a series of measurements and any scikit-learn-compatible model, and it handles the awkward parts: building the lagged columns a model needs, predicting several steps ahead by feeding each prediction back in, and including other variables that are known in advance. Testing is part of the core rather than an extra: it supports rolling-origin and expanding-window validation, which means repeatedly training on the data up to a point and testing on what comes next. Searching for settings respects time order, so a result cannot be reached by peeking ahead. It can return a range rather than a single number, which is usually the more honest answer. Statistical methods and pre-trained forecasting models are supported alongside machine-learning ones. What it does not do is model a decision: spread, costs, position sizing and stops are outside it entirely, so a forecast is not yet a plan.

Why it matters

Who it suits. Anyone with a series of measurements and a decision that depends on what comes next: demand, load, consumption, or a price. It suits a careful beginner particularly well, because the correct test is the default and the common mistake is harder to make. Skip it if the data is not a time series, where ordinary scikit-learn is simpler. And skip it if what is really wanted is a trading system, because this is one component of one and not the whole thing.

Verdict. Worth an afternoon, and it earns its place by making the discipline the default. Getting the test wrong by a single step makes noise look like an edge, and that mistake has cost more people a year than any shortage of clever models. Three practical notes. The licence is BSD-3-Clause, read from the sidebar, which means it can sit inside a paid product, unlike several of the better-known testing libraries. The documentation is licensed CC BY-NC-SA 4.0 even though the code is BSD, so its text must not be copied into other documentation or marketing pages, and the README adds a trademark notice about the name and logo. And it is a small team: 1,536 stars and 9 open issues, with excellent documentation and a real risk if the two or three main authors stop. In good health today, with a release on 8 October 2026 and code on 11 October 2026. Start with a simple baseline model, which wins more often than expected.

Stars1.5k
LicenceBSD-3-Clause
Latestv0.24.0 (2026-08-24)checked 7 Sep 2026
Written inPython
RunsLocally, on your own machine
Setup effort
2 / 5
Payoff
4 / 5
Good
  • The correct test is the normal way of working: rolling-origin validation and time-aware settings search are in the core.
  • BSD-3-Clause, so the code can sit inside a commercial product, unlike several alternatives in this area.
  • Any scikit-learn model works, so a simple baseline and a complicated model are one line apart.
Watch for
  • It forecasts a series and never a decision: costs, spread, sizing and stops are all outside it.
  • A small team behind it: 1,536 stars, and excellent documentation is not a substitute for more maintainers.
  • The documentation is CC BY-NC-SA while the code is BSD, and a trademark notice covers the name and logo, so neither text nor branding can be reused freely.
Replaces

And the licence is the practical detail: BSD-3-Clause, so unlike backtesting.py and vectorbt this can sit inside a paid product feature, next to quantstats .

Works well with

And the licence is the practical detail: BSD-3-Clause, so unlike backtesting.py and vectorbt this can sit inside a paid product feature, next to quantstats .

Install
python3 -m venv venv
source venv/bin/activate
pip install skforecast
Screenshots
skforecast/skforecast: GitHub preview card

Checked, and left out

These were opened for this edition and did not make it, with the reason.

papermark/papermark

papermark/papermark (9.0k, AGPL-3.0) — moved from mfts/papermark; latest tag v0.22.0 but the year could not be read off the page. Backlogged.

StJudeWasHere/seonaut

StJudeWasHere/seonaut (763, MIT) — no releases at all and the commit history was unreachable, so dormancy could not be ruled out. Backlogged.

arikchakma/maily.to

arikchakma/maily.to (3.8k, MIT) — would fill Listmonk's missing drag-and-drop editor, but no releases and no readable tag dates. Backlogged.

apache/answer

apache/answer (15.7k, Apache-2.0) — last release v2.0.1 (2025-05-29), fifteen months old, and premature before he has users. Backlogged.

Share this edition
← PreviousNo. 4Next →No. 6

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.