Community Apps

HeCAPTe

By Kat Suricata

Stateless, privacy-first, embeddable proof-of-work CAPTCHA.

4.0.1 256MB Updated 13 Aug 2026
hosting
Install this app
In your Cloudron dashboard, open the App Store, choose "Community apps" and paste this URL:
https://mirror.tangled.network/xrpc/sh.tangled.git.temp.getBlob?path=CloudronVersions.json&ref=main&repo=did%3Aplc%3Apomgtubhgnuew7wmpwgk7dzd

Description

HeCAPTe provides a stateless spam-prevention mechanism that respects user privacy. Unlike traditional CAPTCHAs that rely on tracking user behavior or forcing users to complete busywork, HeCAPTe requires the user’s system to solve a computational puzzle (Equihash). This “Proof-of-Work” approach makes it computationally expensive for bots to generate mass requests while remaining quick for legitimate human users on modern devices.

  • Humane: Requires no additional human interaction and presents no impediment to accessibility. Doesn’t try to extract value from the user by having them train image recognition models. Doesn’t infuriate vision-impaired users with audio from the first prototype of the telephone.
  • Embeddable: Requires nothing more than one small Go binary, a few static files (including the .wasm solver), and an SQLite database. Even the cheapest VPS can run it without a hitch.
  • Cost-Asymmetric: Expensive to solve, cheap to verify.
  • Proof-of-work: HeCAPTe uses Equihash, a memory-hard proof-of-work algorithm. Unlike simple SHA256-based puzzles, Equihash’s memory requirements make it significantly more costly to solve at scale.
  • Turing exam: Not quite a Turing test. Any one user submission is not, as per the original CAPTCHA vision, “proof” of humanity—but in a world with advanced OCR, services that have underpaid laborers type in answers for fractions of a penny, and even tiny local AI models that can easily solve most natural language puzzles, that vision is likely dead anyway.

Don’t try to barricade the way for bots and stop humans along the way; just make it more expensive to spam you than they could possibly get back as profit.

Screenshot Screenshot Screenshot

Recent Changes

  • Fixed a false positive in the request filter's header-structure nudges: a wildcard-only Accept: / header (the default of the browser fetch() API and XHR) was treated as the mark of a non-interactive client, silently stepping every real browser whose page set no explicit Accept header up one difficulty preset. The rule now penalizes only a missing or empty Accept header.