[project] name = "second-brain" version = "0.1.0" description = "Personal knowledge system: video/article extraction pipeline + LLM-maintained wiki" requires-python = ">=3.12" dependencies = [ "alembic>=1.13.0", "click>=8.1.0", "embedding-chunking", "fastapi>=0.115.0", "httpx>=0.28.0", "jinja2>=3.1.0", "psycopg[binary]>=3.2", "psycopg-pool>=3.2", "pydantic>=2.0.0", "python-dotenv>=1.0.0", "python-multipart>=0.0.20", "sqlalchemy>=2.0.0", "tomli>=2.0.0", "trafilatura>=1.9.0", "uvicorn[standard]>=0.30.0", "yt-dlp>=2024.1.0", ] [project.optional-dependencies] # Only required when extractor.backend = "api" in settings.toml. # The default "cli" backend shells out to the Claude Code CLI under your # Max OAuth subscription and has no Python-side Anthropic dependency. api = ["anthropic>=0.40.0"] # Tower-only: faster-whisper (CTranslate2) + the matched CUDA-12 runtime # pulled in as wheels. Arch/EndeavourOS now ships CUDA 13 (libcublas.so.13) # which ctranslate2 4.7+ cannot load — it wants libcublas.so.12 + cuDNN 9. # Pinning the CUDA-12 runtime via pip wheels in the venv sidesteps the # system CUDA mismatch entirely. sys_platform marker keeps these out of # any non-Linux resolve (the nvidia wheels are Linux-only anyway, but the # marker makes that explicit). Install with `uv sync --extra tower`; do # not install on dev. tower = [ "faster-whisper>=1.0.0", "nvidia-cublas-cu12; sys_platform == 'linux'", "nvidia-cudnn-cu12>=9,<10; sys_platform == 'linux'", ] [dependency-groups] dev = [ "pytest>=8.0", "pytest-cov>=5.0", "ruff>=0.8", ] [tool.uv.sources] # Shared chunker that vault-mcp / ob1-enricher / ob1-reflector also pin. # Same source so the 512/64 chunking stays in lockstep across services. embedding-chunking = { git = "https://gitea.plantbasedsoutherner.com/petal-power/embedding-chunking.git", tag = "v0.1.0" } [project.scripts] second-brain = "second_brain.main:cli" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/second_brain"]