A self-hosted personal knowledge platform for collecting, analyzing, and summarizing web content with AI.
Think of it as a self-hosted alternative to Raindrop.io + Readwise, with local AI processing via Ollama.
Inbox Article Detail Weekly Summary Filter & Search
- Collect - Save links, articles, and notes from anywhere via URL or Android Share Sheet
- Summarize - AI-generated summaries using local LLM (Ollama/llama3.2)
- Organize - Automatic topic extraction and categorization
- Weekly Digest - AI-generated weekly summary with key insights across all saved articles
- Rate - 1–5 star rating for items
- Export - Obsidian-compatible Markdown ZIP export
- Knowledge Graph - Automatic relation detection between articles via shared topics
- Privacy - Self-hosted, your data stays on your server, no tracking
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Flutter App │────▶│ FastAPI │────▶│ PostgreSQL │
│ (Android/iOS) │ │ Backend │ │ Database │
└─────────────────┘ └────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Ollama │
│ (llama3.2) │
└─────────────────┘
- VPS with Docker & Docker Compose
- Existing Traefik + Ollama setup (or standalone deployment)
- Android device for the mobile app
# Clone repository
cd /srv
git clone https://github.com/sprobst76/VibedInsight.git vibedinsight
cd vibedinsight/backend
# Configure
cp .env.example .env
nano .env # Set DOMAIN and POSTGRES_PASSWORD
# Deploy
docker compose up -d
# Verify
curl https://insight.lab.YOUR_DOMAIN/healthSee backend/DEPLOY.md for detailed instructions.
Download the latest APK from Releases and install on your Android device.
Or build from source:
cd app
flutter pub get
flutter build apk --release| Variable | Description | Default |
|---|---|---|
DOMAIN |
Your domain (for Traefik) | - |
POSTGRES_PASSWORD |
Database password | - |
OLLAMA_MODEL |
Ollama model to use | llama3.2 |
TZ |
Timezone | Europe/Berlin |
Edit app/lib/config/api_config.dart to set your backend URL:
static const String productionUrl = 'https://insight.lab.YOUR_DOMAIN';| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Health check |
GET |
/items |
List items (filter, search, paginate) |
GET |
/items/{id} |
Get item details |
DELETE |
/items/{id} |
Delete item |
POST |
/items/{id}/rating |
Set 1–5 star rating |
POST |
/ingest/url |
Ingest from URL |
POST |
/ingest/text |
Ingest raw text |
GET |
/topics |
List all topics |
GET |
/weekly |
List weekly summaries |
POST |
/weekly/generate |
Generate weekly AI summary |
GET |
/export/markdown |
Download Markdown ZIP |
GET |
/items/graph/data |
Knowledge graph data |
Full API documentation at /docs (Swagger UI).
- Python 3.12
- FastAPI
- SQLAlchemy 2.0 (async)
- PostgreSQL 16
- Ollama (llama3.2)
- trafilatura (web scraping)
- Flutter 3.x
- Dart 3.x
- Riverpod (state management)
- Dio (HTTP client)
- go_router (navigation)
- Docker & Docker Compose
- Traefik (reverse proxy)
- GitHub Actions (CI/CD)
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Run locally
uvicorn app.main:app --reload --port 8000cd app
flutter pub get
flutter run- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Ollama - Local LLM runtime
- trafilatura - Web content extraction
- FastAPI - Modern Python web framework
- Flutter - Cross-platform UI toolkit



