Skip to content

Repository files navigation

OpenMesh

Privacy-first, peer-to-peer local file sharing platform.

Share files, folders, and text across devices on your local network — no cloud storage, no accounts, no limits.

License: MIT TypeScript Next.js

Features

  • Zero Cloud Storage — Files never leave your local network
  • No Accounts — Connect instantly without sign-up
  • End-to-End Encrypted — AES-256-GCM with SHA-256 verification
  • Large File Support — Stream-based transfers for 100GB+ files
  • Cross-Platform — Web, with desktop and mobile planned
  • Modern UI — Glassmorphism-inspired dark mode interface
  • Open Source — MIT licensed, self-hostable

Quick Start

Prerequisites

  • Node.js 20+
  • pnpm 9+

Installation

git clone https://github.com/openmesh/openmesh.git
cd openmesh
npm run build

Development

# Start both web and server
npm dev

# Or individually
npm dev:web      # http://localhost:3000
npm dev:server   # http://localhost:4000

Project Structure

openmesh/
├── apps/
│   ├── web/          # Next.js frontend
│   └── server/       # Express + Socket.IO signaling
├── packages/
│   ├── shared/       # Types, constants, utilities
│   ├── sdk/          # Developer SDK
│   ├── networking/   # WebRTC layer
│   ├── encryption/   # AES-256-GCM utilities
│   └── transfer/     # Chunk-based transfer engine
├── docs/             # Documentation
├── docker/           # Docker configuration
└── examples/         # Usage examples

Architecture

┌─────────────┐     WebSocket      ┌─────────────┐
│   Web App   │◄──────────────────►│   Server    │
│  (Next.js)  │     Signaling      │  (Express)  │
└──────┬──────┘                    └─────────────┘
       │
       │ WebRTC DataChannel (P2P)
       │
┌──────▼──────┐
│  Peer Device│
│   (Browser) │
└─────────────┘

The signaling server coordinates device discovery and WebRTC handshake. Actual file data flows directly between peers via encrypted WebRTC DataChannels.

SDK Usage

import { OpenMesh } from "@openmesh/sdk";

const client = new OpenMesh({ serverUrl: "http://localhost:4000" });
await client.connect();
await client.sendFile(file);
client.sendText("Hello!");

Documentation

License

MIT — Built with ❤️ by the OpenMesh community.

About

Privacy-first, peer-to-peer local file sharing platform. Share files, folders, and text across devices on your local network — no cloud storage, no accounts, no limits.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages