Use Weirling as a ranking sidecar for Miniflux or FreshRSS¶
Keep your existing self-hosted RSS reader as your daily firehose, while Weirling runs alongside it to score, rank, and summarize your top articles into a focused digest.
If you already use Miniflux or FreshRSS, you don't have to abandon your setup or migrate away. With sidecar mode (ADR 0007), Weirling imports your subscriptions and reading history directly via their native APIs. Your primary reader stays your inbox for full chronological browsing, while Weirling builds your personalized daily digest.
flowchart LR
accTitle: Weirling sidecar architecture
accDescr: Miniflux or FreshRSS handles feed subscriptions while Weirling pulls feeds, ranks items by behavioral telemetry, and generates digests.
reader["Miniflux / FreshRSS<br/>(Your primary reader)"]
readprism["Weirling Sidecar<br/>(Ranking & Digest Engine)"]
user["You"]
reader -- "POST /integrations/import-sidecar<br/>(Subscriptions + Read state)" --> readprism
user -- "Triage feeds" --> reader
user -- "Personalized digest & summaries" --> readprism
What the import does¶
Weirling exposes a dedicated integration endpoint:
When you trigger a sidecar import, Weirling:
- Connects to your reader's API using temporary, in-memory credentials.
- Fetches all active feed subscriptions (paginated in batches of 200).
- Creates new
Sourcerecords in Weirling with an initial trust weight of0.45(identical to curated starter packs). - Skips feeds you already have, preserving your accumulated trust history.
- Pulls recent read state (Miniflux): matches recently read entries against already-ingested items in Weirling, creating initial read interactions so your ranking model starts warm rather than cold.
Credentials are used strictly in-memory for the duration of the request. They are never saved to disk, stored in the database, or recorded in server logs.
Step-by-step guide¶
1. Miniflux¶
Miniflux provides a clean REST API authenticated by an API token.
Step A: Generate an API token in Miniflux¶
- Open your Miniflux web interface.
- Navigate to Settings → API Keys.
- Click Create a new API key.
- Label it
Weirlingand click Save. - Copy the generated API token (it will only be displayed once).
Step B: Run the sidecar import¶
You can trigger the import from Weirling's Sources page, or call the API directly:
curl -X POST https://<your-weirling-host>/api/v1/integrations/import-sidecar \
-H "Authorization: Bearer <your-weirling-token>" \
-H "Content-Type: application/json" \
-d '{
"provider": "miniflux",
"base_url": "https://miniflux.example.com",
"token": "YOUR_MINIFLUX_API_TOKEN"
}'
Response:
2. FreshRSS¶
FreshRSS exposes a Google Reader-compatible API (greader.php).
Step A: Enable API access in FreshRSS¶
- Open your FreshRSS web interface.
- Go to Settings (gear icon) → Profile.
- Under the API management section:
- Check the box to enable API access.
- Set an API Password (or app password).
- Click Submit.
Step B: Run the sidecar import¶
curl -X POST https://<your-weirling-host>/api/v1/integrations/import-sidecar \
-H "Authorization: Bearer <your-weirling-token>" \
-H "Content-Type: application/json" \
-d '{
"provider": "freshrss",
"base_url": "https://freshrss.example.com",
"username": "alice",
"app_password": "YOUR_FRESHRSS_API_PASSWORD"
}'
Response:
Private network & homelab setup¶
By default, Weirling enforces strict public HTTPS and SSRF protections on
all outgoing connections. If your Miniflux or FreshRSS instance is hosted on a
local private subnet (e.g. http://192.168.1.50:8080 or http://miniflux.lan):
- Set these environment variables in your Weirling
.env: - When enabled, Weirling permits plain HTTP and private IP addresses
only for the exact host specified in
base_url. This option is disabled and ignored in hosted mode (DEPLOYMENT_MODE=hosted).
What is and isn't synced¶
| Feature | Miniflux | FreshRSS | Details |
|---|---|---|---|
| Feed subscriptions | Yes | Yes | Feed URLs and titles imported as Source records. |
| Existing feeds preserved | Yes | Yes | Deduplicated by URL; existing feed trust is untouched. |
| Warm-up read history | Yes (up to 100) | No | Miniflux read articles mark matching items opened at 90% completion. |
| Two-way sync | No | No | Weirling does not push read state or stars back to your reader. |
| Continuous sync | No | No | Imports are on-demand. Re-run import whenever you add new feeds. |
| Folders / categories | No | No | Feeds are imported into your unified Weirling source library. |
Limits and quotas¶
- Feed pagination: Miniflux feeds are fetched in pages of 200 up to 1,000 feeds.
- Hosted quotas: On a hosted instance, feed limits depend on your plan quota (500 on Reader, 2,000 on Pro and during the trial). Self-host has no feed cap.
- Response size: Payloads from the upstream reader are capped at 2 MB per request to prevent memory pressure.
- Redirects: Outgoing requests disallow HTTP redirects (
max_redirects=0) to prevent authorization headers from leaking across origins.