GhostMesh Demo

Multi-Mode P2P Chat

Choose between a simple peer-to-peer chat flow and a client-server hidden-service flow, then open this page in multiple tabs with the same identifier.

My Peer ID

{{ state.peerId || 'Starting…' }}

Network

{{ connectedPeerCount }} peers connected

{{ trackerSummary }}

Experience

{{ experienceTitle }}

{{ experienceSummary }}

Quick Start

Step {{ index + 1 }}

{{ step }}

Composer

Route Builder

Preview

{{ deliverySummary }}

Streaming

File Transfer

File transfers follow the active delivery strategy automatically. Compatible incoming videos start buffering into a `MediaSource` preview while the rest of the file arrives.

{{ state.selectedFileName || 'No file selected' }}

Hidden Service

Client x Server Setup

Configure this tab as a client or server. In this mode, client messages can go through the server, the server can inspect them, and then deliver them to any connected peer.

{{ hiddenRoleSummary }}

Server discovery

{{ state.hiddenServerProbeStatus }}

In server mode, you only need the private key and the optional `Reveal server` toggle. `Entry client` and `Server peer` are client-side settings.

Status

{{ state.hiddenStatus }}

Transfers

{{ orderedTransfers.length }} item(s)
No file transfers yet. Pick a file and send it to a connected peer.
{{ transfer.direction }} {{ transfer.status }} {{ formatBytes(transfer.receivedBytes) }} / {{ formatBytes(transfer.size) }}

{{ transfer.name }}

{{ transfer.mimeType || 'application/octet-stream' }}

{{ transfer.direction === 'incoming' ? `from ${transfer.peerId}` : `to ${transfer.peerId}` }} Attempting live playback Image preview Download
Preparing MediaSource stream...

{{ transfer.previewError }}

Messages

{{ entry.direction }} {{ entry.mode }} {{ entry.timestamp }} circuit {{ entry.circuitId }}

{{ entry.text }}

{{ entry.meta }}

Send a message after at least one peer connects. Relay mode needs an intermediate peer, and onion mode picks random hops. Apply the client/server roles and request the hidden service to see request and response events here.

{{ statusLine }}