Edition No. 32 · 26 Sep 2026
Twelve repositories for cleaning data, guarding a server and shipping a site
One of them was Google's, until Google let it go in 2012.
OpenRefine is the program people reach for when a spreadsheet is a mess. It began inside a small company called Metaweb. Google bought that company in July 2010, renamed the tool Google Refine, and then announced in October 2012 that it would stop supporting it. Volunteers picked it up. Sixteen years after the first release, the newest one is dated March 2026, and it is still the best answer to the same problem. That is entry 4, and it is the standout of the edition.
The rest is a single sign-in page for everything private on one machine, a whole mail server in one program, a way to keep real copies of pages before they disappear, a timer that turns into an invoice, and a search page that records nothing.
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, separate from the recommendations
Google let go of the best messy-data tool in 2012, and volunteers have shipped it ever since. OpenRefine began at Metaweb as Freebase Gridworks and became open source in January 2010. Google bought Metaweb on 16 July 2010 and renamed the tool Google Refine on 10 November 2010. On 2 October 2012 its original author announced that Google would stop actively supporting it. Fourteen years later the newest release, 3.10.1, is dated 4 March 2026, and it remains the tool people reach for when a spreadsheet is a mess.
The free mirror this report depends on was behind GitHub on five of today's twelve. unjs/ungh, covered in Edition 26, answers questions about any repository without an account, and it is how this report proves a project is alive. Today its cached newest-release answer was older than GitHub's own for Authelia (v4.39.20 against v4.39.28), Stalwart (v0.16.15 against v0.16.23), ArchiveBox (v0.7.4 against v0.9.51), Kimai (2.65.0 against 2.67.0) and Formbricks (5.4.0 against 6.0.0). That is the largest count recorded here. A cache can lag but cannot run ahead, so GitHub's own latest-release page was taken as correct every time, and no code date was overwritten on any record.
A date with no year aged one project by two years. Kimai's newest release, 2.67.0, is shown as "September 13" with no year, and was read as September 2024. The mirror's own cached answer for the same project is 2.65.0 dated 11 August 2026 — a version below 2.67.0, and a date two years after the supposed release. Only one reading fits: 13 September 2026. This is the same trap that has now fired in eight of the last ten editions, and it has aged the project every single time.
If you only do three things
- yamadashy/repomix (#8) — two minutes, one command, nothing installed permanently. It turns a folder of code into one text file that an AI assistant can read in a single go.
- OpenRefine/OpenRefine (#4) — half an hour, on a spreadsheet that already exists. It finds the near-duplicate spellings, the stray spaces and the four date formats hiding in a column, and fixes them in bulk. This is the standout of the edition.
- Forceu/Gokapi (#2) — twenty minutes, one container. A private page for sending a large file to somebody, where the link stops working after a set number of downloads or days. Also one of today's hidden gems.
Every link in one place
| # | Repository | Official site | Stars | Licence |
|---|---|---|---|---|
| 1 | authelia/authelia | authelia.com | 29,092 | Apache-2.0 |
| 2 | Forceu/Gokapi 💎 | gokapi.readthedocs.io | 2,860 | AGPL-3.0 |
| 3 | stalwartlabs/stalwart | stalw.art | ~14,800 | AGPL-3.0 + SELv2 |
| 4 | OpenRefine/OpenRefine | openrefine.org | 11,931 | BSD-3-Clause |
| 5 | ankane/pgslice 💎 | rubygems.org/gems/pgslice | 1,247 | MIT |
| 6 | ArchiveBox/ArchiveBox | ArchiveBox wiki | ~28,400 | MIT |
| 7 | BoundaryML/baml | boundaryml.com | 9,174 | Apache-2.0 |
| 8 | yamadashy/repomix | repomix.com | 28,481 | MIT |
| 9 | formbricks/formbricks | formbricks.com | 12,899 | AGPL-3.0 + paid edition |
| 10 | kimai/kimai | kimai.org | 4,959 | AGPL-3.0 |
| 11 | searxng/searxng | docs.searxng.org | 37,499 | AGPL-3.0 |
| 12 | lumeland/lume 💎 | lume.land | 2,275 | MIT |
Google dropped this tool in 2012 and it is still shipping
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
29,092 stars · Apache-2.0 · v4.39.28 (2026-09-17) · Track this in Scout
A single sign-in page with a second factor, placed in front of every private web service behind a reverse proxy.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Authelia is a small program that sits beside a reverse proxy (the piece of software that receives web requests and passes them on to the right service). The proxy asks Authelia about every request, and Authelia either lets it through or shows a login page first.
What it is good for. Anyone running several private web services on one machine — a photo library, a wiki, a monitoring page — who has been protecting them with one shared password, or with nothing at all. It replaces that with one login, one password policy and a second factor. It is also the cheapest way to add two-factor sign-in to software that has no such feature of its own.
- One account list, one login page, one set of rules for everything behind the proxy. Adding a new service means adding four lines to a rules file.
- Second-factor sign-in of several kinds: a code from a phone app, a hardware key, or a push notification.
- It is written in Go and ships as a single program in a container (a container is a way to run a program inside its own sealed box, so it cannot disturb anything else on the machine). It uses very little memory.
- It does not work on its own. It needs a reverse proxy — nginx, Traefik, Caddy or HAProxy — already installed and understood. If that sentence was unfamiliar, this is not a twenty-minute job.
- Everything is configured by editing a YAML file. There is no setup screen, and a mistake in that file locks everybody out, including the person who made it.
- It protects things that sit behind the proxy. Anything reachable another way, such as an SSH login or a database port, is untouched by it.
- goauthentik/authentik
25,733 stars, the same job with a full web interface for managing users and applications; much more to learn and noticeably heavier to run.
Track this in Scout - keycloak/keycloak
36,930 stars, the long-established enterprise answer backed by Red Hat; far more capable and far more machine to feed.
Track this in Scout - oauth2-proxy/oauth2-proxy
14,909 stars, does only the proxy half and hands the actual sign-in to Google, GitHub or another provider; simpler, but it keeps no accounts of its own.
Track this in Scout
mkdir authelia && cd authelia # write docker-compose.yml and config/configuration.yml first — see the guide docker compose up -d
2,860 stars · AGPL-3.0, read from the repository page; the LICENSE file returned HTTP 404 on every path tried from this sandbox · v2.2.4 (2026-03-10) · Track this in Scout
A self-hosted page for sending files, where each link expires after a set number of downloads or days and only the owner can upload.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Gokapi is a self-hosted replacement for the old Firefox Send service (self-hosted means the software runs on a machine you control rather than somebody else's). It can keep the files on local disk or push them to S3-compatible storage.
What it is good for. Anyone who regularly sends video, design files, archives or client deliverables and does not want them to live forever in a chat history. The expiry is the point: a link that dies after three downloads or seven days is a link you do not have to remember to clean up. It is also useful for sending something to a person who must not be given an account.
- Upload is private and download is public. Only the account holder can put files in, which is the difference between a sharing tool and an open dumping ground.
- Every file gets an expiry — a date, a download count, or both — and an optional password.
- One small Go program, a few tens of megabytes of memory, and a container image if that is easier. Files can go to S3-compatible storage instead of local disk.
- AGPL-3.0. If you modify it and offer the modified version to other people over a network, you have to publish your changes. For private use this costs nothing; for a product built on top of it, read the licence first.
- It needs HTTPS and a domain name to be useful, which means a reverse proxy or a tunnel in front of it. That is the same prerequisite as entry #1.
- End-to-end encryption is available but is not the default, and turning it on changes how downloads work. Read the documentation before assuming files are hidden from the machine itself.
- mtlynch/picoshare
3,043 stars, the same idea in a single file with SQLite behind it; simpler to run, with no S3 support and fewer options.
Track this in Scout - psi-4ward/psitransfer
1,938 stars, allows public uploads as well as downloads, which suits collecting files from clients and makes it a different kind of risk.
Track this in Scout - timvisee/send
5,896 stars, the continuation of Mozilla's original Firefox Send; the GitHub copy is a mirror of a GitLab project and its last code landed on 1 July 2025.
Track this in Scout
docker run -d --name gokapi \ -p 53842:53842 \ -v gokapi-data:/app/data \ -v gokapi-config:/app/config \ --restart unless-stopped \ f0rc3/gokapi:latest
~14,800 stars · Dual: AGPL-3.0 and Stalwart Enterprise License v2 (SELv2), read from the repository page; the LICENSE file returned HTTP 404 from this sandbox · v0.16.23 (2026-09-21) · Track this in Scout
A complete mail server with calendars and contacts in one program, speaking SMTP, IMAP, JMAP, CalDAV, CardDAV and WebDAV.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Stalwart is a mail server that speaks SMTP, IMAP, JMAP, CalDAV, CardDAV and WebDAV in one binary (a binary is a single compiled program file you run directly). It replaces the usual stack of Postfix, Dovecot, Rspamd and a separate calendar server.
What it is good for. Anyone who wants mail on a domain of their own without renting a mailbox per person, and who has looked at a classic mail stack and decided it was too many moving parts. It suits a small team, a family domain, or an application that needs to receive mail reliably. It is also the easiest way to get shared calendars and contacts without a separate groupware install.
- One program instead of five. One configuration file, one upgrade, one thing to monitor.
- Spam filtering, DKIM and DMARC signing, and full-text search over mailboxes are built in rather than added.
- Calendars and contacts come with it, so phones and desktop mail apps sync without a second server.
- Dual-licensed: AGPL-3.0 for the open parts and the Stalwart Enterprise License v2 for the rest, as stated on the repository page. The licence file itself could not be opened from here, so read it before building anything commercial on it.
- Running any mail server is the hard part, not installing it. Reverse DNS, SPF, DKIM, DMARC and a clean sending address all have to be right, or large providers will quietly discard the mail.
- It is at version 0.16.23 and has not reached 1.0. Configuration keys have moved between minor versions, so upgrades need reading, not just pulling.
- docker-mailserver/docker-mailserver
18,747 stars, the classic stack packaged into one container; more proven in the field, and still several programs under the lid.
Track this in Scout - mailcow/mailcow-dockerized
13,273 stars, a full suite with a web interface for managing domains and mailboxes; the friendliest to administer and the heaviest to run.
Track this in Scout - foxcpp/maddy
6,043 stars, the same single-program idea in Go and deliberately smaller; no calendars, no contacts, no web interface.
Track this in Scout
mkdir -p /opt/stalwart/data docker run -d --name stalwart \ -p 443:443 -p 25:25 -p 587:587 -p 993:993 \ -v /opt/stalwart/data:/opt/stalwart \ --restart unless-stopped \ stalwartlabs/stalwart:latest
11,931 stars · BSD-3-Clause · 3.10.1 (2026-03-04) · Track this in Scout
A local workbench for cleaning a messy table, best known for clustering near-duplicate values so they can be merged in one pass.
▶Repo detailsthe review · specs · pros & cons · install
What it is
OpenRefine loads a table from CSV, Excel, JSON or XML and gives it a browser interface for filtering, grouping and transforming. Its best-known feature is clustering: it finds values that are almost the same and offers to merge them.
What it is good for. Anyone who has inherited a customer list, a product catalogue, an export from an old system, or a survey of free-text answers. The job of getting that into a state where it can be imported somewhere is usually done by hand, and it is the sort of work that takes a day and produces new mistakes. This turns it into an hour and leaves a record of exactly what was changed.
- Clustering is genuinely good. It offers several matching methods, and on a column of company names it will typically catch hundreds of near-duplicates in one pass.
- Every operation is stored as a list you can export. Run it against next month's file and the same cleanup happens again, identically.
- It runs locally. Nothing is uploaded, which matters when the messy file contains customer data.
- It needs Java installed — JDK 11 or newer — and it opens in a browser while running as a local program, which confuses people the first time.
- The interface is from another era and the vocabulary is its own. "Facet" means filter. Expect an hour of reading before it clicks.
- It loads the table into memory, so a file of several million rows wants a machine with room to spare. It is not a replacement for a database.
- saulpw/visidata
9,241 stars, the same kind of exploring but inside a terminal and driven by the keyboard; far faster once learned, with no clustering feature.
Track this in Scout - wireservice/csvkit
6,412 stars, a set of command-line tools for cutting, joining and querying CSV files; scriptable and repeatable, with nothing to look at.
Track this in Scout - dathere/qsv
3,763 stars, a very fast Rust toolkit for the same command-line work, built for files too large to open comfortably.
Track this in Scout
wget https://github.com/OpenRefine/OpenRefine/releases/download/3.10.1/openrefine-linux-3.10.1.tar.gz tar -xzf openrefine-linux-3.10.1.tar.gz cd openrefine-3.10.1 ./refine
1,247 stars · MIT · no GitHub releases at all; the RubyGems gem pgslice is at 0.7.2 · Track this in Scout
A command-line tool that builds a partitioned copy of a large PostgreSQL table beside the original and swaps them, without taking the database down.
▶Repo detailsthe review · specs · pros & cons · install
What it is
pgslice is a command-line tool that prepares, fills and swaps a partitioned copy of an existing PostgreSQL table (partitioning means storing one logical table as many physical pieces, split by date or by number). Each stage is a separate command, and each one prints the SQL it is about to run.
What it is good for. Anyone with a table of events, logs, orders or measurements that has quietly grown past ten million rows and is now the reason the reports are slow. It also gives an easy way to delete old data: dropping last year's piece is instant, where deleting a year of rows can take hours and bloat the table.
- It never rewrites the live table. It builds a new partitioned one beside it, copies the data in batches, and swaps the names at the end. Every stage can be stopped.
--dry-runprints the exact SQL without running it, so the whole plan can be read, saved, and handed to somebody else to check.- Nothing runs permanently. There is no service, no extension to install in the database, and nothing left behind afterwards.
- It is a Ruby program, so Ruby has to be available — or the container image used instead. That is an odd dependency for a PostgreSQL tool.
- There are no GitHub releases at all. We looked, and the answer is none: the version to trust is the
pgslicegem, at 0.7.2. The code itself was last touched on 29 June 2026. - It partitions and then stops. Creating next month's piece before it is needed is a job for a scheduled task you write, or for one of the alternatives below.
- pgpartman/pg_partman
2,797 stars, a PostgreSQL extension that keeps creating and retiring pieces on a schedule; more capable and permanent, and it has to be installed into the database itself.
Track this in Scout
timescale/timescaledb23,595 stars, an extension that turns PostgreSQL into a time-series database and handles the splitting automatically; a much bigger commitment for a much bigger gain on time-based data.
Track this in Scout- ankane/pgsync
3,476 stars, the same author's tool for copying data between PostgreSQL databases; a different job, listed because it is the companion people reach for next.
Track this in Scout
gem install pgslice export PGSLICE_URL=postgres://user:password@localhost/mydb pgslice prep events created_at month --dry-run
~28,400 stars · MIT · v0.9.51 (2026-09-23) · Track this in Scout
It keeps a real copy of every page you save, in several formats at once, so a dead link stops mattering.
▶Repo detailsthe review · specs · pros & cons · install
What it is
ArchiveBox is a self-hosted web archiving application. It takes URLs from many sources and writes each one to disk in several formats — HTML, PDF, PNG, plain text, WARC and a SQLite index — with a web interface and a command-line tool over the top.
What it is good for. Anyone whose research lives in bookmarks: a competitor's pricing page as it looked in March, a documentation page for a version nobody hosts any more, a news article that later changed. It also answers the awkward part of every bookmarking tool — that the tool keeps the link and the link is the thing that breaks.
- Several formats per page, on purpose. If the JavaScript copy fails, the plain text usually survives, and the WARC file is the format libraries use for long-term keeping.
- It reads from browser bookmarks and history, RSS feeds, Pocket and Pinboard exports, and plain text lists, so getting years of links in is one command.
- MIT licensed, with no paid edition and no account. The archive is ordinary files in ordinary folders, readable without the program.
- Disk. A few thousand pages archived in every format runs to tens of gigabytes. Check there is room before pointing it at a decade of bookmarks.
- It drives a real browser to capture pages, which means a heavy container and a slow first run. Archiving thousands of links takes hours, not minutes.
- Pages behind a login are only saved if cookies are supplied, and some sites detect the capture and serve a blocked page instead. The archive then contains a neat copy of a refusal.
- linkwarden/linkwarden
19,374 stars, a bookmark manager with archiving built in; much nicer to use day to day, and it keeps fewer formats per page.
Track this in Scout - go-shiori/shiori
11,573 stars, a small single-program bookmark manager in Go that saves a readable copy of each page; far lighter, far less thorough.
Track this in Scout
webrecorder/browsertrix-crawler1,125 stars, a high-fidelity crawler that produces WARC files from a real browser; aimed at archiving whole sites rather than keeping a reading list.
Track this in Scout
mkdir -p ~/archivebox && cd ~/archivebox curl -O https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/main/docker-compose.yml docker compose run archivebox init --setup docker compose up -d
9.2k stars · Apache-2.0 · baml-language-0.18.1-nightly.20260905.a (2026-09-06) · Track this in Scout
'The programming language for agents' — a DSL for LLM prompts, functions and tools.
▶Repo detailsthe review · specs · pros & cons · install
What it is
BAML is a domain-specific language for defining model functions — the prompt, the input types and the output types — which then compiles into a client library for a normal programming language. It includes a testing interface so a prompt can be run against saved examples.
What it is good for. Anyone whose program depends on a model returning data rather than prose: pulling fields out of an invoice, classifying support messages, turning a description into a database record. The problem it removes is the pile of hand-written parsing and retry code that grows around every such call. It also makes prompts reviewable, because they sit in files instead of inside string variables.
- Output is checked against a type, and a malformed answer is repaired or retried rather than handed to the program.
- The same definition produces clients for Python, TypeScript, Go, C# and Java, so a team that uses two languages writes the prompt once.
- Prompts live in version control as files with tests beside them. Changing one produces a diff somebody can read.
- It is a new language. Even a small one is a real cost: the editor plugin, the build step, and everybody on the team learning it.
- The newest release on the project's own latest-release page is a nightly build,
baml-language-0.20.2-nightly.20260925.a, dated 26 September 2026. The releases list page disagrees and shows August tags. Nightly builds as the headline release are a sign to pin a version carefully. - Every call still costs money at the model provider, and the retry behaviour means a bad prompt can cost more than a plain one. Watch the bill in the first week.
567-labs/instructor13,696 stars, covered in Edition 5; it solves the same problem with an ordinary Python library and Pydantic types, so there is no new language to learn and no build step.
Track this in Scout- dottxt-ai/outlines
15,882 stars, forces valid output by constraining what the model is allowed to generate; stronger guarantees on models you run yourself, less useful against a hosted provider.
Track this in Scout - pydantic/pydantic-ai
20,116 stars, a full agent framework from the Pydantic authors with typed results; a bigger thing to adopt, and Python only.
Track this in Scout
python3 -m venv venv source venv/bin/activate pip install baml-py baml-cli init baml-cli generate
28,481 stars · MIT · npm repomix 1.18.1; requires Node.js >= 22 · Track this in Scout
Packs a whole repository into a single file shaped for a language model, with several output formats and a hosted web version.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Repomix walks a repository, filters it, and writes a single output file in plain text, Markdown or XML, beginning with a directory tree. It counts tokens (a token is the unit models charge and measure by, roughly three quarters of a word) per file and in total.
What it is good for. Anyone asking a model to review, explain or refactor a codebase they did not write — an inherited project, an unfamiliar open-source library, a contractor's handover. It also suits asking a question that spans many files, where a model given three files at a time will simply invent the connections.
- It respects
.gitignoreby default and has its own ignore rules, so the dependency folder and build output do not end up in the paste. - Token counts per file and in total, printed before you send anything. That turns "will this fit" from a guess into a number.
- It runs through
npxwith nothing installed, and it can pack a remote repository straight from its URL without cloning it.
- Node.js 22 or newer is required, which is stricter than many machines have by default.
- A large codebase produces a file no model will accept. The real work is writing the include and exclude patterns, and that is a skill in itself.
- It has a built-in check for committed secrets, but it is a check, not a guarantee. Read the output before uploading a private codebase anywhere.
mufeedvh/code2prompt7,697 stars, covered in Edition 30; the same job in Rust with prompt templates, and it is a single fast binary rather than a Node.js package.
Track this in Scout- cyclotruc/gitingest
15,341 stars, does it in the browser by changing hub to ingest in any GitHub address; nothing to install at all, and it only works on public repositories.
Track this in Scout - simonw/files-to-prompt
2,765 stars, the small Python original; its last code landed on 19 February 2025, nineteen months ago.
Track this in Scout
npx repomix@latest
12.9k stars · AGPL-3.0 + commercial EE · 5.4.2 (2026-09-03) · Track this in Scout
Self-hosted Typeform — link surveys for waitlists plus in-app surveys that harvest the words real users use.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Formbricks is a self-hosted survey platform with a visual editor, link surveys and surveys shown inside a web application to a chosen group of users. It stores responses in PostgreSQL.
What it is good for. Anyone who wants to ask customers a question without sending their answers to a third party, and anyone whose survey needs to appear at a particular moment — after a purchase, on the third visit, when somebody is about to cancel. Targeting is the part that link-only form builders cannot do.
- In-app surveys with targeting rules, not just a link. The same tool covers both, so the answers land in one place.
- The visual editor produces surveys that look finished, with logic that skips questions based on earlier answers.
- Running it needs one container plus PostgreSQL, and the data never leaves.
- AGPL-3.0 for the core, with a separately licensed enterprise directory at
apps/web/modules/ee. An enterprise key is needed to unlock some features in the published container images, so read what is behind that line before planning around a feature. - It is a full web application with a database. That is a real install and a real thing to keep patched — heavier than a static form that emails you.
- Version 6.0.0, released on 21 September 2026, replaced the authorisation system. A major version that changes permissions is a version to read the notes for before upgrading.
baptisteArno/typebot.io10,296 stars, covered in Edition 2; it builds conversational forms that feel like a chat, and it now ships under the Functional Source License rather than a plain open-source one.
Track this in Scout
OpnForm/OpnForm3,528 stars, covered in Edition 24; a straightforward form builder with a paid edition, and no in-app targeting.
Track this in Scout- LimeSurvey/LimeSurvey
3,734 stars, the long-established academic survey platform with very deep question logic; PHP, and aimed at research rather than product questions.
Track this in Scout
curl -fsSL https://raw.githubusercontent.com/formbricks/formbricks/main/docker/production.sh | sh
4,959 stars · AGPL-3.0 · 2.67.0 (2026-09-13) · Track this in Scout
Self-hosted time tracking against customers and projects, with invoices generated from the same records.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Kimai is a web application for recording time against customers, projects and activities, with reporting and invoice generation on top. It is a PHP application backed by MySQL or MariaDB.
What it is good for. Freelancers and small teams who bill by time and are currently doing it in a spreadsheet. The gain is not the timer — it is that the invoice comes out of the same data, with the same rates, without anybody retyping anything. It also handles several people, several rates and several currencies, which is where spreadsheets usually break.
- Invoices are generated from the recorded time using templates you can edit, in several formats. That removes the retyping step where the errors happen.
- Rates can be set per customer, per project, per activity and per person, including different internal and billable rates.
- It has been maintained for ten years, has a real plugin ecosystem, and there is a mobile app and a browser extension for starting the timer.
- PHP 8.2 or newer, a web server and a MySQL-compatible database. There is a container image, but this is still the heaviest kind of install in today's list.
- The interface is dense. Customers, projects, activities, teams, rates and tags all exist, and the first hour is spent deciding which of them you actually need.
- AGPL-3.0, and some plugins from the project's own shop are paid. Nothing essential is behind that line, but the invoice templates people want are often the paid ones.
- solidtime-io/solidtime
8,922 stars, a modern-looking alternative with a cleaner interface; younger, and its invoicing is less developed.
Track this in Scout - ActivityWatch/activitywatch
18,885 stars, records what you were doing automatically rather than asking you to start a timer; excellent for understanding where time went, and it does not produce invoices.
Track this in Scout - traggo/server
1,629 stars, a much smaller tag-based tracker in Go; quick to run and deliberately simple, with no customers, rates or invoices.
Track this in Scout
docker run --rm -d --name kimai-mysql \ -e MYSQL_DATABASE=kimai -e MYSQL_USER=kimai \ -e MYSQL_PASSWORD=kimai -e MYSQL_ROOT_PASSWORD=kimai \ mysql:8.4 docker run --rm -d --name kimai -p 8001:8001 \ -e DATABASE_URL=mysql://kimai:kimai@host.docker.internal:3306/kimai \ kimai/kimai2:apache
36.6k stars · AGPL-3.0 · no tagged releases; 9,678 commits on master; rolling Docker images · Track this in Scout
Self-hosted metasearch engine, considered as a way to get rank-tracking data without paying for a SERP API.
▶Repo detailsthe review · specs · pros & cons · install
What it is
SearXNG is a metasearch engine: it forwards a query to a configurable set of upstream engines, merges and ranks what comes back, and shows it with no tracking. It runs as a Python application, normally in a container behind a reverse proxy.
What it is good for. Anyone who wants search results without a profile being built, and anyone who wants one box that searches several specialised sources at once — code, academic papers, maps and images can all be in the same query. It is also a way to give a household or a small team a private default search page.
- No logging, no cookies of consequence, no account. The person running it decides what is kept, and the sensible answer is nothing.
- Well over a hundred upstream sources, switchable per category, so a single query can cover general web, code repositories and academic papers.
- It can be set as the browser's default search engine and supports the
!bangshortcuts people know from elsewhere.
- The upstream engines rate-limit, show CAPTCHAs to, and block self-hosted copies. Results degrade in ways the operator cannot fix, and the honest expectation is that some engines will be silently unavailable on any given day.
- No tagged releases at all — we looked, and there are none. Installation follows a rolling container image, so pinning a known-good version means pinning an image digest.
- Using it to collect search-ranking data at scale is fragile and against the search engines' terms of service. As a private search page it is fine; as a data source underneath something else it is not.
- searx/searx
13,553 stars, the original project that SearXNG was forked from; its last code landed on 14 May 2026 and it moves far more slowly than the fork.
Track this in Scout - benbusby/whoogle-search
11,598 stars, passes queries to Google alone and strips the tracking; simpler and more consistent, and dependent on one upstream.
Track this in Scout - mwmbl/mwmbl
1,830 stars, a non-profit search engine that crawls the web itself instead of asking others; a very different bet, with a far smaller index.
Track this in Scout
mkdir -p ~/searxng && cd ~/searxng
docker run -d --name searxng \
-p 8080:8080 \
-v "${PWD}/searxng:/etc/searxng" \
-e "BASE_URL=http://localhost:8080/" \
--restart unless-stopped \
searxng/searxng:latest2,275 stars · MIT, read from the LICENSE file (Oscar Otero) · v3.3.2 (2026-09-22) · Track this in Scout
A static site generator for Deno that needs no dependency folder and supports several template languages side by side.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Lume is a static site generator: it takes a directory of content and templates and writes out plain HTML. It runs on Deno, the JavaScript runtime that loads dependencies from URLs rather than from a local package folder.
What it is good for. Anyone building a documentation site, a blog or a small company site who has been put off by the size of the usual JavaScript toolchain. It also suits people who want to choose their own template language: Markdown, JSX, Nunjucks, Vento, plain JavaScript and TypeScript all work side by side in one project.
- No
node_modules. Dependencies are fetched and cached by Deno, so a project folder is the content and a short configuration file, and nothing else. - Genuinely fast. Small sites build in fractions of a second, and the development server reloads the page as you save.
- Plugins for the things a real site needs — sitemaps, feeds, image resizing, syntax highlighting, minification — are official and switched on with one line.
- It needs Deno, which most people do not have installed, and a good deal of JavaScript tooling assumes Node.js. This is a smaller world with fewer answers already written down.
- At 2,275 stars, questions are less likely to have been asked by somebody else already. The documentation is good, which is what makes up for it.
- The About sidebar on the repository page still advertises v3.2.6 from 25 May 2026. The current release is v3.3.2, from 22 September 2026. Trust the releases page, not the sidebar.
getzola/zola17,468 stars, covered in Edition 19; one Rust binary with everything built in and nothing to install at all, at the cost of one fixed template language.
Track this in Scout
11ty/eleventy19,870 stars, covered in Edition 30; the same flexibility about template languages, on Node.js, with a far larger community behind it.
Track this in Scout
withastro/astro62,220 stars, a much larger framework that also ships interactive components; the right answer for a site that needs real application behaviour, and considerably more machinery.
Track this in Scout
curl -fsSL https://deno.land/install.sh | sh deno run -A https://lume.land/init.ts deno task serve
Checked, and left out
These were opened for this edition and did not make it, with the reason.
pkolaczk/fclones - FINISHED. 2,910 stars, last code 3 March 2025, eighteen and a half months. New to the ledger as not-qualified, found while checking duplicate-file tools.
pkolaczk/fclones - FINISHED. 2,910 stars, last code 3 March 2025, eighteen and a half months. New to the ledger as not-qualified, found while checking duplicate-file tools.
lldap/lldap - ALIVE. 6,528 stars, code 26 September 2026
lldap/lldap - ALIVE. 6,528 stars, code 26 September 2026 (ungh). New to the ledger as queued; a light account directory that pairs with entry #1, held back because Authelia went out the same morning.
dottxt-ai/outlines - ALIVE. 15,882 stars, code 21 September 2026
dottxt-ai/outlines - ALIVE. 15,882 stars, code 21 September 2026 (ungh). New to the ledger as queued; listed as a comparison under entry #7.
ankane/pghero - ALIVE. 8,933 stars, code 25 September 2026
ankane/pghero - ALIVE. 8,933 stars, code 25 September 2026 (ungh). New to the ledger as queued; same author as entry #5 and held back for that reason.
medusajs/medusa - ALIVE. 35,982 stars, code 24 August 2026
medusajs/medusa - ALIVE. 35,982 stars, code 24 August 2026 (ungh). New to the ledger as queued.
solidtime-io/solidtime - ALIVE. 8,922 stars, code 8 September 2026
solidtime-io/solidtime - ALIVE. 8,922 stars, code 8 September 2026 (ungh). New to the ledger as queued; listed as a comparison under entry #10.
silverbulletmd/silverbullet - ALIVE. 6,160 stars, code 25 September 2026
silverbulletmd/silverbullet - ALIVE. 6,160 stars, code 25 September 2026 (ungh). New to the ledger as queued.
sqldef/sqldef - ALIVE. 3,171 stars, code 26 September 2026
sqldef/sqldef - ALIVE. 3,171 stars, code 26 September 2026 (ungh). New to the ledger as queued.
Luzifer/ots - ALIVE. 799 stars, code 26 September 2026
Luzifer/ots - ALIVE. 799 stars, code 26 September 2026 (ungh). New to the ledger as queued; a hidden gem held for a later edition.
noahgorstein/jqp - ALIVE. 2,845 stars, code 6 February 2026
noahgorstein/jqp - ALIVE. 2,845 stars, code 6 February 2026 (ungh). New to the ledger as queued; a hidden gem held for a later edition.
Coming tomorrow






























