Skip to main content

Fast, efficient Plex-Trakt sync using batch API operations

Project description

Pakt

Sync watched status, ratings, and collections between Plex and Trakt.

Installation

pip install pakt

Or with pipx (isolated environment):

pipx install pakt

With system tray support (Windows):

pip install pakt[tray]

Quick Start

pakt setup    # Interactive setup wizard (links Plex via PIN)
pakt sync     # Run sync

Commands

For detailed options and examples, see the CLI Reference.

Setup & Authentication

pakt setup              # Link Plex account via PIN authentication
pakt setup --token      # Manual token entry instead of PIN
pakt login              # Authenticate with Trakt
pakt logout             # Clear Trakt authentication
pakt status             # Show configuration status

Server Management

pakt servers discover   # List available Plex servers from your account
pakt servers list       # Show configured servers
pakt servers add NAME   # Add server from discovered list
pakt servers add NAME --url URL --token TOKEN  # Add server manually
pakt servers remove NAME
pakt servers enable NAME
pakt servers disable NAME
pakt servers test NAME  # Test server connection

Sync

pakt sync                    # Sync all enabled servers
pakt sync --server NAME      # Sync specific server(s) only
pakt sync -s NAME -s NAME2   # Sync multiple specific servers
pakt sync --dry-run          # Preview without making changes
pakt sync --verbose          # Show detailed item list

Libraries

pakt libraries               # Show library selection for default server
pakt libraries --all         # Sync all libraries (clear selection)
pakt libraries -m "Movies"   # Select specific movie library
pakt libraries -s "TV Shows" # Select specific show library

Web Interface

pakt serve                   # Start web UI at localhost:7258
pakt serve --host 0.0.0.0    # Listen on all interfaces
pakt serve --port 9000       # Use custom port
pakt serve --tray            # With system tray icon (Windows)
pakt serve --no-tray         # Without system tray (default)

Maintenance

pakt clear-cache             # Clear Trakt API cache

Web Interface

Start the web UI:

pakt serve

Open http://localhost:7258 in your browser.

Views

Sync - Run manual syncs with real-time progress and console output. Use "Dry Run" to preview changes without applying them. Enable "Verbose" to see individual items being synced.

Stats - Shows connection status for Trakt and all configured Plex servers, library counts, and last sync results.

Settings - Configure sync options, manage servers, and set up scheduling.

Sync Options

Options are organized by direction:

  • Plex → Trakt: Watched, Ratings, Collection, Watchlist
  • Trakt → Plex: Watched, Ratings, Watchlist

Global defaults can be overridden per-server in the Server Settings section.

Scheduled Sync

Enable automatic syncing at a set interval (in hours).

Important: The scheduler only runs while the web server is running. If you stop pakt serve, scheduled syncs will not occur. For persistent scheduling, run the server in the background (see Background Mode below).

Server Settings

Each Plex server has independent configuration:

  • Libraries: Select which movie/show libraries to sync (empty = all)
  • Sync Options: Override global defaults with per-server settings (Global/On/Off)

Background Mode (Windows)

Run without a console window:

pythonw -m pakt serve --tray

For startup configuration and scheduled tasks on Windows, macOS, and Linux, see the Automation Guide.

Docker

docker-compose up -d

Web UI at http://localhost:7258. Config persists in the pakt-config volume.

First-time setup: Run interactively to authenticate:

docker-compose run --rm pakt pakt setup
docker-compose run --rm pakt pakt login

See the Docker Guide for networking, volumes, and advanced configuration.

What Gets Synced

Data Plex → Trakt Trakt → Plex
Watched status
Ratings
Collection -
Watchlist

Collection sync includes media info (resolution, HDR, audio codec).

Multi-Server Support

Pakt supports syncing multiple Plex servers to a single Trakt account:

  1. Run pakt setup to link your Plex account via PIN
  2. Select which servers to enable
  3. Run pakt sync to sync all enabled servers

Each server can have:

  • Independent library selection
  • Per-server sync option overrides

Servers are synced sequentially. Items that exist on multiple servers are deduplicated by external ID.

Configuration

Config location:

  • Windows: %APPDATA%\pakt
  • Linux/macOS: ~/.config/pakt

All configuration is stored in config.json. See the Configuration Reference for all options.

Web Server

Default port is 7258 (PAKT on phone keypad). To change, edit config.json:

{
  "web": {
    "host": "127.0.0.1",
    "port": 9000
  }
}

Or use CLI flags: pakt serve --host 0.0.0.0 --port 9000

Trakt Account Limits

Free Trakt accounts have a 100-item limit on collections and watchlists. Pakt will warn you if you hit these limits. Upgrade to Trakt VIP for unlimited.

Troubleshooting

Having issues? See the Troubleshooting Guide for common problems and solutions.

Changelog

See CHANGELOG.md for release history.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pakt-0.2.2.tar.gz (388.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pakt-0.2.2-py3-none-any.whl (381.8 kB view details)

Uploaded Python 3

File details

Details for the file pakt-0.2.2.tar.gz.

File metadata

  • Download URL: pakt-0.2.2.tar.gz
  • Upload date:
  • Size: 388.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pakt-0.2.2.tar.gz
Algorithm Hash digest
SHA256 fcb1637709e5d910c9668b0df2e0082d4b2f28a6d20241a7cc57c439c0efc31a
MD5 38ec9771eec3de4736f193ec4c7447c0
BLAKE2b-256 0adc60af7cdfb38d99ac44d7841b8d30a9a2fee50b3bbbfb3b494b4a72f31ac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pakt-0.2.2.tar.gz:

Publisher: release.yml on MikeSiLVO/pakt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pakt-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: pakt-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 381.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pakt-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1655ad7e2c8685e65d0fc0196d3119402f51cceeb4266f9d1023138769625c73
MD5 34831485a17d1de73a4ac2875f9e8db5
BLAKE2b-256 b822f8eed5e13337f52f403337065222bc6dcb6887df4a5aadef894a892ae7da

See more details on using hashes here.

Provenance

The following attestation bundles were made for pakt-0.2.2-py3-none-any.whl:

Publisher: release.yml on MikeSiLVO/pakt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page