v0.0.26

Paste a URL.
Get a summary.

Briefen is a local-first article summarizer. Paste a URL, Jsoup fetches the article, and a local or cloud LLM summarizes it — cached in SQLite. No cloud dependencies by default. Everything runs on your server.

Free and open source — MIT license — no account required

Briefen — paste a URL and get an AI-powered summary

Everything you need to stay on top of what you read

🔗

URL & text summarization

Paste any URL or raw text. Jsoup extracts the article, PDFBox handles PDFs — then your chosen LLM summarizes it instantly.

🤖

Local LLM first

Powered by Ollama out of the box — runs Gemma, Llama, and others entirely on your machine. No API key, no data leaving your server.

⛅

Cloud LLMs optional

Plug in OpenAI or Anthropic with an API key when you want faster or higher-quality results. Switch models per summary.

📚

Reading list

Every summary is saved. Filter by read/unread, search, add notes and tags, and export the full list to Markdown.

📱

Mobile app

Flutter app for Android and iOS. Share URLs directly from any browser, summarize in the background, and get a push notification when it's ready.

🦗

Browser extensions

One-click summarize from Firefox or Chrome/Edge/Brave (both Manifest V3). Sends the current tab's URL to your Briefen instance — with password or access-token auth for SSO setups.

🔒

Always authenticated

Password login on every route, plus opaque bearer-token sessions. First-run browser setup creates the admin account. Multi-user with admin-managed accounts and personal access tokens.

🔑

Single sign-on (SSO)

Optional OpenID Connect login with any provider — Keycloak, Authentik, Auth0, Okta, Google, Entra ID. Authorization-code + PKCE, just-in-time provisioning, and admin-group mapping. Coexists with password login.

🔨

Zero-dependency setup

Single Docker image with embedded frontend. SQLite by default — no external services required. PostgreSQL available for larger deployments.

📋

Readeck integration

Browse and summarize your Readeck bookmarks directly from the app. Configure once, access your full bookmark library.

Up and running in under a minute

Requires Docker with Compose v2 (docker compose).

curl -o docker-compose.yml https://raw.githubusercontent.com/lucaslra/briefen/main/docker-compose.sample.yml
docker compose up -d

Open http://localhost:8080 — on first access you'll be prompted to create the admin account.

Or pull the pre-built image:
docker pull ghcr.io/lucaslra/briefen:latest

Built on proven, boring technology

Java 25 + Spring Boot 4 Jsoup · PDFBox · Basic + OIDC SSO
React 19 + Vite Plain CSS · hooks pattern · no UI framework
SQLite / PostgreSQL File-based by default · Hibernate ddl-auto
Ollama / OpenAI / Anthropic Local-first · cloud optional · model picker
Flutter 3 Android & iOS · Riverpod · go_router
Docker Multi-stage build · multi-arch · embedded frontend