Skip to main content

high-performance media processing engine for on-the-fly image transformations and storage.

Project description

morphosx banner

morphosx 🧬

High performance, low footprint.
Self-hosted, open-source media engine for on-the-fly image processing and delivery.

morphosx is a high-speed, minimal cloud storage and media manipulation server. It converts almost any media type into an optimized, web-ready image derivative on-the-fly.


⚡ Core Features

  • User-Bound Security: Protected assets and HMAC signatures tied to specific JWT-authenticated users.
  • Private Folders: Secure per-user storage using the users/{user_id}/ path convention.
  • Universal Rendering: Support for BIM (IFC), 3D (STL/OBJ/GLB), Office, Font Specimen, Archives, Video, Audio, and RAW.
  • Modern Engines: Choice between Pillow and PyVips (ultra-fast).
  • Cloud Ready: Pluggable storage system (Local & Amazon S3).
  • Smart Caching: Automatic derivative caching for optimized delivery.

🚀 Installation & Deployment

1. Using Docker (Recommended)

The easiest way to run Morphosx with all features and system dependencies pre-installed.

docker run -p 6100:6100 --env-file .env ghcr.io/dcdavidev/morphosx:latest

2. Using pip (from PyPI)

You can install Morphosx as a library or a standalone CLI tool.

# Core installation (standard images only)
pip install morphosx

# Full installation (all media types support)
pip install "morphosx[full]"

# Selective installation
pip install "morphosx[video,pdf,3d]"

Note: Some extras require system libraries (e.g., ffmpeg for video, libvips for vips engine).


📖 Documentation

For detailed guides, check out the docs/ folder:


🛠️ Usage Guide

1. Uploading Assets

Public Upload

curl -X POST "http://localhost:6100/v1/assets/upload?folder=news" -F "file=@img.jpg"

Private Upload

curl -X POST "http://localhost:6100/v1/assets/upload?private=true" \
     -H "Authorization: Bearer <TOKEN>" -F "file=@secret.pdf"

2. Retrieving & Processing

All GET requests must be signed using HMAC-SHA256.

GET /v1/assets/my-image.jpg?width=300&format=webp&signature=HASH

✨ Smart Presets

Use predefined aliases for cleaner URLs:

  • preset=thumb: 150x150 WebP.
  • preset=hero: 1920px WebP.
  • preset=social: 1200x630 JPEG.
  • preset=preview: 400px PNG.

🛡️ Advanced Security

Morphosx uses HMAC-SHA256 to prevent DoS attacks and unauthorized manipulation. The signature payload includes: asset_id | width | height | format | quality | preset | user_id.


🧪 Supported Media Table

Category Extra Extensions Output Type
BIM [bim] ifc Technical Project Card
3D [3d] stl, obj, glb, gltf Technical Blueprint
Images Core jpg, png, webp Processed Image
Modern Img [modern] heic, avif Processed Image
RAW [raw] cr2, nef, dng, arw Developed Image
Video [video] mp4, mov, webm, avi Frame @ timestamp
Audio [video] mp3, wav, ogg, flac Waveform Image
Docs [pdf] pdf Page Render
Office [office] docx, pptx, xlsx Summary Card
Text Core json, xml, md, txt Syntax-highlighted
Typography Core ttf, otf Font Specimen
Archives Core zip, tar Content List

📜 License

MIT - Built for the Open Source community.

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

morphosx-0.8.13.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

morphosx-0.8.13-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file morphosx-0.8.13.tar.gz.

File metadata

  • Download URL: morphosx-0.8.13.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for morphosx-0.8.13.tar.gz
Algorithm Hash digest
SHA256 4d8cd531b24333405b4f9af9d1db72873b29ed546c4403af3ca42ccd8016ec6f
MD5 da13c578fbd39b8e237980cd6f983637
BLAKE2b-256 3ca26c8aebd60e95017cead1a1e865b9df49c0f4d7c7c7c024a1f6caecc5e659

See more details on using hashes here.

File details

Details for the file morphosx-0.8.13-py3-none-any.whl.

File metadata

  • Download URL: morphosx-0.8.13-py3-none-any.whl
  • Upload date:
  • Size: 35.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for morphosx-0.8.13-py3-none-any.whl
Algorithm Hash digest
SHA256 ee507024e8264e6a1e92b7f3a7f0b4378e3eead55c73b2d5949cceaa482ccf9f
MD5 d38d42ed8c2c746d3f0d2cbd364dcba9
BLAKE2b-256 876aa8a3559eb5a4154b4b502288c6a9887c8b03e4f4642ac9a599864722bc8a

See more details on using hashes here.

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