Clone the repository and run locally. For developers and contributors.
- Python 3.11+ - Download
- Node.js 18+ - Download
- Git - Download
- Docker (for SurrealDB) - Download
- uv (Python package manager) -
curl -LsSf https://astral.sh/uv/install.sh | sh - API key from OpenAI or similar (or use Ollama for free)
git clone https://github.com/lfnovo/open-notebook.git
cd open-notebook
# If you forked it:
git clone https://github.com/YOUR_USERNAME/open-notebook.git
cd open-notebook
git remote add upstream https://github.com/lfnovo/open-notebook.gituv sync
uv pip install python-magicIf you prefer using Conda to manage your environments, follow these steps instead of the standard uv sync:
# Create and activate the environment
conda create -n open-notebook python=3.11 -y
conda activate open-notebook
# Install uv inside conda to maintain compatibility with the Makefile
conda install -c conda-forge uv nodejs -y
# Sync dependencies
uv syncNote: Installing
uvinside your Conda environment ensures that commands likemake start-allandmake apicontinue to work seamlessly.
# Terminal 1
make database
# or: docker compose up surrealdbcp .env.example .env
# Edit .env and set:
# OPEN_NOTEBOOK_ENCRYPTION_KEY=my-secret-keyAfter starting the app, configure AI providers via the Settings → API Keys UI in the browser.
# Terminal 2
make api
# or: uv run --env-file .env uvicorn api.main:app --host 0.0.0.0 --port 5055# Terminal 3
cd frontend && npm install && npm run dev- Frontend: http://localhost:3000
- API Docs: http://localhost:5055/docs
- Database: http://localhost:8000
- Open http://localhost:3000
- Go to Settings → API Keys
- Click Add Credential → Select your provider → Paste API key
- Click Save, then Test Connection
- Click Discover Models → Register Models
# Format and lint Python
make ruff
# or: ruff check . --fix
# Type checking
make lint
# or: uv run python -m mypy .uv run pytest tests/# Start everything
make start-all
# View API docs
open http://localhost:5055/docs
# Check database migrations
# (Auto-run on API startup)
# Clean up
make cleanpython --version # Check version
uv sync --python 3.11 # Use specific versionInstall Node.js from https://nodejs.org/
docker ps # Check SurrealDB running
docker logs surrealdb # View logs# Use different port
uv run uvicorn api.main:app --port 5056- Read Development Guide
- See Architecture Overview
- Check Contributing Guide
- Discord: Community
- Issues: GitHub Issues