Sync

Offline-first. Conflict-free. Instant when you reconnect.

Local SQLite. CRDT-style merge. Sub-second peer-to-peer propagation on a good network. The team timeline never lies.

What it does

The anatomy of realtime sync.

  • 1
    Local store of truth

    Every desktop client reads and writes to local SQLite first. The server is an aggregator, not the bottleneck.

  • 2
    Realtime team timeline

    See your colleagues start, stop, and switch timers as it happens. Helpful for hand-offs, not for surveillance.

  • 3
    Conflict-free merge

    Two devices edit the same entry while offline. They reconcile with a deterministic merge — no manual conflict UI.

  • 4
    Audit-grade trail

    Every change is event-sourced. Replay the project state at any timestamp.

Jobs to be done

Workflows we obsess over.

  • Track time in airplane mode

    Long flight, no captive portal, terrible train wifi. Huble runs entirely from your local SQLite. Catches up on reconnect.

  • Hand off a timer to a teammate

    Same project, different shifts, different time zones? Stop your timer, your colleague's starts. The handoff shows up in the team timeline live.

  • Replay a contested invoice

    Customer disputing hours from three months ago? The event log lets you replay the timeline minute-by-minute. No 'said vs. said'.

Under the hood

For the technical buyer.

  • Local SQLite with WAL mode, encrypted at rest with OS keychain.
  • Server is event-sourced: every change is an append-only event with HLC timestamps.
  • Conflict resolution: last-writer-wins per field, with a stable tie-break on device ID.
  • Realtime: Socket.IO with auto-reconnect, backed by Redis Streams for fanout.
  • 99th-percentile round-trip on a good network: ~800 ms desktop → server → desktop.
# Subscribe to project events
WS /api/v1/projects/prj_a1b2/events

→ { "type": "timer.started", "user": "usr_c3", "at": "2026-05-13T09:14:02Z" }
→ { "type": "timer.stopped", "user": "usr_c3", "at": "2026-05-13T10:42:11Z" }
# delivered to every subscriber in <1 s on a good network
I lost three hours of work once on a flight to Bali, with another tracker. That doesn't happen with Huble. The local store is the whole game.
Priya Mehta
Engineering lead · London · 110 people

FAQ

Common questions.

What happens if two people edit the same entry offline?

The merge runs at reconnect. Last-writer-wins per field, with a stable tie-break on device ID. The audit log records both sides so you can review.

How big can the offline buffer get?

Unbounded in practice. We've tested two weeks of full activity capture offline (≈40 MB) and seen no degradation.

Is the local store encrypted?

Yes — at rest via the OS keychain (macOS Keychain / Win DPAPI / Linux secret service). The encryption key never leaves the device.

Can I run the server on-prem?

On the Q4 roadmap for Enterprise. Today: SaaS only, with EU data residency available on Business+.

Try realtime sync on the team for 14 days.

Every feature unlocked. No credit card. No card.