Files
archived-MoviePilot/docs/rules/02-tech-stack.md

4.1 KiB

02 — Tech Stack

Runtime and Language

Item Detail
Language Python 3.11+
CI Python version Python 3.12
Async runtime asyncio (native), integrated with FastAPI/Uvicorn

Backend Framework

Item Detail
Web framework FastAPI
ASGI server Uvicorn
Data validation Pydantic v2 (BaseModel, BaseSettings, model_validator)
Settings management pydantic-settings (BaseSettings class in app/core/config.py)

Database

Item Detail
Default database SQLite
Optional database PostgreSQL (configured via DB_TYPE and related env vars)
ORM SQLAlchemy
Migration tool Alembic (database/versions/)
PostgreSQL extras app/modules/postgresql/ module; setup guide at docs/postgresql-setup.md

Caching

Item Detail
File-based cache FileCache / AsyncFileCache in app/core/cache.py
Redis Optional; app/modules/redis/ module; used for distributed caching when configured
In-process cache Decorator helpers fresh / async_fresh on FileCache

LLM and AI Agent

Item Detail
Agent runtime app/agent/ — custom LLM agent orchestration
LLM abstraction LangChain-based with multi-provider support
Supported providers OpenAI-compatible APIs, Anthropic, and other configurable providers
Configuration LLM_PROVIDER, LLM_MODEL, LLM_API_KEY, LLM_BASE_URL in settings
Enable flag AI_AGENT_ENABLE
MCP protocol JSON-RPC 2.0 at /api/v1/mcp; see docs/mcp-api.md

Module Integrations

Download Clients

Module Directory
qBittorrent app/modules/qbittorrent/
Transmission app/modules/transmission/
rTorrent app/modules/rtorrent/

Media Servers

Module Directory
Emby app/modules/emby/
Jellyfin app/modules/jellyfin/
Plex app/modules/plex/
TrimMedia app/modules/trimemedia/
Zspace app/modules/zspace/
Ugreen app/modules/ugreen/

Message Channels

Module Directory
Telegram app/modules/telegram/
WeChat app/modules/wechat/
WeChatClawBot app/modules/wechatclawbot/
Feishu app/modules/feishu/
Slack app/modules/slack/
Discord app/modules/discord/
VoceChat app/modules/vocechat/
Synology Chat app/modules/synologychat/
WebPush app/modules/webpush/
QQBot app/modules/qqbot/

Metadata Sources

Module Directory
TMDB app/modules/themoviedb/
TheTVDB app/modules/thetvdb/
Douban app/modules/douban/
Bangumi app/modules/bangumi/
Fanart app/modules/fanart/

Dependency Management

Item Detail
Source file requirements.in — edit this to add or upgrade dependencies
Lock file requirements.txt — generated by pip-compile; never edit manually
Tool pip-tools (pip-compile, pip-sync)
Install pip install -r requirements.txt

Performance Extension

Item Detail
Rust extension moviepilot_rust — optional compiled accelerator for core processing paths
Build Requires Rust cargo; built automatically by moviepilot install deps
Skip flag MOVIEPILOT_SKIP_RUST_ACCEL=1 disables build (falls back to Python implementation)
Toggle Can be disabled/re-enabled at runtime via frontend Advanced Settings → Lab

Quality Tooling

Tool Purpose Command
pytest Test runner pytest tests/test_xxx.py
pylint Static analysis pylint app/
safety Dependency vulnerability scan safety check -r requirements.txt --policy-file=safety.policy.yml

Deployment

Method Detail
Docker Primary deployment; image bundles backend + frontend static files + resources
Local CLI moviepilot CLI for source-based install; see docs/cli.md
Frontend Vue/TypeScript SPA served from public/; source in MoviePilot-Frontend repo
Frontend proxy Local Node service.js proxies /api and /cookiecloud to the backend

Last Updated: 2026-05-25