Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

140 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NoteWorks - Open NotebookLM Alternative

AI Knowledge Workspace with Multi-Model Support, Deep Search & Chinese-First Experience

Stars License Issues Pull Requests Python Vue

🌐 Live Demo Β· πŸ“– Documentation Β· πŸ› Report Bug Β· πŸ’¬ Community Β· πŸ‡¨πŸ‡³ δΈ­ζ–‡ζ–‡ζ‘£


✨ What is NoteWorks?

NoteWorks is an open-source AI research workspace β€” a self-hosted alternative to Google's NotebookLM. It lets you upload documents, chat with them using AI, and generate study materials, reports, and presentations β€” all while supporting any LLM and keeping your data private.

"NotebookLM is powerful but locked to Gemini. NoteWorks gives you the same experience with your choice of models."

πŸ†š Why NoteWorks over NotebookLM?

Feature Google NotebookLM NoteWorks (Open Source)
Models Gemini only βœ… OpenAI, Claude, Qwen, Gemini, local models
Self-hosting ❌ Cloud only βœ… Full Docker deployment
Data privacy Google servers βœ… Your own infrastructure
Chinese support Limited βœ… Deeply optimized for Chinese
Document formats PDF, TXT βœ… PDF, DOCX, PPTX, CSV, MD, images, audio, video
Deep Search βœ… βœ… Compatible with Deep Searcher
Studio outputs Limited βœ… Mind maps, slides, infographics, reports
Multi-user ❌ βœ… JWT auth + OAuth (Google, Weibo, QQ, Alipay)
Cost Free βœ… Free & open source (MIT)
Payments N/A βœ… Alipay & WeChat Pay integration

🎯 Quick Preview

NoteWorks Demo
↑ Upload documents, chat with AI, generate artifacts β€” all in one workspace

πŸš€ Quick Start

Option 1: Try Online (No Setup)

Visit http://www.notebooklm.studio for a live demo.

Option 2: One-Click Docker Deploy (Recommended)

# Clone the repo
git clone https://github.com/www6v/notebookLM.git
cd notebookLM

# Configure
cp config.yaml.example config.yaml
cp .env.example .env
# Edit .env with your API keys (QWEN_API_KEY, OPENAI_API_KEY, etc.)

# Start everything
make up-middleware   # Redis, Milvus, MinIO
make up-ha           # Backend + Frontend + Celery + Nginx

Access at: http://localhost

Service URL
App http://localhost
API Docs http://localhost:8000/docs
Health Check http://localhost:8000/api/health/live

Option 3: Local Development

git clone https://github.com/www6v/notebookLM.git && cd notebookLM
make install          # Install dependencies (uv + npm)
make up-middleware    # Start Redis, Milvus, etc.
make dev              # Backend
make dev-celery       # Celery worker
make dev-frontend     # Vue dev server

See Local Development for full setup instructions.

πŸ”₯ Key Features

πŸ“š Notebook-Centric Workspace

Organize research around notebooks β€” collect sources, chat with AI, take notes, and generate artifacts in one place.

πŸ“„ Multi-Format Document Ingestion

Upload or link sources in any format:

Type Formats Processing
Documents PDF, DOCX, DOC, TXT, MD, CSV, PPTX Text extraction + optional MinerU for high-quality PDF→Markdown
Images PNG, JPG, WebP, etc. Vision model summarization
Audio MP3, WAV, M4A, etc. Qwen ASR transcription (with long-audio fallback)
Video MP4, YouTube, Bilibili URLs Qwen VL video summarization
URLs Any web page Crawling + content extraction

πŸ€– Multi-Model Support

Powered by LiteLLM router β€” connect any LLM:

  • OpenAI: GPT-4, GPT-4o, o1, o3
  • Anthropic: Claude 3.5/4, Sonnet, Opus
  • Alibaba: Qwen-Max, Qwen-Plus, Qwen-Turbo
  • Google: Gemini Pro, Gemini Flash
  • Local: Any OpenAI-compatible endpoint (Ollama, vLLM, etc.)

πŸ” Grounded Chat with Citations

AI answers are grounded in your documents with source citations β€” no hallucination, just facts from your knowledge base. Powered by Deep Searcher.

🎨 Studio β€” Generate Artifacts

Transform your research into polished outputs:

  • 🧠 Mind Maps β€” Visual knowledge structures
  • πŸ“Š Slide Decks β€” Auto-generated presentations
  • πŸ“° Infographics β€” Data visualization
  • πŸ“ Reports β€” Structured research summaries
  • πŸ”¬ Deep Research β€” Multi-step research briefs (via DeerFlow)

πŸ”’ Private & Secure

  • Self-hosted β€” your data never leaves your infrastructure
  • JWT authentication + OAuth login (Google, Weibo, QQ, Alipay)
  • Object storage with Alibaba Cloud OSS

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Frontend (Vue 3)                       β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚   β”‚ Notebook β”‚  β”‚  Source  β”‚  β”‚   Chat   β”‚  β”‚   Studio  β”‚  β”‚
β”‚   β”‚  Workspaceβ”‚  β”‚ Ingestionβ”‚  β”‚  w/ Cit. β”‚  β”‚ Generator β”‚  β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚              β”‚             β”‚              β”‚
         β–Ό              β–Ό             β–Ό              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Backend (FastAPI)                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Notebook  β”‚  β”‚  Source   β”‚  β”‚   AI (LiteLLM Router)  β”‚ β”‚
β”‚  β”‚  Manager   β”‚  β”‚  Parser   β”‚  β”‚   Qwen / OpenAI / etc  β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚        β”‚               β”‚                     β”‚              β”‚
β”‚        β–Ό               β–Ό                     β–Ό              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚  MySQL    β”‚  β”‚  Deep Searcherβ”‚  β”‚  Celery + Redis   β”‚     β”‚
β”‚  β”‚  (meta)   β”‚  β”‚  (RAG/Retrieval)β”‚  β”‚  (async tasks)   β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                     β”‚
         β–Ό                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Alibaba OSS    β”‚   β”‚   Milvus /      β”‚
β”‚  (file storage) β”‚   β”‚   Vector DB     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Layer Technologies
Frontend Vue 3, Vite, TypeScript, Vuetify, Pinia, Vue Router, Vue I18n, Axios
Backend FastAPI, SQLAlchemy (async), Pydantic Settings, Alembic
Database MySQL via aiomysql
Retrieval Deep Searcher (HTTP); DashScope embeddings; Milvus (optional)
Queue Celery + Redis + SSE streaming
AI LiteLLM router, DashScope (Qwen), OpenAI, Gemini
Storage Alibaba Cloud OSS
Infra Docker, Docker Compose, Nginx

πŸ“ Repository Structure

notebookLM/
β”œβ”€β”€ config.yaml.example          # Config template (copy to config.yaml)
β”œβ”€β”€ .env.example                 # Secrets template (copy to .env)
β”œβ”€β”€ frontend/                    # Vue 3 + Vite application
β”œβ”€β”€ src-tauri/                   # Optional Tauri desktop shell
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app/api/                 # FastAPI routes
β”‚   β”œβ”€β”€ app/ai/                  # LLM, vision, ASR integrations
β”‚   β”œβ”€β”€ app/models/              # SQLAlchemy models
β”‚   β”œβ”€β”€ app/services/            # Business logic
β”‚   β”œβ”€β”€ app/tasks/               # Celery tasks
β”‚   β”œβ”€β”€ alembic/                 # DB migrations
β”‚   └── docs/                    # Backend feature docs
β”œβ”€β”€ deploy/                      # Docker Compose files
β”‚   β”œβ”€β”€ core/                    # Core services
β”‚   β”œβ”€β”€ middleware/              # Redis, Milvus, MinIO
β”‚   └── ha/                      # High-availability app compose
β”œβ”€β”€ nginx/                       # Reverse proxy configs
β”œβ”€β”€ makefile                     # make install / dev / up-middleware / up-ha
└── README.md

βš™οΈ Configuration

Required Settings

Edit .env with your credentials:

# Essential
SECRET_KEY=your-secret-key
DATABASE_URL=mysql+aiomysql://user:pass@host:3306/dbname
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/1

# AI Models (at least one)
QWEN_API_KEY=your-qwen-key
# OPENAI_API_KEY=your-openai-key
# GEMINI_API_KEY=your-gemini-key

# Required for chat & source indexing
DEEP_SEARCHER_BASE_URL=http://localhost:8001

# Object Storage
OSS_ACCESS_KEY_ID=your-oss-key
OSS_ACCESS_KEY_SECRET=your-oss-secret

Optional Integrations

Integration Purpose Config
MinerU High-quality PDF→Markdown parsing MINERU_BASE_URL, MINERU_API_KEY
Langfuse LLM tracing & observability LANGFUSE_*
DeerFlow Deep Research agent deer_flow_base_url in config.yaml
OAuth Google, Weibo, QQ, Alipay login GOOGLE_OAUTH_*, WEIBO_OAUTH_*, etc.
Payments Alipay & WeChat Pay ALIPAY_*, WeChat Pay fields
yt-dlp Video/audio from URLs YTDLP_COOKIES_FILE for Bilibili

πŸ“Š Product Limits

Role Notebooks Sources/notebook Daily Chats
free 20 30 50
paid 200 50 200
admin 200 50 ∞

πŸ§‘β€πŸ’» Local Development

1. Start Middleware

docker compose -f deploy/middleware/docker-compose-middleware.yml up -d redis milvus

2. Install Dependencies

make install
# This runs `uv sync` in backend/ and `npm install` in frontend/

3. Run Services

# Terminal 1: Backend
make dev

# Terminal 2: Celery Worker
make dev-celery

# Terminal 3: Frontend
make dev-frontend

Or run manually:

cd backend && source .venv/bin/activate
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
cd backend && source .venv/bin/activate
celery -A app.tasks.celery_app:celery_app worker --loglevel=info
cd frontend && npm run dev

4. Desktop App (Optional)

npm run desktop:dev

πŸ’¬ Community

Join us to get help, share ideas, and contribute:

🀝 Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Check out issues labeled good first issue for beginner-friendly tasks.

πŸ“œ License

This project is licensed under the MIT License.


Made with ❀️ by @www6v · Star this repo to support development ⭐

Releases

Packages

Contributors

Languages