Skip to content

[Journey] Use the Chat App to send 1:1 messages #299

@igor-sirotin

Description

@igor-sirotin

What the user achieves

User is able send/receive end-to-end encrypted 1:1 messages over the Logos network.

Why it matters

Demonstrates, end to end, the private-messaging capability of logos-chat-module in a runnable UI — ephemeral identity, intro-bundle handshake and encrypted 1:1 messaging using Logos Delivery as transport, with no central server.

Key components

  • logos-chat-ui — the Chat App. Provides UI for the Logos Chat
  • logos-chat-module — chat backend the implements end-to-end encrypted 1:1 converstations
  • Logos Basecamp — applications that loads the UI and backend modules using Logos Core
  • Logos Delivery — transport for Logos Chat, carries the encrypted messages between the two app instances

Repository

https://github.com/logos-co/logos-chat-ui @ v0.1.0

Runtime target

testnet v0.1

Prerequisites

  • Linux or macOS
  • Network access so the two instances can reach each other

Commands and expected outputs

The app auto-initializes and starts chat on launch, so most of the flow is UI clicks. You need **two running instances** — two machines, or two terminals on one machine — to message between them.

### 1. Build and run

Pick one of the two options below. Each of the two instances you need can use either option.

#### Option A — Run in Logos Basecamp

Install the published Chat App package from the registry into Logos Basecamp using the package manager — nothing is built from source.

1. Get the latest release of Logos Basecamp from [github.com/logos-co/logos-basecamp/releases](https://github.com/logos-co/logos-basecamp/releases)

2. In the left bar select "Package Manager", then:
   - Select `logos-chat-module` and `logos-chat-ui`
   - Click "Install"
   - Wait for modules to be installed (green label "Installed" appears next to each of the 2 modules)

3. In the left bar select "chat" to run the Logos Chat App.

#### Option B — Build locally and run as a standalone app

Build and run the app locally with Nix:


git clone https://github.com/logos-co/logos-chat-ui
cd logos-chat-ui
git checkout v0.1.0

# Run the standalone app (Nix fetches all dependencies)
nix run


### 2. Use the UI — send a 1:1 message

![Logos Chat App UI screenshot](https://github.com/logos-co/logos-chat-ui/blob/master/docs/screenshot.png)

A chat window has a conversation list on the left and a chat panel on the right, and the bottom status bar shows the chat status and, once started, your identity ID.

Do this on **both** instances; call them **A** and **B**.

1. **On instance A — get your intro bundle**
    - Click `Get Intro Bundle`, then `Copy to Clipboard`
    - The bundle is a string starting with `logos_chatintro…`. Send it to B out-of-band (any channel)
    - Close the `My Bundle` popup.
1. **On instance B — start the conversation**
    - Click `+ new`
    - Paste A's intro bundle into the dialog and type an intro message (default: `Hello!`)
    - Confirm. A new conversation appears in B's conversations list.
1. **On instance A — accept**
    - The conversation appears automatically in A's conversations list. Select it.
    - Confirm B's intro message shows up in the chat panel.
1. **Chat both ways**
    - In either app, select the conversation, type a message in the message input field
    - Press `Enter` or click `>>`
    - Your messages appear in chat panel right-aligned; the counterparty's appear left-aligned, each with a timestamp.

Success command

From instance A, send a message in the shared conversation; watch instance B.

Expected result

The exact message text appears as an incoming (left-aligned) bubble in B's chat panel within a few seconds, and a reply sent from B appears as an incoming bubble in A.

Configuration details

Failure modes and limits

Limits

  • Ephemeral state: identity, conversations, and message history exist only while the app runs. Restarting an instance gives it a new identity and clears its conversations.
  • No persistence or history sync: conversations are not reloaded on startup.

Failure modes

  • Symptom: messages never arrive; left panel stays on "Waiting for connection…"
    • Cause: no shared bootstrap peer
    • Fix: ensure both instances have a stable internet connection
  • Symptom: a previously open conversation is gone
    • Cause: state is ephemeral (see Limits)
    • Fix: re-exchange intro bundles

GitHub handle

@igor-sirotin

Discord handle

igor_sirotin

Existing docs or specs

Hardware requirements

No response

Estimated time to complete

5-10 minutes

Security notes

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:journeyA user journey document (the primary deliverable).

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions