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.
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
- 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.
- Twenty (#1) — five leads a month become five open threads with a next action attached, instead of five names nobody can place by Friday.
- 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.
Every link in one place
| # | Repo | Website | Stars | Licence |
|---|---|---|---|---|
| 1 | twentyhq/twenty | twenty.com | 58.3k | AGPL-3.0, some files commercial |
| 2 | chatwoot/chatwoot | chatwoot.com | 37.7k | MIT |
| 3 | openreplay/openreplay | openreplay.com | 12.8k | Several — read LICENSE |
| 4 | documenso/documenso | documenso.com | 15.1k | AGPL-3.0 |
| 5 | TryGhost/Ghost | ghost.org | 54.8k | MIT |
| 6 | altcha-org/altcha 💎 | altcha.org | 2.7k | MIT |
| 7 | benvinegar/counterscale 💎 | counterscale.dev | 2.2k | MIT |
| 8 | cheshire-cat-ai/core | cheshirecat.ai | 3.1k | GPL-3.0 |
| 9 | datalab-to/marker | datalab.to | 39.9k | Apache-2.0 |
| 10 | paradedb/paradedb | paradedb.com | 9.2k | AGPL-3.0 |
| 11 | firecrawl/firecrawl | firecrawl.dev | 189.8k | AGPL-3.0, client libraries MIT |
| 12 | simonw/datasette | datasette.io | 11.5k | Apache-2.0 |
The people, not the pipes
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.

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.
- 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
- 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
A paid CRM subscription — Hubspot, Pipedrive, Attio
Chatwoot for the conversations, n8n to feed contacts in, Listmonk to push engagement back as tags
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

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.
- 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
- 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
Intercom, Crisp, and any per-seat live-chat subscription
Twenty, via an n8n webhook that turns a conversation into a lead
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.

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.
- 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
- 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
FullStory, Hotjar, LogRocket
Twenty — a recording ID on a contact record pulls up the visit when they email
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.

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.
- 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
- 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
DocuSign, PandaDoc, and per-signature pricing
The same SMTP setup as Listmonk and your transactional email — one configuration pays off three times
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

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.
- 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
- 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
Substack, Beehiiv, and a separate CMS plus newsletter tool
Twenty, via a webhook on every new member
sudo npm install -g ghost-cli@latest mkdir -p /var/www/ghost && sudo chown $USER /var/www/ghost && cd /var/www/ghost ghost install

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.
- 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
- 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
reCAPTCHA and hCaptcha — and the visitor data they collect
Typebot forms, Listmonk signup, and any contact form on the site
pip install altcha
npm install altcha
# In a React page: import { Altcha } from 'altcha' and mount <Altcha challengeurl="/api/altcha" />
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.
- 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
- 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
Google Analytics, and the cost of running your own analytics box
Nothing on your server — deliberately separate infrastructure, so an outage on one does not take the other
npm create counterscale cd my-counterscale npm install npx wrangler login npm run deploy

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.
- 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
- 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
A paid 'chat with your docs' widget
Docling for the markdown it reads, and a docs site to embed the widget in
docker run --rm -it -p 1865:80 ghcr.io/cheshire-cat-ai/core:latest # The admin page is then at http://localhost:1865/admin

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.
- 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
- 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
Paid PDF-extraction APIs
A chunker downstream, and a background job queue to run it out of the request path
pip install marker-pdf marker_single input.pdf --output_dir ./out

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.
- 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
- 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
Elasticsearch, and the second datastore it drags in
pgvector — keyword search and semantic search over the same columns, in one query
docker run --name paradedb -e POSTGRES_PASSWORD=paradedb \ -p 5433:5432 -d paradedb/paradedb:latest # Then, connected with psql: CREATE EXTENSION pg_search;

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.
- 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
- 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
Paid scraping APIs, and hand-rolled extraction on JavaScript-heavy sites
A SQLite research file as the landing place, and Datasette to browse what it collects
pip install firecrawl-py export FIRECRAWL_API_KEY="fc-xxx" # To self-host instead: git clone https://github.com/firecrawl/firecrawl && docker compose up

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.
- 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
- 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
Nothing paid — it is the missing web UI over data you already have
sqlite-utils, which writes the file Datasette reads, and anything that fills it
pip install datasette datasette research.db --host 0.0.0.0 --port 8001
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.
Know a repository we should check?





























