TinyCld: Self-Hosted Productivity Suite with Native Protocols and Zero Per-User Costs

⬅️ Back to Tools

TinyCld: Your Cloud, Your Rules

TinyCld https://tinycld.org is a self-hosted productivity suite that replaces Google Workspace and Microsoft 365 with a single Docker container. Six integrated apps (mail, calendar, contacts, drive, text editor, and spreadsheet), all speaking native protocols so you can use Apple Mail, Thunderbird, GNOME Calendar, or Finder alongside the web UI.

The pitch is simple: own your data, pay nothing per user, and deploy on a $5 VPS in fifteen minutes. No telemetry, no tracking pixels, no data mining. Your emails, files, and contacts live on your server.

Key Features

  • Six Integrated Apps - Mail, Calendar, Contacts, Drive, Text (docs), Calc (spreadsheets)
  • Native Protocols - IMAP (RFC 9051), SMTP (RFC 5321), CalDAV (RFC 4791), CardDAV (RFC 6352), WebDAV (RFC 4918)
  • $0 Per User, Forever - No per-seat pricing, no premium tiers, no surprises
  • One Docker Container - Single image, single compose file, works on any Linux VM
  • Let’s Encrypt Built In - HTTPS out of the box, no cert management needed
  • Multi-Org Support - Users can belong to multiple organizations with different roles
  • Real-Time Updates - Server-sent events across all apps, no polling
  • iOS App - Native app on the App Store, bring your own server
  • Google Takeout Import - Drag a ZIP onto TinyCld, walks away

What You Get

AppProtocolWhat It Does
MailIMAP + SMTPThreaded conversations, labels, attachments, delivery tracking. Connect with any IMAP client.
CalendarCalDAVRecurring events, guest management, RSVP, reminders, color-coded categories.
ContactsCardDAVShared directory with favorites, notes, org-wide syncing.
DriveWebDAVFile storage with versioning, share links, role-based permissions, thumbnails, trash.
Text-Rich document editor with tables, comments, live CRDT collaboration. .docx and Markdown round-trips.
Calc-Spreadsheets with formulas, named ranges, snapshots, real-time co-editing. CSV and .xlsx import/export.

Get Started

Installation

Requires Docker on any Linux VM:

# Create a directory and pull the compose file
mkdir tinycld && cd tinycld
curl -O https://raw.githubusercontent.com/tinycld/app/main/docker-compose.yml

# Start everything
docker compose up -d

That is it. The output looks like this:

✓ Pulling tinycld:latest
✓ Acquired Let's Encrypt cert · <your domain>.org
✓ IMAP listening on :993
✓ SMTP listening on :465
✓ Web ready on :443
› Ready in 14.7s

Your team’s new home lives at https://your-domain.com/.

Google Migration

If you are switching from Google Workspace:

  1. Download your archive from Google Takeout (Mail, Calendar, Contacts, Drive in one bundle)
  2. Drop the .zip into TinyCld and no unpacking needed
  3. Walk away. Re-imports are idempotent. Contacts dedupe by vCard UID, events by ICAL_UID, calendars reuse by name.

The parsing happens in a web worker, so the UI stays snappy even with a 20 GB archive.

For Developers

TinyCld is not just a productivity suite, it is a platform you can build on. Every package starts with a working app shell that already handles auth, multi-org, real-time data, email, files, notifications, push, audit logs, forms, and theming.

Drop in a manifest.ts, get all of that for free, and ship the parts that actually matter to you:

export default {
  name: "CRM",
  slug: "crm",
  routes: { directory: "screens" },
  collections: { register: "collections" },
  nav: { label: "CRM", icon: "users" },
};

The foundation includes:

  • Auth (sessions, signup, login, OAuth-ready)
  • Multi-org with per-org roles
  • Live data via TanStack DB
  • Optimistic mutations with rollback
  • Transactional email + IMAP/SMTP serving
  • File upload, versioning, share, thumbnails
  • In-app notifications + native push (Expo)
  • Append-only audit log
  • Hook Form + Zod, typed end-to-end
  • Light + dark theming with semantic tokens
  • One codebase for web + iOS + Android (Expo Router)

Scaffold a new package in sixty seconds:

npx @tinycld/bootstrap
# ? What's the package name? crm
# ? Include a Go server? y
# ✓ Created ./crm
# ✓ Linked crm into the workspace
# ✓ Generated routes, types, migrations
# → open http://localhost:7100/a/<org>/crm

Protocols

Every app speaks its native protocol. Use the web UI, your favorite desktop client, or both:

ProtocolRFCUse WithPort
IMAP9051Apple Mail, Thunderbird, Outlook, mutt:993
SMTP5321Any SMTP-capable client:465
CalDAV4791Apple Calendar, GNOME Calendar, DAVx5:443
CardDAV6352Apple Contacts, GNOME Contacts, DAVx5:443
WebDAV4918macOS Finder, Windows Explorer, Linux Nautilus:443

Platforms

  • 🐧 Linux (any Docker-capable VM)
  • 🍎 macOS (via Docker Desktop)
  • 📱 iOS (native app on the App Store)
  • 📱 Android (via Expo)

Why This Tool Rocks

  • Replaces Google Workspace and Microsoft 365 with a single Docker container
  • Native protocols mean you are not locked into a web UI
  • $0 per user forever:no per-seat pricing, no premium tiers
  • Private by default: no telemetry, no tracking pixels, external email images proxied
  • Google Takeout import is idempotent and handles 20 GB archives in a web worker
  • Developer platform with auth, multi-org, real-time, push, and audit built in
  • iOS app that connects to your self-hosted server with native push
  • Open source under a permissive license

🔗 GitHub: github.com/tinycld/app 🔗 Website: tinycld.org

Crepi il lupo! 🐺