Muleline — Self-hosted file sync engine
Description: Muleline — Self-hosted file sync engine. Chunked resumable uploads, SHA-256 deduplication, 10 pluggable storage backends. MIT licensed. Built on Python/FastAPI.

MIT Licensed · Python / FastAPI · Zero external deps

# muleline

Your photos. Your files. Your storage.
Drop-in sync engine for any Python app. Connect S3, R2, Dropbox, SFTP, WebDAV, and more — no lock-in.

◆ View on GitLab → Quick Start
license MIT python 3.9+ framework FastAPI storage 10 backends status alpha

Why Muleline

## Built for reliability, not complexity

A sync engine that does one thing well: move files between clients and servers without losing anything.

🔒
SHA-256 Deduplication
Never store the same file twice. Content-addressed storage means identical files from any device get deduplicated automatically, saving space and bandwidth.
▶
Chunked Resumable Uploads
TUS-inspired protocol with 5MB chunks. Lose your connection mid-upload? Resume exactly where you left off. Works over flaky mobile networks without retrying from zero.
📈
Manifest Diff Sync
Client sends file hashes, server returns precisely what needs uploading or downloading. No full scans. Multi-device sync state tracked per `device_id`.
📦
Pluggable Storage Backends
Local filesystem out of the box. S3, Cloudflare R2, MinIO with `pip install muleline[s3]`. Or implement `StorageBackend` for your NAS, WebDAV, or anything else.
🔨
Mount in 3 Lines
Muleline is a FastAPI router. Mount it inside any existing FastAPI app and your sync API is live immediately. No separate service, no new infra to manage.
⚡
SQLite Only — No Redis, No Postgres
Sync state, upload sessions, device registry, and activity logs all live in a single SQLite WAL database. Run it in a container with a single volume mount.

Storage Backends

## Bring your own storage.

Connect your storage. Keep your files. Muleline works with your existing infrastructure — cloud, self-hosted, or local.

📁
Local / NAS
Mount any directory, NAS share, or USB drive
☁
Amazon S3
AWS S3, plus any S3-compatible service
🌐
Cloudflare R2
S3-compatible with zero egress fees
🔧
MinIO
Self-hosted S3-compatible object storage
💵
Backblaze B2
Affordable cloud storage via S3 API
💫
Dropbox
Sync directly to your Dropbox account
📄
Google Drive
Back up to Google Drive automatically
🔗
WebDAV
Nextcloud, Synology, ownCloud, Box
🔐
SFTP
Any SSH server or NAS over SFTP
soon ☁
Azure Blob
Microsoft Azure object storage

Quick Start

## Up in under a minute

Install, wire into your FastAPI app, and every `/sync/*` endpoint is live.

main.py python

    # Install: pip install muleline

    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

## Simple, honest pricing

Self-host for free forever. Managed cloud hosting when you want us to handle the ops.

Self-Hosted
Free
forever, MIT licensed

- Run on your own server
- All storage backends
- Face recognition
- Unlimited files
- Community support

Get Started
Most Popular
Cloud
$8
per month

- Fully managed hosting
- 100GB storage included
- All AI features (CLIP search, face recognition)
- Auto-backups
- Email support

Cloud Pro
$20
per month

- Everything in Cloud
- 1TB storage
- Priority support
- Custom domain
- API access

Coming Soon

## PyPI release & full docs on the way

Muleline is in active development. The core engine is stable — packaging, docs, and a hosted demo are coming. Drop your email to be notified.

No spam. Just a ping when Muleline hits PyPI.