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
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.