Your photos. Your files. Your storage.
Drop-in sync engine for any Python app. Connect S3, R2, Dropbox, SFTP, WebDAV, and more.
Why Muleline
A sync engine that does one thing well: move files between clients and servers without losing anything.
device_id.
pip install muleline[s3]. Or implement StorageBackend for your NAS, WebDAV, or anything else.
Storage Backends
Connect your storage. Keep your files. Muleline works with your existing infrastructure.
Quick Start
Install, wire into your FastAPI app, and every /sync/* endpoint is live.
# pip install muleline[server] from fastapi import FastAPI from muleline.engine import SyncEngine from muleline.storage import LocalStorage from muleline.db import run_migrations import muleline.router as sync_router app = FastAPI() # Initialize run_migrations() engine = SyncEngine(storage=LocalStorage("./data/uploads")) sync_router.init(engine) # Mount — all endpoints live at /sync/* app.include_router(sync_router.router)
Pricing
Self-host for free forever. Managed cloud hosting when you want us to handle the ops.
Community
Get help, share your setup, request features, and connect with other Muleline users.
Visit the Forum