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