Skip to main content

CLI wrapper for yt-dlp & FFmpeg with cloud upload optionality

Project description

Alchemux

Magically intuitive CLI for yt-dlp & FFmpeg — download, convert, and optionally upload to S3 or GCP.

Interactive terminal alchemy for YouTube and 1,000+ media sources.

Star on GitHub PyPI version PyPI downloads CI Latest Release Platform Python uv License: AGPL v3 Ko-fi Buy Me a Coffee

Alchemux CLI transmuting media

Alchemux usage example

About

Alchemux is a terminal-first media CLI built on yt-dlp and system FFmpeg. It wraps complex download and conversion workflows in an interactive wizard, batch mode, optional cloud upload, and arcane (or plain) terminal output.

  • Distribution: PyPI — install with uv (uv tool install / uvx)
  • Platforms: macOS, Linux, Windows (shell + Python 3.12+)
  • Config: Per-user TOML via alchemux setup — no manual file editing required
  • Status: Pre-release — bugs and limitations are expected; see docs/known-issues.md

Features

  • 🎵 Download & Convert Media: Extract audio or video from YouTube, Facebook, and other yt-dlp supported sources
  • 🧙‍♂️ Interactive Simplicity: Delightfully easy terminal UI—just run and follow prompts; configure everything in seconds (including cloud storage and presets) interactively
  • 📋 Batch Processing: Process many URLs from a YouTube playlist, TXT/CSV files, or pasted lists of URLs with automatic rate-limit mitigation logic built-in. See commands.md for batch mode details
  • 🏷️ Metadata Embedding: Automatically embeds source URLs and metadata into media files
  • ☁️ Cloud Storage: Upload media to S3 and GCP buckets after interactive setup (commands.md)
  • 🎚️ Multiple Formats: Audio (MP3, AAC, FLAC, Opus, WAV, etc.) and video (MP4, MKV, WebM, etc.)
  • 🤖 AI Agent Support: CLI guidance for agents like OpenClaw, Agent Zero, and Claude Skills — see backend/AGENTS.md
  • 🛠️ config Command: Interactive wizard for formats, cloud credentials, download folder, batch defaults, and more
  • 🩺 doctor Command: Diagnose cloud misconfigurations, missing FFmpeg, permissions, and common failures
  • Arcane Interface: Optional stylized output (disable with arcane_terms = "false" or during setup)
  • 🔄 update Command: Refresh the bundled yt-dlp dependency from the community release channel

Full command reference: docs/commands.md.

Quick Start

Prerequisites

  • Shell: Terminal (macOS/Linux) or PowerShell (Windows)
  • uv: Astral’s uv — one-time install below
  • FFmpeg: Required for conversion — docs/install.md

Install from PyPI (recommended)

Installing with uv avoids macOS Gatekeeper and Windows SmartScreen prompts that often affect downloaded executables.

1) Install uv (one-time)

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Verify: uv --version

2) Try without installing

uvx alchemux --help
uvx amx -h
uvx amx "https://youtu.be/…"
uvx amx --no-config --download-dir . "…"

3) Install as a persistent CLI tool

uv tool install alchemux
alchemux setup
alchemux "https://youtu.be/…"
amx "https://…"

4) Upgrade / uninstall

uv tool upgrade alchemux
uv tool uninstall alchemux

Run from source (development)

For unreleased or experimental features:

git clone https://github.com/bmurrtech/alchemux.git
cd alchemux
uv pip install -e .
uv run alchemux --help
uv run amx setup

See docs/install.md for platform-specific FFmpeg and config paths.

Arcane terms

Alchemux can use arcane-themed wording (transmute, distill, seal, etc.). Prefer plain terms? Set arcane_terms = "false" in config.toml or choose technical mode during alchemux setup. Legend: docs/legend.md.

Known issues

Alchemux is pre-release. Documented limitations, workarounds, and what to check before filing a report: docs/known-issues.md.

Troubleshooting

alchemux -h    # or: amx -h
alchemux doctor
Problem Solution
Config not found Run alchemux setup or alchemux doctor — paths in docs/install.md
Downloads fail Try audio-only or --flac; run alchemux update; see known-issues.md (KI-002, KI-003)
ffmpeg not found Install system FFmpeg (brew install ffmpeg, apt install ffmpeg, etc.) — docs/install.md

Contributing

Bug reports, feature requests, and feedback are welcome via GitHub Issues. Please read docs/known-issues.md first.

Maintainers: local tooling, tests, and CI — docs/contributors.md. Release process — docs/release.md.

Support open source

If Alchemux saves you time, consider:

Buy Me a Coffee Ko-fi

Acknowledgements

License

License: AGPL v3

This repository is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). The badge links to the official license text; the LICENSE file in this repo is the binding copy.

License permissions and restrictions

Keeping open-source open.

Use case Permitted Notes / conditions
Private / internal use No obligation to publish changes if you do not distribute or offer the software as a network service to others.
Modify for own private use Obligations attach when you distribute or run modified code as a networked service for users.
Share / distribute (unmodified) Include AGPL license and corresponding source (or compliant written offer).
Distribute with modifications Modified source must be available under AGPL-3.0 to recipients.
Provide as SaaS / network service Users interacting with your modified version over a network must be able to obtain complete corresponding source.
Closed / proprietary redistribution Public distribution or SaaS without corresponding source under AGPL is not allowed.
Restricting source access for users you serve Network users must be able to get complete corresponding source as AGPL defines.
Sublicensing under more restrictive terms AGPL terms must flow through.

Commercial / proprietary licensing

Need use without AGPL copyleft (closed-source distribution, SaaS without source-offer obligations, etc.)? Commercial licenses may be available. Open a GitHub Issue to discuss licensing and pricing.


Disclaimer

This software is provided as-is, without warranty of any kind. The author(s) are not liable for damages or losses from use of this project, including data loss, failed downloads, or cloud storage misconfiguration.

By using Alchemux you accept responsibility for:

  • Complying with this license and the terms of service of sites you download from (e.g. YouTube)
  • Ensuring yt-dlp, FFmpeg, and cloud provider usage comply with their respective licenses and policies
  • Securing your own credentials for S3/GCP and local config files

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

alchemux-0.1.0.tar.gz (101.3 kB view details)

Uploaded Source

Built Distribution

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

alchemux-0.1.0-py3-none-any.whl (127.0 kB view details)

Uploaded Python 3

File details

Details for the file alchemux-0.1.0.tar.gz.

File metadata

  • Download URL: alchemux-0.1.0.tar.gz
  • Upload date:
  • Size: 101.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alchemux-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b4b81bca6d99ecc29234673604bbb8fd2d54491c61e8377c44009780fda9630
MD5 856743b0f27a79c04f2c8f0cc5ee14b6
BLAKE2b-256 28002a4447d38b316c418975af61249d9bcfc5dc6b250ce1c9d871fa8d3213f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for alchemux-0.1.0.tar.gz:

Publisher: release.yml on bmurrtech/alchemux

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

File details

Details for the file alchemux-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: alchemux-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 127.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alchemux-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6781c045f499eef8e7d290eb3a139e41f782175426156afdc9248a3e48439ede
MD5 7464e48f7668e745f3ac2291f4ec6af5
BLAKE2b-256 41a195eccf7855f07a2ced69ad5e8b7b4d55c96384dc1a889a34055efec688c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for alchemux-0.1.0-py3-none-any.whl:

Publisher: release.yml on bmurrtech/alchemux

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