# mcteekung/mineshare architecture

> Architecture diagram of the GitHub repository mcteekung/mineshare, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mcteekung/mineshare
- Repository: https://github.com/mcteekung/mineshare

## Overview

MineShare is a Windows/Linux LAN KVM and bidirectional audio bridge. A user configures and monitors peers in the desktop UI; the daemon discovers and pairs peers, then coordinates cursor/keyboard sharing, clipboard and file transfer, audio/microphone bridging, and status reporting. The graph preserves these distinct capabilities and the core routing layer. Runtime wiring is inferred only where README or sampled source documents it; several daemon handlers and UI pages were not sampled.

Main entry points: [`ui/src/App.tsx`](https://github.com/mcteekung/mineshare/blob/main/ui/src/App.tsx) (MineShare UI), [`crates/mineshare-daemon/src/runtime.rs`](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/runtime.rs) (Session runtime), [`crates/mineshare-net/src/lib.rs`](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-net/src/lib.rs) (Secure peer channel), [`crates/mineshare-daemon/src/files.rs`](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/files.rs) (File transfer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop interface"]
  node_ui["MineShare UI<br/>[App.tsx]"]
  node_home["Home status<br/>[Home.tsx]"]
  node_layout_ui["Layout controls<br/>[Layout.tsx]"]
  node_audio_ui["Audio controls<br/>[AudioDevices.tsx]"]
  node_files_ui["File transfers<br/>[Files.tsx]"]
  node_tauri["Tauri bridge<br/>[lib.rs]"]
end

subgraph group_daemon["Daemon runtime"]
  node_daemon_entry["Daemon entry<br/>[main.rs]"]
  node_runtime["Session runtime<br/>[runtime.rs]"]
  node_status["Status and settings<br/>[status.rs]"]
  node_clipboard["Clipboard sync<br/>[clipboard.rs]"]
  node_file_transfer["File transfer<br/>[files.rs]"]
end

subgraph group_network["Peer networking"]
  node_pairing["Pairing and trust<br/>[pairing.rs]"]
  node_discovery["Peer discovery<br/>[discovery.rs]"]
  node_secure_net["Secure peer channel<br/>[lib.rs]"]
end

subgraph group_input["Input sharing"]
  node_routing["Cursor routing<br/>[routing.rs]"]
  node_input_io["Input capture/injection<br/>[lib.rs]"]
end

subgraph group_media["Audio and sharing"]
  node_audio["Audio bridge<br/>[lib.rs]"]
end

node_user(("User"))
node_peer(("Peer PC"))
node_audio_devices(("Local audio devices"))
node_clipboard_apps(("Clipboard applications"))
node_download_dir(("Downloads folder"))

node_user -->|"configures"| node_ui
node_ui -->|"invokes commands"| node_tauri
node_tauri -->|"embeds runtime"| node_runtime
node_daemon_entry -->|"runs"| node_runtime
node_runtime -->|"discovers peers"| node_discovery
node_runtime -->|"coordinates pairing"| node_pairing
node_pairing -->|"secures session"| node_secure_net
node_discovery -->|"announces via mDNS"| node_peer
node_secure_net -->|"exchanges encrypted data"| node_peer
node_runtime -->|"coordinates input"| node_input_io
node_input_io -->|"uses routing state"| node_routing
node_input_io -->|"forwards input events"| node_secure_net
node_runtime -->|"coordinates audio"| node_audio
node_audio -->|"sends audio frames"| node_secure_net
node_audio_devices -->|"provides audio"| node_audio
node_runtime -->|"coordinates sync"| node_clipboard
node_clipboard -->|"syncs clipboard"| node_secure_net
node_clipboard_apps -->|"shares text"| node_clipboard
node_runtime -->|"coordinates transfers"| node_file_transfer
node_file_transfer -->|"streams files"| node_secure_net
node_file_transfer -->|"writes received files"| node_download_dir
node_ui -->|"renders status"| node_home
node_ui -->|"shows controls"| node_layout_ui
node_ui -->|"shows controls"| node_audio_ui
node_ui -->|"shows transfers"| node_files_ui
node_ui -->|"polls status"| node_status
node_status -->|"returns status"| node_ui

click node_ui "https://github.com/mcteekung/mineshare/blob/main/ui/src/App.tsx"
click node_home "https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Home.tsx"
click node_layout_ui "https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Layout.tsx"
click node_audio_ui "https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/AudioDevices.tsx"
click node_files_ui "https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Files.tsx"
click node_tauri "https://github.com/mcteekung/mineshare/blob/main/ui/src-tauri/src/lib.rs"
click node_daemon_entry "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/main.rs"
click node_runtime "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/runtime.rs"
click node_status "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/status.rs"
click node_clipboard "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/clipboard.rs"
click node_file_transfer "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/files.rs"
click node_pairing "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/pairing.rs"
click node_discovery "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-net/src/discovery.rs"
click node_secure_net "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-net/src/lib.rs"
click node_routing "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-core/src/routing.rs"
click node_input_io "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-input/src/lib.rs"
click node_audio "https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-audio/src/lib.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_home,node_layout_ui,node_audio_ui,node_files_ui,node_tauri,node_user toneBlue
class node_daemon_entry,node_runtime,node_status,node_clipboard,node_file_transfer toneAmber
class node_pairing,node_discovery,node_secure_net toneMint
class node_routing,node_input_io toneRose
class node_audio,node_peer,node_audio_devices,node_clipboard_apps,node_download_dir toneIndigo
```

## Components

### Desktop interface

- [MineShare UI](https://github.com/mcteekung/mineshare/blob/main/ui/src/App.tsx): `ui/src/App.tsx`
- [Home status](https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Home.tsx): `ui/src/pages/Home.tsx`
- [Layout controls](https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Layout.tsx): `ui/src/pages/Layout.tsx`
- [Audio controls](https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/AudioDevices.tsx): `ui/src/pages/AudioDevices.tsx`
- [File transfers](https://github.com/mcteekung/mineshare/blob/main/ui/src/pages/Files.tsx): `ui/src/pages/Files.tsx`
- [Tauri bridge](https://github.com/mcteekung/mineshare/blob/main/ui/src-tauri/src/lib.rs): `ui/src-tauri/src/lib.rs`

### Daemon runtime

- [Daemon entry](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/main.rs): `crates/mineshare-daemon/src/main.rs`
- [Session runtime](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/runtime.rs): `crates/mineshare-daemon/src/runtime.rs`
- [Status and settings](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/status.rs): `crates/mineshare-daemon/src/status.rs`
- [Clipboard sync](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/clipboard.rs): `crates/mineshare-daemon/src/clipboard.rs`
- [File transfer](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/files.rs): `crates/mineshare-daemon/src/files.rs`

### Peer networking

- [Pairing and trust](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-daemon/src/pairing.rs): `crates/mineshare-daemon/src/pairing.rs`
- [Peer discovery](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-net/src/discovery.rs): `crates/mineshare-net/src/discovery.rs`
- [Secure peer channel](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-net/src/lib.rs): `crates/mineshare-net/src/lib.rs`

### Input sharing

- [Cursor routing](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-core/src/routing.rs): `crates/mineshare-core/src/routing.rs`
- [Input capture/injection](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-input/src/lib.rs): `crates/mineshare-input/src/lib.rs`

### Audio and sharing

- [Audio bridge](https://github.com/mcteekung/mineshare/blob/main/crates/mineshare-audio/src/lib.rs): `crates/mineshare-audio/src/lib.rs`

### Other components

- **User**
- **Peer PC**
- **Local audio devices**
- **Clipboard applications**
- **Downloads folder**

## Connections

- User → MineShare UI: configures
- MineShare UI → Tauri bridge: invokes commands
- Tauri bridge → Session runtime: embeds runtime
- Daemon entry → Session runtime: runs
- Session runtime → Peer discovery: discovers peers
- Session runtime → Pairing and trust: coordinates pairing
- Pairing and trust → Secure peer channel: secures session
- Peer discovery → Peer PC: announces via mDNS
- Secure peer channel → Peer PC: exchanges encrypted data
- Session runtime → Input capture/injection: coordinates input
- Input capture/injection → Cursor routing: uses routing state
- Input capture/injection → Secure peer channel: forwards input events
- Session runtime → Audio bridge: coordinates audio
- Audio bridge → Secure peer channel: sends audio frames
- Local audio devices → Audio bridge: provides audio
- Session runtime → Clipboard sync: coordinates sync
- Clipboard sync → Secure peer channel: syncs clipboard
- Clipboard applications → Clipboard sync: shares text
- Session runtime → File transfer: coordinates transfers
- File transfer → Secure peer channel: streams files
- File transfer → Downloads folder: writes received files
- MineShare UI → Home status: renders status
- MineShare UI → Layout controls: shows controls
- MineShare UI → Audio controls: shows controls
- MineShare UI → File transfers: shows transfers
- MineShare UI → Status and settings: polls status
- Status and settings → MineShare UI: returns status
