Requirements#

Runtime#

ComponentNotes
A container runtimeDocker or Podman, to run the published image.
PostgreSQLThe application database. Any reasonably recent PostgreSQL (16+) works.
A Brave Search API keyThe minimum for useful results, see Search providers. The free tier is enough to start.
Outbound HTTPSThe server calls upstream providers; if you run behind an allowlist, see the provider hosts.

Everything else, the web server, static-file serving and translation-catalog compilation, is built into the image.

Optional#

ComponentEnables
A LibreTranslate instanceThe Translate tab.
Provider API keys (Mojeek, Marginalia, TMDB, TripAdvisor, Stack Exchange, Pixabay, World News)Extra engines, media providers and knowledge cards.
An SMTP serverPassword-reset email. Without it, users without a password are locked out, see Users & access.

For local development from source#

If you want to build from source or develop, rather than run the published image, you’ll also want:

  • Python 3.13+
  • uv for dependency management
  • Podman with podman-compose (the dev stack ships a compose file with PostgreSQL, a mail catcher and LibreTranslate)
  • Node.js 22+ only if you intend to edit the styles; the compiled CSS and icons are committed, so the app and image need no Node at runtime

The repository’s make setup bootstraps all of this in one step. See Quick start.