bothy 0.0.1

Serverless, local-first sync engine that uses the user's own cloud storage (Google Drive) as the transport. Early development.
Documentation

bothy

Serverless, local-first sync engine that uses the user's own cloud storage as the transport.

⚠️ Early development. The API and the on-remote format will change. Do not use it for real data yet.

In Scotland and northern England, a bothy is an unlocked mountain shelter that belongs to no one: anyone may use it, and travellers leave notes and supplies for whoever comes next. Bothy works the same way: there is no server, the data stays in the user's own cloud account, and devices drop off and pick up files at a shared place.

What it will do

  • Every device keeps a local SQLite database as the source of truth; apps work offline.
  • Devices exchange immutable, append-only files through the user's own Google Drive (appDataFolder). No backend, no accounts of our own.
  • Changes are ordered with a hybrid logical clock and merged per field (last-writer-wins), so every device converges to the same state.
  • A documented, versioned on-remote format (SPEC.md) so other languages can interoperate.
  • Bindings for Flutter/Dart, Python and C, aimed at mobile, desktop and embedded Linux.

What is in this release

Only the hybrid logical clock (Hlc, HlcClock) and the format version constant:

use bothy::{Hlc, HlcClock};

let mut clock = HlcClock::new();
let a = clock.now(1_700_000_000_000);
let b = clock.now(1_700_000_000_000);
assert!(b > a);

Links

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.