Edition No. 21 · 15 Sep 2026
The whole backend is one file you download and run
Most software that stores your users, their files and their data arrives as a pile.
The web version carries the English / Русский switch. The Russian text is in the file radar-2026-09-15-ru.md, delivered into the chat on the day. This archive stays English only.
Most software that stores your users, their files and their data arrives as a pile. A database to install, a cache, a queue, a folder of settings. Today's first entry is one file. You download it, you run it, and you have a database, a login system, file storage and an admin screen. That is the most interesting true thing in today's twelve, so it is the title.
There is no theme. Twelve repositories, picked on how good they are, spread across twelve of the sixteen areas — one each, and the widest spread of any edition so far. Three of them have fewer than three thousand stars.
We aim for twelve every day. Some candidates fall out while we check them — those are listed at the end, with the reason.
If you only do three things
- ai-robots-txt/ai.robots.txt (#12) — tonight, five minutes, nothing to install and nothing left running. You copy one file onto your web server. From then on the robots that harvest text to train AI models are asked to stay off your pages, and the more aggressive ones are refused outright. The list is rebuilt roughly every week by people who watch for new robots, so you get the updates for free.
- rustic-rs/rustic (#3) — this weekend, about an hour. It copies your files somewhere safe, encrypted, and it only ever stores each piece once, so the second backup takes minutes rather than hours. It reads and writes the same store as restic (Edition 8 #11), so you are not choosing a side.
- pocketbase/pocketbase (#1) — an evening. One downloaded file gives you a database, user accounts, file uploads and an admin screen. It is the fastest way to find out whether a side idea is worth building properly.
Every link in one place
| # | Repository | Official site or docs | Stars | Licence | Latest |
|---|---|---|---|---|---|
| 1 | pocketbase/pocketbase | pocketbase.io | 60.7k | MIT | v0.40.4 (12 Sep 2026) |
| 2 | paperless-ngx/paperless-ngx | docs.paperless-ngx.com | 44.9k | GPL-3.0 | v3.1.3 (4 Sep 2026) |
| 3 | rustic-rs/rustic | rustic.cli.rs | 3.1k | Apache-2.0 or MIT | v0.11.4 (18 Aug 2026) |
| 4 | okbob/pspg 💎 | repository README | 2.7k | BSD-2-Clause | 5.8.16 (18 Feb 2026) |
| 5 | ggozad/oterm 💎 | ggozad.github.io/oterm | 2.4k | MIT | 0.24.0 (2 Sep 2026) |
| 6 | charmbracelet/vhs | repository README | 20.8k | MIT | v0.12.0 (9 Sep 2026) |
| 7 | marp-team/marp-cli | repository README | 3.8k | MIT | v4.5.1 (6 Sep 2026) |
| 8 | usewaypoint/email-builder-js 💎 | emailbuilderjs.com | 1.7k | MIT | no releases; npm 0.0.9 (9 Jan 2026) |
| 9 | pyannote/pyannote-audio | pyannote.ai | 10.4k | MIT | 4.0.7 (30 Jun 2026) |
| 10 | stanfordnlp/dspy | dspy.ai | 36.7k | MIT | 3.3.1 (21 Aug 2026) |
| 11 | edtechre/pybroker | pybroker.com | 3.5k | Apache-2.0 with Commons Clause | v2.0.1 (28 Aug 2026) |
| 12 | ai-robots-txt/ai.robots.txt | repository README | 4.1k | MIT | v1.52 (7 Sep 2026) |
The whole backend is one file you download and run
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
60.7k stars · MIT · v0.40.4 (2026-09-12), read from /releases/latest · Track this in Scout · Share this tool
One downloaded program that gives you a database, user accounts, file storage and an admin screen.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A backend written in Go and shipped as a single executable. It carries an embedded SQLite database, a REST-style API generated from your collections, realtime subscriptions over a socket, user authentication with OAuth2 providers, file storage, and an admin dashboard in the browser. You can also import it as a Go library and build your own program around it.
What it is good for. Any solo builder who wants to find out whether an idea works before committing to a real stack. The problem it removes is the first day. You are writing screens within ten minutes instead of configuring a database, and the thing you end up with is good enough to put in front of real users. It is also the right answer for small internal tools that nobody wants to maintain.
- One file. There is nothing to install, nothing to configure, and backing it up is copying a folder.
- The admin screen is genuinely good, so you can fix a bad row by hand instead of writing a script.
- MIT licence, which means you can use it in a paid product with no conditions attached.
- It uses SQLite, which keeps everything in one file on one machine. That is fine for a lot of apps and wrong for anything that needs several servers.
- The version number is 0.40.4, so it is still before 1.0 and things do change between versions. Pin the version you use.
- Extending it beyond the built-in features means writing Go, or running a second program beside it.
- supabase/supabase
The same idea at a much larger size, built on a real PostgreSQL database rather than SQLite, so it scales further but asks a lot more of you to run yourself.
Track this in Scout - appwrite/appwrite
Also gives you auth, a database, storage and functions behind one API, but it arrives as a set of containers rather than one file.
Track this in Scout - nhost/nhost
The same job again, built on PostgreSQL and Hasura, and it hands your data to you as GraphQL instead of REST.
Track this in Scout
# Download the Linux build from the releases page: # https://github.com/pocketbase/pocketbase/releases/latest # then unzip it and run it: unzip pocketbase_*_linux_amd64.zip ./pocketbase serve # It prints two addresses. Open the admin one in a browser and # create the first account. That is the whole setup. # To build it from source or use it as a Go library you need Go 1.25+: go install github.com/pocketbase/pocketbase@latest
44.9k stars · GPL-3.0 · v3.1.3 (2026-09-04), read from /releases/latest · Track this in Scout · Share this tool
It reads the words on your scans and invoices so you can search them like email.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hosted document management system written in Django. It watches a folder, runs OCR (reading text from a picture of a page) over anything that arrives, stores the original file plus a searchable PDF copy, and classifies each document by correspondent, document type and tags using a model that learns from your own corrections.
What it is good for. Anyone who is the only person responsible for their own paperwork, which is every solo founder. The problem it removes is the annual panic. Tax time stops being an archaeology project, and a supplier asking about an invoice from March takes ten seconds instead of an afternoon. It also works well for contracts, receipts and anything you scan once and need again in two years.
- It is honestly good at finding things. Full-text search across everything you have ever scanned, including the words inside pictures of pages.
- The classifier learns from you. After thirty corrections it starts filing new documents correctly on its own.
- Everything stays on your machine, and the original files are kept untouched beside the searchable copies.
- Setting it up means Docker Compose (a way of running several sealed programs together from one settings file). That is a real evening's work if you have never used it.
- The project states no minimum memory. Its own documentation has a section on running it on slower machines, which tells you that OCR is the heavy part, and a Raspberry Pi will be slow.
- GPL-3.0. Fine for running it yourself, and something to read carefully before building a product on top of it.
eikek/docspellDoes the same job of reading, tagging and searching scanned documents, written in Scala and smaller in every way; its last release was March 2025, so check it before relying on it.
Track this in Scout
sismics/docsThe project known as Teedy: document storage with OCR, full-text search, permissions and an approval workflow, aimed more at a small team than at one person.
Track this in Scout
Stirling-Tools/Stirling-PDFNot an archive at all, but the tool for everything you do to a PDF before filing it: split, merge, sign, compress, convert.
Track this in Scout
# The guided installer is the easiest route. It asks you questions # and writes the files for you: bash -c "$(curl --location --silent --show-error \ https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)" # By hand instead: # 1. From https://github.com/paperless-ngx/paperless-ngx, in docker/compose/, # take ONE docker-compose.*.yml matching the database you want and save # it as docker-compose.yml. Pick the file with -tika in the name if you # also want Word documents read. # 2. Take docker-compose.env and .env into the same folder. # 3. Edit docker-compose.env. On Linux set USERMAP_UID and USERMAP_GID to # your own user and group, or the files it writes will not be yours. docker compose pull docker compose up -d
3.1k stars · Apache-2.0 or MIT · v0.11.4 (2026-08-18), read from /releases/latest · Track this in Scout · Share this tool
It makes encrypted backups that only store each piece of a file once, in restic's own repository format.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A backup program written in Rust, shipped as one executable. It splits files into chunks, stores each unique chunk once, encrypts everything before it leaves your machine, and can write to local disks, SFTP, S3-compatible storage and more. It reads and writes the same repository format as restic, so the two tools can share one backup store.
What it is good for. Every solo builder with one server they cannot afford to lose, which is most of them. The problem it removes is the gap between "I should back things up" and a command you can actually paste. Two commands set up a store and take the first backup, and the second backup usually finishes in seconds. The honest test of any backup is not whether it ran but whether you have ever restored from it — do that once, this weekend, while nothing is wrong.
- Same store format as restic (Edition 8 #11), so you can use either tool against the same backups and switch later without converting anything.
- Everything is encrypted before it leaves the machine, so the storage provider never sees your files.
- Apache-2.0 or MIT, your choice, and there is no server component to keep alive.
- Lose the password to the backup store and every backup in it is gone for good. There is no recovery path, by design.
- Backing up a database by copying its live files can produce a broken copy. Back up the output of
pg_dumpinstead, or use pgBackRest (Edition 18 #1) for PostgreSQL specifically. - The version is 0.11.4, which is before 1.0. It is widely used, but pin the version and test a restore after any upgrade.
restic/resticThe original, using the identical store format, so this is the same advice in a different language; pick either and keep the store.
Track this in Scout- kopia/kopia
The same encrypted, deduplicated backups, with a desktop window as well as a command, which suits a laptop better than a server.
Track this in Scout - borgbackup/borg
The long-established answer for backing up Linux machines to a local disk or another machine over SSH, with a different store format that neither of the others can read.
Track this in Scout
# Debian or Ubuntu, using the prebuilt binary from the releases page: # https://github.com/rustic-rs/rustic/releases/latest # Or, if Rust is already on the machine: cargo install --locked rustic-rs # macOS: brew install rustic # Set up a store and take the first backup: rustic -r /mnt/backup/app init rustic -r /mnt/backup/app backup /var/www /etc # The part people skip. Do it now, not later: rustic -r /mnt/backup/app snapshots rustic -r /mnt/backup/app restore latest /tmp/restore-test
2.7k stars · BSD-2-Clause · 5.8.16 (2026-02-18), read from /releases/latest · Track this in Scout · Share this tool
It makes the tables your database prints readable, with the headings pinned in place.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A pager, which is the small program that displays long output one screen at a time, built specifically for tables. It freezes header rows and key columns, scrolls in both directions, highlights the current row and column, searches, sorts, and copies a selected block to the clipboard. It works with PostgreSQL, MySQL and plain CSV or TSV files.
What it is good for. Anyone who reads query results in a terminal more than once a week. The problem it removes is small and constant, which is why it is worth two minutes. Every time you read a wide result in psql you are doing arithmetic in your head about which column you are looking at. This is the cheapest improvement on today's page.
- Two minutes to install and one line of configuration, and it applies to everything from then on.
- It works on plain CSV files too, so it doubles as a viewer for exports.
- BSD-2-Clause, no conditions worth worrying about, and it is a single small program written in C.
- It only displays. It does not run queries, so you still need
psqlor another client in front of it. - The keyboard shortcuts take a day to learn. Press F1 for the help screen until they stick.
- There is no project website. Everything you need is in the README, which is good, but there is no tidy documentation site.
- dbcli/pgcli
Replaces psql itself with a client that completes table and column names as you type, and it uses pspg as its pager, so the two are partners rather than rivals.
Track this in Scout - saulpw/visidata
A spreadsheet for the terminal that opens CSV, JSON, SQLite and Excel files and lets you sort, filter and summarise them, so it edits and explores where pspg only displays.
Track this in Scout
tconbeer/harlequinA full SQL editor in the terminal with a schema sidebar and a results pane, which replaces the whole psql plus pager pair rather than improving half of it.
Track this in Scout
# Debian or Ubuntu: sudo apt-get install pspg # Fedora: sudo dnf install pspg # macOS: brew install pspg # Switch it on for psql, permanently: echo "export PSQL_PAGER='pspg'" >> ~/.bashrc source ~/.bashrc # Then just use psql as normal: psql mydb -c "SELECT * FROM documents LIMIT 200;" # It also reads a CSV file directly: pspg --csv export.csv
2.4k stars · MIT · 0.24.0 (2026-09-02), read from /releases/latest and confirmed on PyPI · Track this in Scout · Share this tool
A chat window for AI models that runs in your terminal and keeps your conversations.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A terminal user interface for large language models, written in Python. It holds persistent chat sessions in a local database, supports several providers at once, and connects to local runners such as Ollama, vLLM, LM Studio and llama.cpp as well as hosted ones including OpenAI and Anthropic. Version 0.24.0 added spoken responses.
What it is good for. Anyone who already works in a terminal and keeps switching to a browser tab to ask a question. The problem it removes is the switch. It is also the easiest way to try a local model seriously, because the conversation is saved and you can compare the same question across providers without leaving the window. Simon Willison's llm (Edition 7 #7) is the scripting answer to the same need; this is the sitting-and-talking answer.
- Conversations are kept, so a session from last week is still there.
- One tool in front of many providers. You can point it at a free local model today and a paid one tomorrow without changing how you work.
- MIT licence, and
uvx otermruns it without installing anything permanently.
- It does not include a model. You need Ollama or another runner installed first, or an API key that costs money.
- A terminal window is a poor place to read long answers with code in them. It is good for questions, less good for essays.
- Running a model locally is where the real hardware cost sits, and that belongs to the model, not to this. oterm itself states no requirement at all.
simonw/llmSends prompts from the command line and logs every prompt and answer to a SQLite file, which makes it the better tool inside scripts where oterm is the better tool for sitting and talking.
Track this in Scout
ollama/ollamaNot a competitor but the thing underneath: it downloads and runs open-weight models on your own machine and offers them over a local API.
Track this in Scout
open-webui/open-webuiThe same chat idea as a self-hosted web page rather than a terminal, with user accounts and document upload; its licence is a custom one that requires you to keep its branding.
Track this in Scout
# Run it without installing anything (needs uv): uvx oterm # Or install it properly: python3 -m venv venv && source venv/bin/activate pip install oterm oterm # macOS: brew install oterm # You also need somewhere for the model to run. The usual free route: # https://ollama.com — then: ollama pull llama3.2 # Python 3.10 or newer is required.
20.8k stars · MIT · v0.12.0 (2026-09-09), read from /releases/latest · Track this in Scout · Share this tool
It performs a terminal demonstration from a written script and saves it as a video.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line tool written in Go that reads a .tape file, a small script of keystrokes, pauses and settings, and renders the resulting terminal session as a GIF, MP4 or WebM. It controls the window size, the font, the theme and the typing speed, so the output looks the same every time.
What it is good for. Anyone who writes documentation, a README or a tutorial about something that runs in a terminal. The problem it removes is re-recording. A demonstration that lives in a text file can be regenerated after every release, and it can sit in the repository beside the code it demonstrates. For a YouTube channel this is the cleanest way to produce a short, correct terminal clip to drop into a longer video, without a screen recorder and without retakes.
- The demonstration is a text file, so it goes in git and you can see what changed.
- Every recording comes out identical: same size, same colours, same typing speed.
- There is a Docker image, so you can produce the video without installing anything on your own machine.
- Installed normally it needs two other programs on your machine first:
ttydandffmpeg. The Docker route avoids both. - It only records a terminal. It will not record a browser or a desktop window.
- A long demonstration takes as long to render as it does to play, so a three-minute clip costs three minutes every time.
- asciinema/asciinema
Records a real session you actually type, and stores it as text rather than video, so the file is tiny and the viewer can select the text.
Track this in Scout - faressoft/terminalizer
Also records a live session and turns it into an animated GIF or a web player, with the recording edited afterwards in a config file.
Track this in Scout
charmbracelet/freezeThe still-picture half by the same authors: it turns a file of code or captured output into a PNG or SVG image, with no motion at all.
Track this in Scout
# macOS or Linux with Homebrew (it pulls in ttyd and ffmpeg): brew install vhs # Or on Debian and Ubuntu, from the project's own package repository: sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key \ | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" \ | sudo tee /etc/apt/sources.list.d/charm.list sudo apt update && sudo apt install vhs ffmpeg # Write your first tape and render it: vhs new demo.tape vhs demo.tape # Or with no local installation at all: docker run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs demo.tape
3.8k stars · MIT · v4.5.1 (2026-09-06), read from /releases/latest and confirmed on registry.npmjs.org · Track this in Scout · Share this tool
It turns one Markdown file into slides, a PDF or a PowerPoint file with one command.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line converter for Marp, a Markdown-based slide format. It reads a Markdown file where --- separates slides and exports HTML, PDF, PPTX or a set of PNG images. It can also serve the deck and rebuild it while you edit, and it takes a CSS theme if you want your own look.
What it is good for. Anyone who has to produce a deck and resents the afternoon it takes. The problem it removes is the dragging. It is also useful for anything you have to produce repeatedly, because a deck built from text can be regenerated from new numbers. Slidev (Edition 12 #4) does the same job in the opposite way, and the difference is worth stating plainly: Slidev runs a development server for a live talk with interactive components, while this is one command that produces a file and exits. If you are speaking, use Slidev. If you are sending a PDF, use this.
- One command, one file in, one file out. Nothing keeps running afterwards.
- It exports PowerPoint, which matters when the other person will not open anything else.
- MIT, and
npxruns it without installing anything permanently.
- It needs Node.js 18 or newer, which is an extra thing on the machine if you work in Python.
- Exporting to PDF, PowerPoint or images needs a browser installed — Chrome, Edge or Firefox — because it renders the slides in one.
- The default look is plain. Making it yours means writing CSS, which is a real skill to pick up.
slidevjs/slidevSlides from Markdown as well, but built around a live development server with interactive Vue components and a presenter view, so it suits a talk you give rather than a file you send.
Track this in Scout- hakimel/reveal.js
The web framework both of the above sit on top of, which you write in HTML instead of Markdown and control completely.
Track this in Scout
quarto-dev/quarto-cliRenders one source file into a deck, an article, a PDF and a website, and runs Python or R code inside the document, which is far more than slides and correspondingly larger to install.
Track this in Scout
# Try it with no installation at all (needs Node.js 18+): npx @marp-team/marp-cli@latest slide-deck.md # macOS: brew install marp-cli # Inside a project: npm install --save-dev @marp-team/marp-cli # Write slides, then export. Three dashes start a new slide: npx @marp-team/marp-cli@latest slide-deck.md --pdf npx @marp-team/marp-cli@latest slide-deck.md --pptx # Edit and watch it rebuild in a browser: npx @marp-team/marp-cli@latest -s slide-deck.md
1.7k stars · MIT · no releases at all; @usewaypoint/email-builder 0.0.9 published to npm 2026-01-09 · Track this in Scout · Share this tool
A drag-and-drop email editor you put inside your own app.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A set of React components that render a block-based email template builder. You compose from built-in blocks — heading, text, image, button, columns, divider, avatar, spacer — and it emits both a JSON description and the final HTML. There is no server side; it runs entirely in the browser.
What it is good for. Anyone sending email from their own product and tired of hand-editing table-based HTML. The problem it removes is the gap between writing an email and it arriving looking correct. Listmonk (Edition 2 #1) sends lists and Dittofeed (Edition 14 #8) triggers messages from behaviour, and both expect you to arrive with HTML already made. This is where that HTML comes from, and because it is a component rather than a product, the editor can live inside your own admin screen.
- It runs in the browser with nothing behind it, so there is no service to host and no cost.
- It gives you the email as structured JSON as well as HTML, which means you can store it, edit it later and re-render it.
- MIT licence, so you can put it inside a paid product without conditions.
- It is a component, not an application. You have to be building something in React already for it to be useful.
- The project has never cut a release. The npm package was published in January 2026 and the repository was pushed to in February 2026, so it is current, but there are no version notes to read.
- The block set is deliberately small. Anything unusual means writing your own block.
knadh/listmonkThe other end of the job: it holds your subscriber list and sends the campaign, and it expects the HTML this produces.
Track this in Scout
arikchakma/maily.toThe same drag-and-drop email editor idea, also as React components, with a hosted version you can use directly rather than embedding.
Track this in Scout
maizzle/frameworkThe answer for people who would rather write the email in code: it lets you build email HTML with Tailwind CSS and handles the awkward conversions for you.
Track this in Scout
# Inside an existing React project: npm install --save @usewaypoint/email-builder # Try the editor first, with nothing installed, at: # https://usewaypoint.github.io/email-builder-js/ # Or run the project's own example locally: git clone https://github.com/usewaypoint/email-builder-js cd email-builder-js npm install npm run dev
10.4k stars · MIT · 4.0.7 (2026-06-30), GitHub and PyPI agree · Track this in Scout · Share this tool
It works out who spoke when in a recording, and gives you the building blocks separately.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python toolkit built on PyTorch for speaker diarization, the task of dividing a recording into stretches labelled by speaker. It also exposes the building blocks separately: voice activity detection, speaker change detection, overlapped speech detection and speaker embeddings.
What it is good for. Anyone who records conversations and needs the transcript to name the speakers. Interviews, podcasts, two-host videos, recorded calls. The problem it removes is the hour you would otherwise spend listening back and splitting the text by hand. For a YouTube channel that publishes interviews, this is what turns one wall of transcript into subtitles that say who is talking.
- It runs on an ordinary processor. The project reports about 31 seconds of work per hour of audio on standard hardware, so no graphics card is needed.
- MIT licence on the code, and the pipeline is a few lines of Python.
- It gives you the separate pieces as well as the finished pipeline, so you can use only the part you need.
- Getting the model is not just a download. You need a Hugging Face account, you must accept the model's conditions, which include agreeing to share your contact information and receive occasional emails, and you must create an access token. The model itself is CC-BY-4.0.
- It needs
ffmpeginstalled and Python 3.10 or newer, and it pulls in PyTorch, which is a large download. - It tells you who spoke, not what they said. You still need a transcription tool beside it.
m-bain/whisperXDoes the transcription and the speaker labelling together, giving you word-level timings as well, which makes it the one-step answer where pyannote is the specialist.
Track this in Scout- speechbrain/speechbrain
A general PyTorch toolkit for speech that covers recognition, speaker identification, diarization and enhancement with ready-made recipes, so it is much wider and correspondingly heavier.
Track this in Scout - NVIDIA-NeMo/Speech
NVIDIA's framework for training and running large speech models, including diarization, aimed at people building models rather than using one; it was renamed from NVIDIA/NeMo.
Track this in Scout
# ffmpeg must be on the machine first: sudo apt install ffmpeg # or: brew install ffmpeg python3 -m venv venv && source venv/bin/activate pip install pyannote.audio # Then, once, in a browser: # 1. Make an account at https://huggingface.co # 2. Accept the conditions at # https://huggingface.co/pyannote/speaker-diarization-community-1 # 3. Create a token at https://huggingface.co/settings/tokens
36.7k stars · MIT · 3.3.1 (2026-08-21), GitHub and PyPI agree · Track this in Scout · Share this tool
It improves the instructions you send a language model by measuring the answers instead of guessing.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python framework for building applications on language models. You declare typed input and output signatures and compose them into modules, and DSPy compiles those into prompts. Its optimisers then search over instruction wordings and few-shot examples against a metric you define, so the program is tuned rather than hand-edited.
What it is good for. Anyone whose product depends on a model behaving consistently. The problem it removes is a real one: prompt quality is usually managed by feel, and feel does not survive a model upgrade. For anything whose whole value is that the subtopics it pulls out of a long conversation are the right ones, this is the tool that turns "these subtopics look better" into a number you can defend. It sits beside Instructor (Edition 5 #11), which shapes the output, and Ragas (Edition 14 #10), which scores it.
- You write Python, not prompt strings, so the logic is testable and readable a month later.
- Changing model changes one line. The optimiser re-tunes for the new model instead of you starting again.
- MIT, very actively developed, and the documentation is unusually good.
- Every optimisation run makes many model calls, and those calls cost real money. Set a budget before the first run.
- There is a genuine concept to learn first. Expect a day before it clicks, not an hour.
- You have to write a scoring function, and if that score does not match what you actually want, the optimiser will cheerfully improve the wrong thing.
567-labs/instructorMakes a model return data that matches a schema you define, validating and retrying until it fits, which is the shaping half of the job where DSPy is the tuning half.
Track this in Scout
BoundaryML/bamlA small language in which you declare model functions and their output types, generating typed client code for several languages; it covers structure and types rather than automatic tuning.
Track this in Scout- guidance-ai/guidance
Constrains the model as it generates, interleaving your fixed text with patterns the output must match, so the answer cannot come back malformed in the first place.
Track this in Scout
python3 -m venv venv && source venv/bin/activate pip install dspy # Python 3.10 or newer is required (and below 3.15). # The older package name dspy-ai is now only an alias. Install dspy.
3.5k stars · Apache-2.0 with Commons Clause · v2.0.1 (2026-08-28) · Track this in Scout · Share this tool
Walk-forward analysis and bootstrapped confidence intervals as first-class features — the anti-curve-fitting layer.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python framework for backtesting rule-based and machine-learning trading strategies. You write a strategy as a function over bar data; it handles data sources, caching, position and portfolio bookkeeping and performance metrics. Its two distinguishing features are hooks for training and using a model inside the strategy, and walk-forward analysis with bootstrapped confidence intervals.
What it is good for. Anyone testing a trading idea who wants to know whether it is real. The problem it removes is self-deception, which is the main way a backtest wastes a year of someone's life. For a short-term intraday strategy, walk-forward analysis is the right shape of test: a scalping strategy tuned on one month and never checked on the next is not a strategy, it is a description of that month.
- Walk-forward testing and bootstrapped confidence intervals are built in, not bolted on. The honest test is the default one.
- Training a model inside the strategy is a first-class feature rather than something you assemble yourself.
- Results are cached, so re-running a long test after a small change is fast.
- The licence is Apache 2.0 with the Commons Clause, which means it is not open source in the usual sense: you may use it, but you may not sell the software itself. Read it before it goes anywhere near a paid product.
- The package is called
lib-pybrokeron PyPI, notpybroker. Installing the obvious name gets you something else. - It is built around bars, so it is a poor fit for anything that depends on the order book or on tick-by-tick timing. See the note on hftbacktest at the end of this edition.
kernc/backtesting.pyA deliberately small single-asset backtester with built-in parameter search and interactive charts, easier to start with but without walk-forward analysis as a first-class feature; AGPL-3.0.
Track this in Scout
nautechsystems/nautilus_traderRuns the identical strategy code in a backtest and in live trading, with a Rust core, so it is the production answer where PyBroker is the research one.
Track this in Scout
polakowo/vectorbtEvaluates thousands of parameter combinations at once as array operations rather than a loop, which is far faster for sweeps; it carries the same Commons Clause restriction.
Track this in Scout
python3 -m venv venv && source venv/bin/activate pip install -U lib-pybroker # Python 3.11 or newer. Note the package name: lib-pybroker.
4.1k stars · MIT · v1.52 (2026-09-07) · Track this in Scout · Share this tool
A maintained list of AI crawler user-agents with ready-made robots.txt, nginx, Caddy and HAProxy rules.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A community-maintained list of AI crawler user-agents, published as ready-made configuration files for several web servers: robots.txt, an Apache .htaccess, an Nginx include, a Caddyfile, an HAProxy list and a Lighttpd include. The robots.txt file asks politely. The server files refuse the request outright.
What it is good for. Anyone publishing writing they would rather not have harvested, which is most people who write anything. The problem it removes is not the blocking, which is easy, but the keeping up, which is not. Version 1.52 was published on 7 September 2026 and adds several newly spotted robots, which is the whole value: somebody else is watching. The Repo Radar archive at grasppy.com/radar is exactly the sort of page this is for — long, original, and useful to a scraper.
- Five minutes, one file, nothing running afterwards, and no cost of any kind.
- The list is updated constantly and tagged as a release, so you can subscribe to the releases feed and know when to update.
- It ships configuration for six different web servers, so you almost certainly do not have to translate anything.
- A
robots.txtfile is a request, not a wall. Well-behaved crawlers obey it and badly behaved ones ignore it. The web server files are what actually refuse them. - Blocking by user-agent name is easy to get around. A scraper that lies about its name walks straight past this.
- Blocking too widely can hide you from search engines or AI assistants that send you readers. Read the list before you apply it, and decide which ones you actually want kept out.
TecharoHQ/anubisTakes a different approach entirely: it sits in front of your site and makes every visitor's browser do a small piece of work first, which costs a scraper running millions of requests far more than it costs a reader.
Track this in Scout- mitchellkrogza/nginx-ultimate-bad-bot-blocker
A much larger Nginx blocklist covering spam referrers, scanners and fake search-engine robots as well as AI ones, so it is broader and noisier.
Track this in Scout - google/robotstxt
Google's own parser for robots.txt files, released as a library and a test tool, useful for checking that the rules you wrote say what you think they say.
Track this in Scout
# Nginx. Fetch the include file and point your server block at it:
sudo curl -o /etc/nginx/nginx-block-ai-bots.conf \
https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/main/nginx-block-ai-bots.conf
# Then inside your server { } block add:
# include /etc/nginx/nginx-block-ai-bots.conf;
sudo nginx -t && sudo systemctl reload nginx
# The polite half, for any web server. Put this at the site root:
curl -o robots.txt \
https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/main/robots.txt
# To be told when the list changes, subscribe to:
# https://github.com/ai-robots-txt/ai.robots.txt/releases.atomChecked, and left out
These were opened for this edition and did not make it, with the reason.
AnswerDotAI/rerankers - UNVERIFIED, and explicitly NOT called dormant. 1.6k stars, Apache-2.0. The newest GitHub release, 0.6.0, carries a yearless date of '12 Nov' which would fall in the future, so its year is unknown; the newest provable artefact anywhere is PyPI 0.10.0 of 22 May 2025. Moved from queued to unverified. Needs a sweep from the Mac.
AnswerDotAI/rerankers - UNVERIFIED, and explicitly NOT called dormant. 1.6k stars, Apache-2.0. The newest GitHub release, 0.6.0, carries a yearless date of '12 Nov' which would fall in the future, so its year is unknown; the newest provable artefact anywhere is PyPI 0.10.0 of 22 May 2025. Moved from queued to unverified. Needs a sweep from the Mac.
NotJoeMartinez/yt-fts - UNVERIFIED. 1.8k stars, Unlicense. Last release v0.1.62, 4 July 2025, year confirmed explicitly on PyPI; commit dates unreadable here. The ledger already carried a note that the author had declared the project finished, and nothing found today contradicts it. Moved from queued to unverified.
NotJoeMartinez/yt-fts - UNVERIFIED. 1.8k stars, Unlicense. Last release v0.1.62, 4 July 2025, year confirmed explicitly on PyPI; commit dates unreadable here. The ledger already carried a note that the author had declared the project finished, and nothing found today contradicts it. Moved from queued to unverified.
eikek/docspell - UNVERIFIED. 2.3k stars, AGPL-3.0-or-later, a self-hosted document archive that does the same job as paperless-ngx
eikek/docspell - UNVERIFIED. 2.3k stars, AGPL-3.0-or-later, a self-hosted document archive that does the same job as paperless-ngx (#2). Last release v0.43.0, 15 March 2025, year confirmed on the project's own changelog and on its SourceForge mirror; commit dates unreadable here. New to the ledger, recorded as unverified and listed under #2 as a comparison.
VladUZH/harken - UNVERIFIED. Self-hosted social listening. 3 stars, no releases at all, not on PyPI, so no dated source exists in either direction. Moved from queued to unverified.
VladUZH/harken - UNVERIFIED. Self-hosted social listening. 3 stars, no releases at all, not on PyPI, so no dated source exists in either direction. Moved from queued to unverified.
Yupcha/waitless - UNVERIFIED. Single-binary Go waitlist platform, MIT, 1 star. Its only release v0.1.0 carries a yearless date and there is no Go module page, changelog or third-party mention to settle the year. Moved from queued to unverified.
Yupcha/waitless - UNVERIFIED. Single-binary Go waitlist platform, MIT, 1 star. Its only release v0.1.0 carries a yearless date and there is no Go module page, changelog or third-party mention to settle the year. Moved from queued to unverified.
nkaz001/hftbacktest - ALIVE at release level: rust-v0.9.4 and py-v2.4.4, 10 December 2025, year confirmed on PyPI. 4.2k stars, MIT. Models queue position and latency, which is the right shape for ScalpingMate and is what PyBroker lacks. Left out because PyBroker took the markets slot and because commit-level recency could not be read. Stays queued, near the front.
nkaz001/hftbacktest - ALIVE at release level: rust-v0.9.4 and py-v2.4.4, 10 December 2025, year confirmed on PyPI. 4.2k stars, MIT. Models queue position and latency, which is the right shape for ScalpingMate and is what PyBroker lacks. Left out because PyBroker took the markets slot and because commit-level recency could not be read. Stays queued, near the front.
tconbeer/harlequin - ALIVE: v2.14.0 on GitHub, 14 September 2026. 6.4k stars, MIT, a full SQL editor in the terminal. Left out because pspg
tconbeer/harlequin - ALIVE: v2.14.0 on GitHub, 14 September 2026. 6.4k stars, MIT, a full SQL editor in the terminal. Left out because pspg (#4) took the database slot at a fraction of the setup cost. New to the ledger, queued.
jgraph/drawio - ALIVE: v31.4.5, 8 September 2026, Apache-2.0. The client-side diagram editor behind draw.io. Left out because the twelve were full. New to the ledger, queued.
jgraph/drawio - ALIVE: v31.4.5, 8 September 2026, Apache-2.0. The client-side diagram editor behind draw.io. Left out because the twelve were full. New to the ledger, queued.
sharkdp/numbat - ALIVE: v1.24.0, 23 August 2026, year confirmed by the crates.io publish timestamp. 2.6k stars, dual Apache-2.0 and MIT. A calculator that tracks physical units. Left out because VHS
sharkdp/numbat - ALIVE: v1.24.0, 23 August 2026, year confirmed by the crates.io publish timestamp. 2.6k stars, dual Apache-2.0 and MIT. A calculator that tracks physical units. Left out because VHS (#6) took the workshop slot; it would have been a fourth gem. New to the ledger, queued.
dbcli/litecli - ALIVE: 1.17.1 on PyPI, 31 January 2026, BSD-3-Clause, 3.3k stars. A SQLite client with autocompletion. Left out because pspg took the slot. SOURCE DISAGREEMENT PRINTED RATHER THAN RESOLVED: the repository's own CHANGELOG lists 1.19.0 dated 2026-01-30, above anything published on GitHub or PyPI. New to the ledger, queued.
dbcli/litecli - ALIVE: 1.17.1 on PyPI, 31 January 2026, BSD-3-Clause, 3.3k stars. A SQLite client with autocompletion. Left out because pspg took the slot. SOURCE DISAGREEMENT PRINTED RATHER THAN RESOLVED: the repository's own CHANGELOG lists 1.19.0 dated 2026-01-30, above anything published on GitHub or PyPI. New to the ledger, queued.
arikchakma/maily.to - ALIVE: @maily-to/core 0.3.7 published to npm 3 February 2026. 4.0k stars, MIT. Overlaps email-builder-js
arikchakma/maily.to - ALIVE: @maily-to/core 0.3.7 published to npm 3 February 2026. 4.0k stars, MIT. Overlaps email-builder-js (#8) almost exactly and is listed there as a comparison. Stays queued so the two can be compared properly.
TheCraigHewitt/seomachine - LEFT OUT on a fact about the project rather than on fit. MIT by its LICENSE file, issue-tracker activity into September 2026, but an open issue #62 of 14 August 2026 alleges that its star count was manipulated. The complaint carries no numbers and no reply and cannot be confirmed or refuted from this sandbox. Stays queued with the complaint recorded rather than published on a publicly disputed number.
TheCraigHewitt/seomachine - LEFT OUT on a fact about the project rather than on fit. MIT by its LICENSE file, issue-tracker activity into September 2026, but an open issue #62 of 14 August 2026 alleges that its star count was manipulated. The complaint carries no numbers and no reply and cannot be confirmed or refuted from this sandbox. Stays queued with the complaint recorded rather than published on a publicly disputed number.






























