Edition No. 5 · 30 Aug 2026
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.
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
- 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.
- 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.
- 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.
Every link in one place
| # | Repository | Project site | Stars | Licence |
|---|---|---|---|---|
| 1 | umputun/remark42 | remark42.com | 5,587 | MIT |
| 2 | calcom/cal.diy | cal.diy | 48,857 | MIT |
| 3 | abhinavxd/libredesk 💎 | libredesk.io | 2,881 | AGPL-3.0 |
| 4 | slidevjs/slidev | sli.dev | 48,858 | MIT |
| 5 | remotion-dev/remotion | remotion.dev | 63,055 | Remotion License, not open source |
| 6 | jdepoix/youtube-transcript-api | none published | 8,076 | MIT |
| 7 | umami-software/umami | umami.is | 39,311 | MIT |
| 8 | henrygd/beszel | beszel.dev | 26,125 | MIT |
| 9 | BerriAI/litellm | litellm.ai | 60,866 | MIT, with one directory under a separate licence |
| 10 | procrastinate-org/procrastinate 💎 | procrastinate.readthedocs.io | 1,415 | MIT |
| 11 | 567-labs/instructor | python.useinstructor.com | 13,992 | MIT |
| 12 | skforecast/skforecast 💎 | skforecast.org | 1,536 | BSD-3-Clause, documentation under CC BY-NC-SA |
Proof, repetition, and the price of everything
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.

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.
- 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.
- 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.
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

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.
- 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.
- 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.
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

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.
- 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.
- 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.
# 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

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.
- 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.
- 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.
A Node project on your Mac, one folder per video, checked into Git beside the scripts.
npm init slidev@latest cd slidev-deck npm run dev # live preview at localhost:3030 npm run export # PDF

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.
- 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.
- 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.
Feed the same titles into Thumbnails-Maker from Edition 4 and the video, the thumbnail and the deck all say the same words.
npx create-video@latest cd my-video npm run dev # preview in a browser npx remotion render # write the MP4

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.
- 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.
- 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.
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

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.
- 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.
- 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.
# 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

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.
- 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.
- 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.
Hub as a Docker container on the VPS behind your reverse proxy, agent alongside it on the same machine.
# 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

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.
- 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.
- 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.
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

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.
- 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.
- 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.
Install into the FastAPI virtual environment, run its migration against your existing PostgreSQL, and start one worker process beside the API.
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

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.
- 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.
- 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.
python3 -m venv venv source venv/bin/activate pip install instructor

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.
- 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.
- 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.
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 .
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 .
python3 -m venv venv source venv/bin/activate pip install skforecast
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.
Know a repository we should check?























