The technical view

Store-and-forward, over every road

CruiseChattr is a delay-tolerant messenger. It does not need a live connection between sender and recipient. It needs some path, eventually, and it builds one out of whatever is around.

The architecture in four ideas

Local-first

Your phone is the source of truth. Conversations, contacts, rooms and the outbox live in a database on the device, so every screen works with no connection at all. The network only refreshes what is already there.

Envelopes, not sessions

A message is a self-contained envelope: a unique id, who it is for, an expiry and a hop limit, and the sealed content. There is no live connection to keep open. Any carrier can hold an envelope and pass it on later.

One outbox, many roads

Every envelope waits in a single outbox. Each time the phone's situation changes (a peer appears, WiFi joins, a signal shows up), the outbox is replayed over whatever is open. An envelope leaves the outbox only when a delivery acknowledgement comes back. "Probably arrived" is not good enough.

Duplicates are cheap, losses are not

The same envelope may go out over two roads at once. Every receiver de-duplicates by id, so a message is shown once, however many ways it arrived.

The roads

The app chooses the road per message, automatically. You never pick a network. If several are open, it may use more than one; if none is, the envelope waits.

Bluetooth LE mesh

Phones discover each other over Bluetooth Low Energy and exchange envelopes directly. When two phones meet, they first compare what each already holds and swap only what the other is missing, so the air time goes to new messages. Envelopes hop from phone to phone (store-carry-forward) until they reach the recipient or a phone that has another road. Each envelope has a hop limit and an expiry; SOS lasts longer and travels further.

Shared WiFi, no internet needed

Phones joined to the same WiFi find each other on the local network and exchange envelopes directly at WiFi speed, with no internet package. Whether this works depends on the ship's network setup; where it is blocked, the other roads carry on.

Internet relay

When a phone has internet, it hands sealed envelopes to our relay, which holds them until the recipient (or a phone near them) checks in. The relay stores ciphertext it cannot open.

Carriers

Any CruiseChattr phone that reaches the internet uploads the sealed envelopes it is carrying for other people and brings replies back down. A carrier can neither read nor alter what it carries.

Coast towers

Near land, a phone can reach a normal coast tower even while joined to ship WiFi that blocks outside traffic. CruiseChattr only uses your phone plan if you allow it, stays off the ship's own cell network unless you say your plan covers it, and shows what it used.

ᛒ Bluetooth-only mode

For when you want nothing to touch the internet: a one-to-one chat that travels phone to phone only. Envelopes written in this mode are marked so that no phone, and no carrier, ever lifts them to a server. Messages home need the internet, so they are refused in this mode, and the app tells you so. SOS is exempt and always uses every road.

Waiting, Sent, Delivered

🕓

Waiting

In your outbox. No road is open yet; it leaves on the first one that opens.

✓

Sent

A road took it: a nearby phone, the shared WiFi or the relay.

✓✓

Delivered

The recipient's phone acknowledged it.

Encryption

Keys made on your phone

Each phone generates its own key pair. The private key never leaves the device.

X25519 + AES-256-GCM

Two phones agree a shared secret with X25519 key exchange, and the content is sealed with AES-256-GCM. GCM is authenticated: a tampered envelope fails to open rather than showing altered text.

Relays carry, never read

Relay phones and our server only ever handle sealed envelopes. Routing needs who it is for and when it expires, not what it says.

The one exception

A message typed into the family or crew portal in a web browser cannot be sealed this way, because a browser has no mesh key. Those reach our server readable before they enter the mesh. If that matters, send from the app.

Honest limits

  • • Photos need an internet road. Text can go any way; Bluetooth is kept for messages.
  • • Bluetooth range is short, roughly the same venue or the deck below. Beyond that, speed depends on how many people run the app and how much they move.
  • • Expiry is real. An envelope nobody could carry before it expires is dropped from the mesh.
  • • We publish no speed or battery figures until we have measured them on real sailings.

Prefer it without the jargon? Read the simple version.