MCPcopy Index your code
hub / github.com/0x2E/fusion

github.com/0x2E/fusion @v1.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.1 ↗ · + Follow
661 symbols 2,125 edges 151 files 42 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Fusion

A lightweight RSS reader.

Article list view  Article detail view

Features

  • Fast reading workflow: unread tracking, bookmarks, search, and Google Reader-style keyboard shortcuts
  • Feed management: RSS/Atom parsing, feed auto-discovery, and group organization
  • Fever API compatibility for third-party clients (Reeder, Unread, FeedMe, etc.)
  • Responsive web UI with PWA support
  • Self-hosting friendly: single binary or Docker deployment
  • Built-in i18n: English, Chinese, German, French, Spanish, Russian, Portuguese, Swedish
  • No AI features by design: focused, distraction-free RSS reading

Installation

Option 1 (Recommended): Run pre-built binary from Releases

Download the binary for your platform from Releases, then run:

chmod +x fusion
FUSION_PASSWORD="fusion" ./fusion

Windows (PowerShell):

$env:FUSION_PASSWORD="fusion"
.\fusion.exe

Open http://localhost:8080.

Option 2: Run with Docker

latest is the latest release image.

main is the latest development build.

docker run -it -d -p 8080:8080 \
  -v $(pwd)/fusion:/data \
  -e FUSION_PASSWORD="fusion" \
  ghcr.io/0x2e/fusion:latest

Open http://localhost:8080.

Docker Compose example:

version: "3"
services:
  fusion:
    image: ghcr.io/0x2e/fusion:latest
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      - FUSION_PASSWORD=fusion
    restart: unless-stopped
    volumes:
      - ./data:/data

Option 3: Build from source

See Contributing.

Option 4: One-click deployment

Configuration

Most users only need one setting to get started:

  • Set FUSION_PASSWORD.

Then configure based on your goal:

  • Run locally or on a home server
  • Optional: FUSION_PORT, FUSION_DB_PATH
  • Expose Fusion behind a reverse proxy
  • Configure: FUSION_CORS_ALLOWED_ORIGINS, FUSION_TRUSTED_PROXIES
  • Use mobile/desktop Fever clients (Reeder, Unread, FeedMe)
  • Configure: FUSION_FEVER_USERNAME (default: fusion)
  • Guide: docs/fever-api.md
  • Use SSO instead of password-only login
  • Configure: FUSION_OIDC_*
  • Set FUSION_OIDC_REDIRECT_URI to https://<host>/api/oidc/callback
  • https://<host>/oidc/callback is accepted for compatibility
  • Tune feed pull behavior
  • Configure: FUSION_PULL_INTERVAL, FUSION_PULL_TIMEOUT, FUSION_PULL_CONCURRENCY, FUSION_PULL_MAX_BACKOFF
  • Optional for private networks: FUSION_ALLOW_PRIVATE_FEEDS
  • Troubleshoot deployments
  • Configure: FUSION_LOG_LEVEL, FUSION_LOG_FORMAT

For the complete variable reference, see .env.example.

Legacy env names (DB, PASSWORD, PORT) are still accepted for backward compatibility.

Documentation

Development

  • Requirements: Go 1.25+, Node.js 24+, pnpm
  • Helpful commands are in scripts.sh
  • Frontend i18n key check: cd frontend && npm run check:i18n

Example:

./scripts.sh build

Contributing

Contributions are welcome. Please read Contributing Guidelines before opening a PR.

Credits

  • Feed parsing powered by gofeed

Extension points exported contracts — how you extend this code

BeforeInstallPromptEvent (Interface)
(no doc)
frontend/src/globals.d.ts
WindowEventMap (Interface)
(no doc)
frontend/src/globals.d.ts
Register (Interface)
(no doc)
frontend/src/main.tsx
ShortcutItem (Interface)
(no doc)
frontend/src/components/layout/shortcuts-dialog.tsx
ShortcutSection (Interface)
(no doc)
frontend/src/components/layout/shortcuts-dialog.tsx

Core symbols most depended-on inside this repo

cn
called by 81
frontend/src/lib/utils.ts
Close
called by 49
backend/internal/store/store.go
badRequestError
called by 44
backend/internal/handler/errors.go
internalError
called by 38
backend/internal/handler/errors.go
GetFeed
called by 23
backend/internal/store/feed.go
GetItem
called by 22
backend/internal/store/item.go
useI18n
called by 19
frontend/src/lib/i18n.ts
dataResponse
called by 15
backend/internal/handler/handler.go

Shape

Function 452
Method 113
Struct 49
Interface 45
Class 2

Languages

Go55%
TypeScript45%

Modules by API surface

frontend/src/lib/api/types.ts26 symbols
backend/internal/handler/fever.go25 symbols
backend/internal/store/item.go23 symbols
backend/internal/handler/feed.go20 symbols
backend/internal/handler/fever_test.go17 symbols
backend/internal/store/feed.go16 symbols
frontend/src/components/ui/dropdown-menu.tsx15 symbols
backend/internal/store/feed_test.go14 symbols
backend/internal/handler/session.go14 symbols
backend/internal/store/item_test.go12 symbols
frontend/src/hooks/use-keyboard.ts11 symbols
frontend/src/components/ui/sheet.tsx10 symbols

For agents

$ claude mcp add fusion \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page