Skip to content
CrossFly is 100% open sourceFollow us on GitHub
CrossFlyCrossFly
Get started
A CrossFly product

Real offline-first — in any stack.

A commercial framework for bidirectional, multi-tenant offline-first sync, built on a Rust core (“one core, N bindings”). Your app writes locally first and reconciles on its own when it reconnects — over the database you already use.

Any device
Smartphone
iOS · Android
Tablet
iPadOS · Android
Desktop
Windows · Linux · macOS
CrossFly
Sync
Rust engine
Any database
PostgreSQL
MySQL · MariaDB
SQL Server
Oracle
+ any other
on your server · Windows · Linux · macOS
gRPCTLS 1.3high performance
Built for field apps where the network is hostile
SalesField serviceLogisticsHealthcare
Real offline-first

Not “offline-friendly.” Offline-first.

The device is the primary source of truth — the network is an optimization, not a requirement.

The device is the primary source

Every operation writes to the local SQLite database first. The UI never waits on the network.

A durable mutation queue

Writes are enqueued and reconcile in the background, bidirectionally, with no data loss on flaky links.

Works fully without a network

The app doesn’t freeze offline; it keeps working and syncs the moment it reconnects.

Server-authoritative ordering

A global order plus write checkpoints guarantee convergence — it never trusts the device clock.

See it in action

One order — from the field to approved, without waiting for the network

Follow a real order: created offline, synced, approved by the supervisor and back to the rep. All automatic.

Sales rep
in the field
4G
Order #1042Pending
CustomerAurora Bakery
TotalR$ 1.240
Discount18% · over the limit
CrossFly Sync
Rust engine
Company database
Back office
Supervisor
1The rep creates the order

Out on the road, on a phone or laptop, they log the customer's order — with an 18% discount.

One Rust core, N bindings

One engine. Your language.

The same Rust core, exposed through idiomatic SDKs via FFI, JNI, N-API and WASM.

Dart / Flutter
FFI
Java / Kotlin
JNI
JavaScript / TypeScript
N-API / WASM
Swift
FFI
.NET
FFI
Python
FFI

A stable common API, with thin idiomatic SDKs over the same Rust core.

Bring your own database

Syncs with the database you already have

PostgreSQL
MySQL / MariaDB
SQL Server
Oracle
MongoDB

Change capture via log-based CDC (e.g. Postgres logical replication), with a trigger/outbox fallback selected by capability-probe.

How it works

From local write to durable convergence

A data plane on the hot path, a control plane for metadata, and an incremental transport that only moves what changed.

01

Device writes locally

The app writes to local SQLite and enqueues the mutation — instantly, with or without a network.

02

Change capture

Native CDC (log-based) when the database supports it, with a trigger + outbox fallback otherwise.

03

Rust core

A data plane (crossfly-sync-service) on the hot path plus a control plane that handles only metadata, off the hot path.

04

Incremental transport

Protobuf/gRPC over TLS 1.3 for deltas, columnar bulk/snapshot (Apache Arrow/Parquet, zstd). Attachments ride a separate plane — referenced by content_hash with pluggable storage (S3/MinIO/Azure Blob + CDN).

What sets it apart

Where CrossFly Sync goes further

Native dual multitenancy

Model A (row-level discriminator by EMPRESA_ID) or Model B (dynamic schema-per-tenant, t_{slug}) — chosen by config, with no per-tenant redeploy.

Strong per-tenant isolation

Envelope encryption (a per-tenant DEK via KMS), not just a logical filter — enabling crypto-shredding for erasure (LGPD/GDPR).

Hybrid columnar transport

Apache Arrow/Parquet for bulk plus bidirectional Protobuf/gRPC for deltas, with zstd dictionaries.

Zero server-side duplication

It keeps the source of truth plus minimal sync state — no full copy of your data inside the sync plane.

Attachments with no row ceiling

Resumable chunked byte-streams, hash-based dedup and pluggable storage — without the ~15MB/row limit of PowerSync-style solutions.

Versus the market

How it compares, honestly

CrossFly SyncPowerSync / ElectricSQLRealm / Couchbase / RxDB
Multi-database CDC✓——
Dynamic schema-per-tenant✓——
Per-tenant crypto isolation✓——
Real offline-first with a durable queue✓✓◑

✓ supported · ◑ partial / varies by product · — not offered. Comparison reflects our reading of typical capabilities and may change as those products evolve.

Commercial & licensing

Open-core, priced per active device

The parts you build on are open; the server is source-available and converts to a permissive license over time.

SDKs, protocol & specs

Apache-2.0 — the SDKs, wire protocol and specs you build against are permissively licensed.

Source-available server

FSL-1.1 — converts to a permissive license after 2 years. Not AGPL, not SSPL.

Billed per active device

You pay per active synced device — aligned with real usage, not seats or cores.

Price
On request
Billed per active synced device.
Talk to sales
FAQ

Questions, answered

Ready to take your app offline-first?

Tell us about your stack and your tenants — we’ll map CrossFly Sync onto the database you already run.

Talk to sales