Edition No. 9 · 3 Sep 2026

The people, not the pipes

Twelve repositories for the moments when a real person arrives: a chat box, a new lead, an abandoned screen, a signed contract, a new subscriber.

By Genn·12 repositories·15 min read

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

The first eight editions were mostly about machinery: analytics, backups, search, transcription, error tracking, document conversion, monitoring, email delivery. Useful things. None of them is a person.

This edition turns to the moments when a real person arrives. Someone types a question into a chat box. A new lead needs a reply. A visitor gives up on a screen and leaves. A contract comes back signed. A reader subscribes to an article and sends it to a colleague.

Twelve repositories cover those moments. Five do the person-facing work. Three are small tools that fit around them. Three sit inside the software itself. One reads the data all of it produces.

If you only do three things

  1. OpenReplay (#3) — install it, watch one recorded visit from start to finish, and the reason people abandon a particular screen usually stops being a guess.
  2. Twenty (#1) — five leads a month become five open threads with a next action attached, instead of five names nobody can place by Friday.
  3. Firecrawl (#11) — point it at three competitor websites, keep the structured output, and there is a map of what they publish by the end of the week.

The people, not the pipes

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

Twenty: contacts and deals you host. Tracks contacts, companies and deals in one place.

56.4k stars · AGPL-3.0 + commercial licence over enterprise files marked /* @license Enterprise */ · sdk/v2.38.1 (2026-09-06) · Track this in Scout · Share this tool

The place where a lead becomes a person you owe an answer to, not another line in a spreadsheet.

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

What it does

Twenty stores people, companies and deals as records, and lets you link one record to another. Each record holds notes, tasks, attachments and a timeline of what happened. You can add your own fields and your own kinds of record without writing code. A view can be a table or a board of columns, and every view can be filtered and saved. There is a full programmable interface (an API — a way for other programs to read and write the same data), in both GraphQL and REST form. Running it needs PostgreSQL, a database server, and Redis, a fast temporary store, alongside the application. It does not send bulk marketing email, it does not do bookkeeping, and it is not a support desk — there is no shared inbox for incoming tickets.

Why it matters

Who it suits. Small teams who keep losing track of replies they promised. Five leads a month in a spreadsheet is five names nobody can place by Friday; a record with a next action attached is not. It also suits anyone who needs contact data to stay on hardware they control, whether for law or for customer trust. Skip it if a shared spreadsheet is genuinely working, or if the real need is sending email to a list rather than following up one person at a time.

Verdict. Worth about half a day to install and a week of discipline to make it stick. A tracker nobody opens is worse than none, so the real cost is the habit rather than the hardware. Read the licence note near the top of this edition before putting it in front of customers. EspoCRM is the lighter and older choice when a modern interface is not the point.

Stars56.4k
LicenceAGPL-3.0 + commercial licence over enterprise files marked /* @license Enterprise */
Latestsdk/v2.38.1 (2026-09-06)checked 7 Sep 2026
Written inTypeScript
NeedsDocker, PostgreSQL and Redis
RunsSelf-hosted on your own server
Good
  • Custom fields and custom record types without writing any code
  • A full programmable interface, so other tools can feed it automatically
  • Released most weeks; v2.46.0 landed on 12 October 2026
Watch for
  • Needs PostgreSQL and Redis as well as the application — three moving parts, not one
  • Files marked /* @license Enterprise */ need a paid subscription in production
  • Not something a non-programmer installs alone; the supported route is Docker, a way to run a program inside its own sealed box
Replaces

A paid CRM subscription — Hubspot, Pipedrive, Attio

Works well with

Chatwoot for the conversations, n8n to feed contacts in, Listmonk to push engagement back as tags

Install
mkdir -p ~/twenty && cd ~/twenty
curl -o docker-compose.yml \
  https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml
docker compose up -d
Screenshots
twentyhq/twenty: GitHub preview cardtwentyhq/twenty: Screenshot 1twentyhq/twenty: Screenshot 2twentyhq/twenty: Screenshot 3twentyhq/twenty: Screenshot 4
Chatwoot: chat box and shared inbox. Answers website chats and messages in one place.

36.6k stars · MIT · v4.17.1 (2026-08-27) · Track this in Scout · Share this tool

The little bubble that turns 'someone left' into 'someone asked something specific.'

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

What it does

Chatwoot gives a website a chat widget that visitors can open and type into. Those conversations arrive in a shared inbox alongside email, WhatsApp, Instagram and Facebook Messenger messages. Conversations can be assigned to a person or a team, and routed by rules. Saved replies cover the questions that come up every day, and labels group conversations by subject. It reports on volume, first reply time and resolution time. It is a Ruby on Rails application and needs PostgreSQL, Redis and a background job worker to run. It does not track deals or sales stages, it does not record what a visitor did on the page, and it does not send marketing campaigns.

Why it matters

Who it suits. Anyone running a website where confused visitors currently leave without saying why. A chat box turns "someone bounced" into "someone asked a specific question", and that is the cheapest research there is. The messaging-app inboxes matter for audiences who do not use email much. Skip it if nobody can commit to answering within a day, because an unanswered chat box does more harm than no chat box.

Verdict. Worth a day to install and then a standing habit. The MIT licence is one of the cleanest in this edition, and the company behind it sells a hosted version, so the open code is unlikely to disappear. The heavy part is the five-service install. Libredesk (Ed.5 #3) does a smaller version of the same job in one binary, and running both is a waste.

Stars36.6k
LicenceMIT
Latestv4.17.1 (2026-08-27)checked 7 Sep 2026
Written inRuby
NeedsRuby on Rails, Sidekiq, PostgreSQL and Redis
RunsSelf-hosted on your own server
Good
  • MIT licensed, with no conditions on how it is used
  • A real chat widget plus the messaging apps people actually use
  • Reports on reply times, not just on message counts
Watch for
  • Ruby on Rails, PostgreSQL, Redis and a job worker — a heavier install than a single program
  • A chat box nobody answers breaks trust faster than having none
  • Overlaps Libredesk (Ed.5 #3); pick one of the two
Replaces

Intercom, Crisp, and any per-seat live-chat subscription

Works well with

Twenty, via an n8n webhook that turns a conversation into a lead

Install
docker run -p 3000:3000 \
  -e SECRET_KEY_BASE=$(openssl rand -hex 64) \
  chatwoot/chatwoot:latest bundle exec rails db:chatwoot_prepare
# For real use, take docker-compose.production.yaml from the repository instead.
Screenshots
chatwoot/chatwoot: GitHub preview card
OpenReplay: replay a real visit. Records a visit to a website and plays it back.

12.8k stars · Multiple licences — LICENSE file references sub-directory licences separately · v1.27.0 (2026-05-05) · Track this in Scout · Share this tool

Four minutes of watching one real person struggle with Grasppy will teach you more than a month of guessing.

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

What it does

OpenReplay adds a small script to a website that records what happens in the browser. It captures mouse movement, clicks, scrolling, page changes, network requests and messages written to the browser console. The recording plays back as one timeline you can scrub through, with the errors marked on it. It also builds funnels and basic product analytics from the same data, so you can see where people drop out of a sequence of steps. Text fields can be masked so that typed content is never stored. Running it needs PostgreSQL, Redis, ClickHouse for the event data and storage that speaks the S3 protocol for the recordings. It does not watch anything outside the website, it does not monitor servers, and it is not a full error-tracking service even though it shows errors.

Why it matters

Who it suits. Teams whose main screen is complicated and who cannot explain why people leave it. Charts say a page was abandoned; a recording shows the visitor clicking the same control twice, waiting, and giving up. It also suits anyone who cannot send visitor recordings to an outside company for legal reasons. Skip it if the website is a few static pages, because there is nothing to watch.

Verdict. The highest-value install in this edition, and also the heaviest. Budget a day, and write a deletion rule on the first day: an hour of active use is tens of megabytes per recording and storage fills quickly. The licence is the other thing to settle first — the repository mixes several, so read the LICENSE file before putting any of it inside a product that is sold. rrweb is the library to reach for instead when only the recording part is wanted.

Stars12.8k
LicenceMultiple licences — LICENSE file references sub-directory licences separately
Latestv1.27.0 (2026-05-05)checked 7 Sep 2026
Written inTypeScript
NeedsPostgreSQL, Redis, ClickHouse and S3-compatible storage
RunsSelf-hosted on your own server
Good
  • One recording often answers a question months of charts could not
  • Captures network requests and console errors next to the mouse movement
  • Text masking is built in, so typed content need never be stored
Watch for
  • Four supporting services: PostgreSQL, Redis, ClickHouse and S3-style storage
  • The licence is not a single permissive one; read LICENSE before any commercial use
  • Recordings grow fast and need a deletion rule from day one
Replaces

FullStory, Hotjar, LogRocket

Works well with

Twenty — a recording ID on a contact record pulls up the visit when they email

Install
bash <(curl -s https://raw.githubusercontent.com/openreplay/openreplay/main/scripts/helmcharts/openreplay-cli.sh)
# A plain Docker Compose setup lives in scripts/docker-compose in the repository.
Screenshots
openreplay/openreplay: GitHub preview cardopenreplay/openreplay: Screenshot 1openreplay/openreplay: Screenshot 2
Documenso: get a document signed. Sends a document for signature and records who signed.

14.9k stars · AGPL-3.0 · v2.17.0 (2026-08-19) · Track this in Scout · Share this tool

The document you send that comes back signed, not thumbed-through and forgotten in a folder.

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

What it does

Documenso takes a PDF, lets you place signature and text fields on it, and emails each signer a private link. Signers complete their fields in the browser, and the finished document is stored with a record of who did what and when. It supports several signers in a set order, and reusable templates for documents sent often. Finished documents can carry a digital certificate, and events such as "document signed" can be pushed to other software through webhooks. It is a Next.js application with PostgreSQL behind it, and it needs an outgoing email service to deliver the links. It does not write contracts, it does not store a general document library, and it makes no promise about which legal standard a signature meets in a given country.

Why it matters

Who it suits. Anyone whose deals stall because a customer asks for a signed agreement first — a data processing agreement, a service contract, a non-disclosure agreement. Consultants and partnerships hit this constantly. The alternative is a paid seat per user, or a document emailed back and forth with no record of who agreed to what. Skip it if signatures come up once or twice a year, because a free trial of a hosted service is cheaper than a server.

Verdict. Worth knowing exists more than worth installing early. Set it up when the second customer asks for a signature, not before. The point to check carefully is legal weight: electronic signature law differs by country, so read what the counterpart actually requires before promising anything. Sending is the other half of the work, and needs email authentication set up properly — checkdmarc (Ed.8 #1) tests that.

Stars14.9k
LicenceAGPL-3.0
Latestv2.17.0 (2026-08-19)checked 7 Sep 2026
Written inTypeScript
NeedsDocker, and SMTP with SPF, DKIM and DMARC configured
RunsSelf-hosted on your own server
Good
  • AGPL-3.0, so it can be hosted and modified freely
  • Keeps a record of who opened and signed a document, and when
  • Webhooks, so a signature can automatically update a record elsewhere
Watch for
  • Signature law varies by country, and the project cannot settle that question
  • Needs a properly configured outgoing email service, or the links never arrive
  • Rarely used at small scale, so it can sit installed and forgotten
Replaces

DocuSign, PandaDoc, and per-signature pricing

Works well with

The same SMTP setup as Listmonk and your transactional email — one configuration pays off three times

Install
git clone https://github.com/documenso/documenso.git && cd documenso
cp .env.example .env   # fill NEXTAUTH_SECRET, NEXT_PRIVATE_ENCRYPTION_KEY and the mail settings
docker compose --file docker/production/compose.yml up -d
Screenshots
documenso/documenso: GitHub preview carddocumenso/documenso: Screenshot 1documenso/documenso: Screenshot 2documenso/documenso: Screenshot 3
Ghost: publishing with a newsletter. Publishes articles, sends them and takes payment.

55.2k stars · MIT · v6.62.0 (2026-09-01) · Track this in Scout · Share this tool

The buy-the-assembled-thing answer for 'publish, email, and take payment for it', from a decade of shipping only that.

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

What it does

Ghost is a website and editor for articles, built around publishing on a schedule. Every post can also be sent as an email to a subscriber list held inside Ghost. Readers sign up free or pay, and the paid tiers run through Stripe. Access to individual posts can be limited to members or to paying members. It has themes, a REST interface for other software, and tools to import an existing site. It runs on Node.js with MySQL behind it, or SQLite for small installations. It does not manage products or orders, it is not a general-purpose content system for arbitrary data, and it does not keep your articles in plain files in a repository.

Why it matters

Who it suits. Writers and small teams who want one article a week out of the door with a newsletter attached, and who do not want to assemble that from four separate tools. The hosted tier at ghost.org is a legitimate answer too, and the licence means moving between hosted and self-hosted is always possible. Skip it if writing already happens in plain text files kept in version control, because Ghost replaces that habit with its own editor.

Verdict. This is the deliberate opposite of the assembled approach that Editions 3 to 5 built up from Astro, Starlight, Listmonk and remark42. That set is more flexible; Ghost is finished. For getting a newsletter running this month, finished wins. Do not run both: they fight over which one is the real website. Releases are frequent, with v6.69.0 on 7 October 2026.

Stars55.2k
LicenceMIT
Latestv6.62.0 (2026-09-01)checked 7 Sep 2026
Written inTypeScript
NeedsNode.js and MySQL, or SQLite for a small install
RunsSelf-hosted on your own server, or Ghost's hosted service
Good
  • Publishing, email and payment work together with no glue code
  • MIT licensed, and a paid hosted option exists as a fallback
  • Released most weeks by a team that has worked on only this for years
Watch for
  • Adds Node.js and MySQL to whatever else is already running
  • The built-in editor replaces a files-in-version-control way of working
  • Contradicts an assembled publishing setup; choosing it means retiring the other one
Replaces

Substack, Beehiiv, and a separate CMS plus newsletter tool

Works well with

Twenty, via a webhook on every new member

Install
sudo npm install -g ghost-cli@latest
mkdir -p /var/www/ghost && sudo chown $USER /var/www/ghost && cd /var/www/ghost
ghost install
Screenshots
TryGhost/Ghost: GitHub preview cardTryGhost/Ghost: Screenshot 1TryGhost/Ghost: Screenshot 2TryGhost/Ghost: Screenshot 3
06

altcha-org/altcha

💎 hidden gem
Altcha: a form check that calls nobody. Blocks form robots without a picture puzzle.

2.7k stars · MIT · v3.2.2 (2026-08-19) · Track this in Scout · Share this tool

The invisible little box in front of every form, and Google is not reading the room.

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

What it does

Altcha gives a website a small widget to put in front of a form. When the visitor submits, their browser solves a short mathematical puzzle, called proof of work, and sends the answer along. The server checks the answer and rejects anything that did not do the work. The project ships both the browser widget and server libraries, so both halves come from one place. The widget is a few tens of kilobytes of JavaScript and sets no cookies, which is why it needs no consent banner. The project states compliance with European data rules, with the WCAG 2.2 AA accessibility standard and with the European Accessibility Act. It does not stop a determined attacker, it does not limit how often one address can submit, and it is not a web application firewall.

Why it matters

Who it suits. Anyone with a public contact form, a newsletter signup or a survey, which means almost every website. The default answer is a puzzle widget run by a large advertising company, and that sends every visitor's details to a third party. For a site whose selling point is privacy, that is an awkward trade. Skip it if the forms already sit behind a sign-in, because there is nothing for robots to reach.

Verdict. About twenty minutes of work and almost no ongoing cost, which makes it one of the easiest wins here. Two things to watch: very old phones feel the computation, and cheap spam becomes expensive rather than impossible, so rate limiting is still a separate job. The latest release is v3.3.0 on 5 October 2026 and the published package agrees. mCaptcha is the heavier alternative when a central service for many sites is wanted.

Stars2.7k
LicenceMIT
Latestv3.2.2 (2026-08-19)checked 7 Sep 2026
Written inTypeScript
NeedsA server endpoint to issue and verify the challenge. No third-party account.
RunsIn the visitor's browser, verified by your own server
Good
  • MIT licensed and small — tens of kilobytes in the browser
  • No outside service, no cookies and therefore no consent banner change
  • Ships the widget and the server-side check together
Watch for
  • The computation costs a visitor about a tenth of a second, which is noticeable on very old phones
  • It makes cheap spam expensive; it does not make spam impossible
  • Rate limiting and abuse handling remain a separate job
Replaces

reCAPTCHA and hCaptcha — and the visitor data they collect

Works well with

Typebot forms, Listmonk signup, and any contact form on the site

Install
pip install altcha
npm install altcha
# In a React page: import { Altcha } from 'altcha' and mount <Altcha challengeurl="/api/altcha" />
Screenshots
altcha-org/altcha: GitHub preview card
07

benvinegar/counterscale

💎 hidden gem
Counterscale: visitor counts for almost nothing. Counts website visits with almost no running cost.

2.1k stars · MIT · v3.4.1 (2025-12-15) · Track this in Scout · Share this tool

A Cloudflare Worker plus one Analytics Engine binding — the cheapest analytics service you can run this year.

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

What it does

Counterscale records a visit when a small script on the page reports it. The data goes into Cloudflare's Analytics Engine, a time-series store that is part of the same platform. A dashboard shows visits, page views, referring sites, top pages, countries, browsers and device types, over a chosen period. Everything deploys as one Cloudflare Worker, which is a small program that runs on Cloudflare's edge network rather than on a server. The free tier covers a small site's traffic, so the running cost is usually nothing. It does not record individual visits for playback, it does not do funnels or experiments, and it cannot run anywhere except Cloudflare.

Why it matters

Who it suits. Anyone already using Cloudflare in front of a website who wants visitor numbers without a monthly bill and without sending the data to an advertising company. It is also a good first analytics tool for a side project, because there is nothing to maintain. Skip it if Cloudflare is not already in the picture, because adding a whole network layer for a visit counter is the wrong order of work.

Verdict. The cheapest honest answer to "how many people came" that exists this year, with two real caveats. It only runs on one company's platform, and that company sets the free tier, so this is a convenience with a dependency attached. Note also that the newest tagged release is v3.4.1 from December 2025, while code landed on 4 October 2026 — the project is active, it just tags rarely. Umami is the answer when the data must live on hardware you control.

Stars2.1k
LicenceMIT
Latestv3.4.1 (2025-12-15)checked 7 Sep 2026
Written inTypeScript
NeedsA Cloudflare account with Analytics Engine enabled, an API token, and Node.js
RunsOn Cloudflare Workers — hosted, not on your own server
Good
  • Genuinely free at small-site traffic on Cloudflare's own free tier
  • Deploys as a single Worker, small enough to read and change
  • Comes with a dashboard, not just a collector
Watch for
  • Runs only on Cloudflare; it cannot be moved to an ordinary server
  • The free tier and the terms are set by one company and can change
  • Effectively one maintainer, so expect slow answers to issues
Replaces

Google Analytics, and the cost of running your own analytics box

Works well with

Nothing on your server — deliberately separate infrastructure, so an outage on one does not take the other

Install
npm create counterscale
cd my-counterscale
npm install
npx wrangler login
npm run deploy
Screenshots
benvinegar/counterscale: GitHub preview card
08

cheshire-cat-ai/core

💎 hidden gem
Cheshire Cat: an assistant service. Answers questions about documents you upload.

3.1k stars · GPL-3.0 · 2.0.23 (2026-07-08) · Track this in Scout · Share this tool

The opposite architecture from the LiteLLM-plus-custom-code path — batteries actually included: FastAPI, RAG, plugin loader, WebSocket chat, all in one image.

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

What it does

The Cheshire Cat runs as a web service and connects to a language model of your choosing. You upload documents and it stores them as embeddings, which are numeric summaries that make text searchable by meaning. When a question arrives, it finds the relevant passages and answers from them — the pattern usually called retrieval-augmented generation. It keeps a conversation history per user, and talks over both a normal web interface and a WebSocket connection for live chat. A plugin system lets you add tools and change its behaviour without editing the core. It ships as a single container image with an admin page included. It is not a hosted product, it does not supply a language model, and the version 2 line is openly labelled unstable alpha in the project's own readme.

Why it matters

Who it suits. Someone who wants a "chat with these documents" box working this afternoon and does not want to assemble one from a model gateway, a structured-output library and a vector store. It fits documentation sites and internal handbooks well. Skip it if the assistant will end up inside software that is sold, because the GPL-3.0 licence makes that awkward, and skip it if production stability matters today.

Verdict. Worth an afternoon as an experiment, not as a foundation. The unstable alpha label on version 2 is the project's own words and should be believed. Three thousand stars is a small community, so a disappearing maintainer is a real risk — and note that it has now crossed above three thousand, so it no longer counts as a hidden gem here. Building the same thing from LiteLLM, Instructor and pgvector is more work and the right call inside a real product.

Stars3.1k
LicenceGPL-3.0
Latest2.0.23 (2026-07-08)checked 7 Sep 2026
Written inPython
NeedsDocker and Python
RunsSelf-hosted on your own server
Good
  • Document search, plugins and live chat all included in one container image
  • GPL-3.0, so it can be hosted and modified freely
  • An admin page exists, so there is something usable within minutes
Watch for
  • The project labels its version 2 line an unstable alpha
  • GPL-3.0 is a poor fit for embedding inside software that is sold
  • A small community, so problems may have to be solved alone
Replaces

A paid 'chat with your docs' widget

Works well with

Docling for the markdown it reads, and a docs site to embed the widget in

Install
docker run --rm -it -p 1865:80 ghcr.io/cheshire-cat-ai/core:latest
# The admin page is then at http://localhost:1865/admin
Screenshots
cheshire-cat-ai/core: GitHub preview card
Marker: documents into clean text. Converts documents into clean, structured text.

39.6k stars · Apache-2.0 · v2.0.0 (2026-07-20) · Track this in Scout · Share this tool

The recognised open state-of-the-art PDF-to-Markdown converter — Docling's head-to-head, on a corpus of your users' actual uploads.

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

What it does

Marker reads a PDF and works out its layout: which blocks are headings, paragraphs, lists, tables, figures and captions. It then writes the content out as Markdown, as HTML or as structured JSON that keeps the block positions. Scanned pages go through text recognition first, and mathematics is converted to LaTeX. Tables are reconstructed as tables rather than flattened into lines. It works as a command, as a Python library and as a hosted service run by the same team, and the models it uses are about a gigabyte on disk. It handles other office formats as well as PDF. It does not edit or create PDFs, it does not fill in forms, and it makes no promise of perfect output on a badly scanned page.

Why it matters

Who it suits. Anyone who has a pile of PDFs and needs the words out of them — research papers, contracts, reports, scanned archives. It is also the right tool when documents uploaded by other people must be turned into searchable text inside a product, because the Apache-2.0 licence puts no conditions on that. Skip it if the PDFs are already text-based and simple, because a much lighter extractor will do.

Verdict. Worth half an hour to test and then a decision. Docling (Ed.3 #9) is the other serious option, and neither wins outright: Marker tends to do better on equations and tables, Docling accepts more input formats. Run both over ten real documents and keep the winner, then run only that one. The memory footprint is the practical limit — a gigabyte of models on a small machine is noticeable, and a graphics card helps although version 2 improved plain-processor speed.

Stars39.6k
LicenceApache-2.0
Latestv2.0.0 (2026-07-20)checked 7 Sep 2026
Written inPython
NeedsPython 3.10+, PyTorch, and about 1 GB of model weights. A GPU is recommended.
RunsLocally, offline once the models are downloaded
Good
  • Keeps tables as tables and converts mathematics to LaTeX
  • Apache-2.0, so it is safe inside software that is sold
  • Works as a command, as a library and as a hosted service
Watch for
  • About a gigabyte of model files, and a real memory footprint on a small machine
  • Noticeably faster with a graphics card than without one
  • Overlaps Docling; running both in production wastes resources
Replaces

Paid PDF-extraction APIs

Works well with

A chunker downstream, and a background job queue to run it out of the request path

Install
pip install marker-pdf
marker_single input.pdf --output_dir ./out
Screenshots
datalab-to/marker: GitHub preview carddatalab-to/marker: Screenshot 1datalab-to/marker: Screenshot 2datalab-to/marker: Screenshot 3datalab-to/marker: Screenshot 4
ParadeDB: search inside PostgreSQL. Adds keyword search to PostgreSQL as plain queries.

9.2k stars · AGPL-3.0 · v0.25.6 (2026-08-27) · Track this in Scout · Share this tool

BM25 and full-text search that live inside Postgres, not in a separate Elasticsearch cluster that also needs backups.

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

What it does

ParadeDB installs into PostgreSQL as an extension called pg_search. It builds a search index over chosen columns and ranks results using BM25, the scoring method search engines use for keyword relevance. Queries are written as ordinary SQL, so no second query language is involved. It supports phrase matching, fuzzy matching, faceted counts and filtering alongside the normal columns of the same table. Because everything stays in PostgreSQL, the existing backup and replication setup covers it. The project also ships a Docker image of PostgreSQL with the extension already installed. It is not a standalone search server, it does not index files on disk, and it cannot be used with a database other than PostgreSQL.

Why it matters

Who it suits. Teams already running PostgreSQL who have meaning-based search through pgvector (Ed.2 #11) but nothing serious for exact words. Meaning-based search can miss the precise term somebody typed; BM25 catches it, and having both in one query planner is the real gain. It also suits anyone avoiding a separate search cluster to feed and back up. Skip it if there is no PostgreSQL in the picture, or if superuser access to install an extension is not available.

Verdict. Worth an afternoon, and the main thing it buys is one fewer server. Two risks to weigh: extensions can break across PostgreSQL major-version upgrades, and the maintainer team is small. The AGPL-3.0 licence is fine for software you host yourself, and awkward for anything shipped to a customer's own machine. Releases are frequent, with v0.26.1 on 8 October 2026.

Stars9.2k
LicenceAGPL-3.0
Latestv0.25.6 (2026-08-27)checked 7 Sep 2026
Written inRust
NeedsPostgreSQL, with enough access to run CREATE EXTENSION
RunsInside your existing PostgreSQL — no separate service
Good
  • No new server; the existing PostgreSQL backups already cover it
  • Keyword and meaning-based search answerable from one SQL query
  • Ships a ready-made Docker image for testing in minutes
Watch for
  • Needs permission to install a PostgreSQL extension, which not every host allows
  • Extensions can break on a PostgreSQL major-version upgrade
  • AGPL-3.0 rules out shipping it inside closed software
Replaces

Elasticsearch, and the second datastore it drags in

Works well with

pgvector — keyword search and semantic search over the same columns, in one query

Install
docker run --name paradedb -e POSTGRES_PASSWORD=paradedb \
  -p 5433:5432 -d paradedb/paradedb:latest
# Then, connected with psql: CREATE EXTENSION pg_search;
Screenshots
paradedb/paradedb: GitHub preview card
Firecrawl: read a whole website. Turns websites into clean, structured text.

177.7k stars · AGPL-3.0 · v2.11.289 (2026-09-02) · Track this in Scout · Share this tool

trafilatura on a single URL is 20ms and free. Firecrawl on a whole domain, JS-rendered, in structured JSON, is where the real research goes.

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

What it does

Firecrawl fetches a page, runs the page's scripts in a real browser when needed, and returns clean Markdown with the navigation and adverts stripped out. A crawl mode follows links across a whole site and returns every page in one job. A map mode lists the addresses on a site without fetching them all. An extract mode takes a description of the fields you want and returns them as structured data, which is how a pricing table becomes rows and columns. It handles queues, retries and rate limits itself, and offers client libraries in several languages. Self-hosting needs a headless browser, a job queue and storage. It does not store or search the results afterwards, it is not a scheduler, and it does not decide whether a site's terms allow crawling.

Why it matters

Who it suits. Anyone doing research across many sites — competitor documentation, pricing pages, directories — where a single-page extractor is not enough. It also suits teams feeding documents into an assistant, since clean Markdown is exactly what that needs. Skip it for one page at a time: trafilatura (Ed.6) does that in milliseconds with no infrastructure at all.

Verdict. Use the hosted service first and self-host later, if at all. Self-hosting is genuinely heavy, on the same order as OpenReplay above, and the hosted tier is not cheap, so set a spending cap on the first day. The AGPL-3.0 licence applies to the service itself while the client libraries are MIT, so hosting it is fine and shipping it inside closed software is not. The repository moved from mendableai/firecrawl to its own organisation, and the old address still redirects.

Stars177.7k
LicenceAGPL-3.0
Latestv2.11.289 (2026-09-02)checked 7 Sep 2026
Written inTypeScript
NeedsA headless browser, a queue and storage — a heavy self-host
RunsSelf-hosted on your own server, or their hosted API
Good
  • Crawls a whole site and returns structured data, not just one page
  • Both a hosted service and a self-hosted version, choosable per job
  • Very actively developed, with code landing on 9 October 2026
Watch for
  • Self-hosting means a headless browser, a queue and storage to run
  • The hosted service costs real money at volume; set a cap immediately
  • AGPL-3.0 on the service rules out shipping it inside closed software
Replaces

Paid scraping APIs, and hand-rolled extraction on JavaScript-heavy sites

Works well with

A SQLite research file as the landing place, and Datasette to browse what it collects

Install
pip install firecrawl-py
export FIRECRAWL_API_KEY="fc-xxx"
# To self-host instead: git clone https://github.com/firecrawl/firecrawl && docker compose up
Screenshots
firecrawl/firecrawl: GitHub preview cardfirecrawl/firecrawl: Screenshot 1
Datasette: browse a database file. Opens a SQLite file as a browsable website.

11.4k stars · Apache-2.0 · 1.0a38 (2026-08-06) · Track this in Scout · Share this tool

sqlite-utils fills the database. Datasette lets you (or, if you point it at the world, anyone) browse and query it.

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

What it does

Datasette points at one or more SQLite files and serves them over the web. It lists the tables, shows the rows, and lets you sort, filter and page through them in the browser. Arbitrary read-only SQL queries can be run from a box on the page. Every table view and every query is a web address, and adding .json to that address returns the same result as data for other programs. Plugins add charts, maps, authentication and full-text search. It is read-only by design, so nothing in the browser can change the data. It does not create or edit rows, it is not a dashboard builder, and it has no access control until a plugin or a proxy adds one.

Why it matters

Who it suits. Anyone who has collected data into a SQLite file and now wants to look at it without writing a program each time — research notes, scraped pages, exports, logs. It is also a quick way to publish a dataset, since a read-only server is a safe thing to expose. Skip it if the data lives in PostgreSQL or MySQL, because Datasette reads SQLite only.

Verdict. Twenty minutes of work for a surprising amount of use, and the natural second half of sqlite-utils (Ed.8 #5) from the same author: one writes the file, the other reads it. The important caution is exposure. There is no authentication out of the box, so anything put on a public address needs a plugin or a proxy in front of it. For charts rather than rows, Evidence (Ed.8 #6) is the better fit. The latest stable release is 0.65.5 from 16 September 2026, with code landing on 12 October 2026.

Stars11.4k
LicenceApache-2.0
Latest1.0a38 (2026-08-06)checked 7 Sep 2026
Written inPython
NeedsPython and pip. Nothing else.
RunsLocally, or behind a proxy on your own server
Good
  • Reads an existing SQLite file directly, with no import step and no schema work
  • Every view is a shareable address, and the same address returns machine-readable data
  • A large plugin set covers charts, maps, search and authentication
Watch for
  • SQLite only; PostgreSQL and MySQL are out of scope
  • No authentication by default, so a public deployment needs one added
  • Read-only, so writing still happens through another tool
Replaces

Nothing paid — it is the missing web UI over data you already have

Works well with

sqlite-utils, which writes the file Datasette reads, and anything that fills it

Install
pip install datasette
datasette research.db --host 0.0.0.0 --port 8001
Screenshots
simonw/datasette: GitHub preview cardsimonw/datasette: Screenshot 1

Checked, and left out

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

rilldata/rill

rilldata/rill (2.7k, Apache-2.0) — sidebar shows v0.87.2 (June 2026); releasealert.dev reports v0.88.4 (July 2025). The disagreement itself is disqualifying for something in the request path. Backlogged.

plausible/community-edition

plausible/community-edition (2.8k, MIT) — the self-host distribution for Plausible Analytics. Dropped because the repo has no releases at all, only a rolling docker-compose.yml. Backlogged.

glasskube/glasskube

glasskube/glasskube (3.5k, Apache-2.0) — last release January 2025, past the 18-month dormancy line. Backlogged.

Zulko/moviepy

Zulko/moviepy — re-verified for a possible ScalpingMate visualisation angle; still fifteen months since a PyPI upload. Left in backlog.

outerbase/studio

outerbase/studio (5.8k, AGPL-3.0) — nice Postgres/SQLite GUI, but v0.10.2 was March 2025. Backlogged as an alternative to Datasette if it revives.

BoundaryML/baml

BoundaryML/baml (8.9k, Apache-2.0) — 'programming language for agents', but recent releases were only nightly wrapper bumps. Instructor (Ed.5 #11) already solves the structured-output problem. Backlogged.

hoarder-app/hoarder

hoarder-app/hoarder — REDIRECT: now karakeep-app/karakeep (28.8k, AGPL-3.0). Alive and well, but not a marketing tool. Dropped for slate fit; backlog worth if he ever wants a self-hosted bookmark research vault.

Share this edition
← PreviousNo. 8Next →No. 10

Get the next edition in your inbox

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

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

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