weblink

99percentpeopleMIT活跃维护

用浏览器远程控制桌面,基于 WebRTC 实现点对点聊天、文件传输、语音视频和屏幕共享,无需公网 IP 或中转服务器。

Control your desktop from a browser, with P2P chat, file sharing, voice, video, and screen sharing powered by WebRTC.

v1.3.7发布于 2026-11-09 02:09 UTC898star +12 / 7 天75fork同步于 2026-11-11 05:50 UTC

怎么上手

由 README 提炼,执行前请确认
从 GitHub Releases 下载 Windows x64 安装包或便携 ZIP:https://github.com/99percentpeople/weblink/releases/latest
硬件要求按 README 说明

桌面端目前仅支持 Windows 10 22H2 / Windows 11 x64,需 WebView2 120 或更高版本;便携版 ZIP 同样要求 WebView2 120+。README 未说明显存要求,Web 端依赖浏览器设备 API 与权限。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

浏览器直连桌面,用 WebRTC 做聊天、传文件、音视频和远程控制

用浏览器远程控制桌面,基于 WebRTC 实现点对点聊天、文件传输、语音视频和屏幕共享,无需公网 IP 或中转服务器。

核心能力

  • 浏览器连接桌面端,远程查看屏幕并操作鼠标键盘
  • 用 WebRTC 在设备间建立 P2P 连接,传输聊天与文件
  • 支持摄像头、麦克风和多屏共享,可调分辨率帧率码率
  • 按设备分别管理远程控制、文件列表和自动化权限
  • Windows 端支持 DXGI 或 WGC 采集与 NVENC 等硬件编码

容易踩的坑

便携 ZIP 需自备 WebView2 120+ 并在可执行文件旁放置 weblink-portable 标记文件;浏览器采集、剪贴板和通知需 HTTPS 或 localhost 并授予权限;加入房间不等于获得远程控制或 Shell 权限,需单独授权。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.3.7
  1. v1.3.7Weblink 1.3.7最新正式版2026-11-09 · 2026-11-09 02:09 UTC

    Downloads

    Windows 10 22H2 / Windows 11 · x64

    PackageDownloadUsage
    InstallerWeblink-windows-x64-setup.exeInstalls WebView2 when needed; supports signed, user-confirmed in-app updates.
    PortableWeblink-windows-x64-portable.zipExtract both weblink-desktop.exe and weblink-portable; requires WebView2 120+. Replace manually to update.

    The empty weblink-portable file identifies the portable edition for update checks. Keep it beside weblink-desktop.exe.

    Changes

    Weblink 1.3.7 improves how Windows screen sharing handles bitrate changes, adds more detailed encoder diagnostics, and restores messaging and file requests after a peer reconnects.

    Windows screen sharing

    • Adaptive bitrate updates. Media Foundation and NVENC combine small bitrate changes based on how long each driver takes to apply them. Larger cuts apply sooner when the frame budget delays new inputs or pending frames are taking longer to produce output. Lower network budgets limit new input immediately, even while the driver update is pending.
    • Live capture and encoder diagnostics. Capture FPS, frame count, and time since the last frame refresh with each diagnostic sample. Detailed reports show how long the encoder spends preparing frames, acquiring the GPU context lock, submitting input, waiting for and handling output, delivering frames, and changing bitrate. They also report the interval between encoded outputs.

    Reconnection

    • Restore messaging and file requests. Peers can exchange new messages and file requests once they reconnect and trust is verified again.

    Maintenance

    • Update the PWA build tools and asset generator to 2.x to avoid CI installation failures caused by the legacy Sharp dependency.
  2. v1.3.6Weblink 1.3.62026-11-05 · 2026-11-05 01:13 UTC
    查看更新说明

    Downloads

    Windows 10 22H2 / Windows 11 · x64

    PackageDownloadUsage
    InstallerWeblink-windows-x64-setup.exeInstalls WebView2 when needed; supports signed, user-confirmed in-app updates.
    PortableWeblink-windows-x64-portable.zipExtract both weblink-desktop.exe and weblink-portable; requires WebView2 120+. Replace manually to update.

    The empty weblink-portable file identifies the portable edition for update checks. Keep it beside weblink-desktop.exe.

    Changes

    Weblink 1.3.6 brings media and data onto one native connection per peer on Windows, adds a custom signaling server setting, reduces web playback latency, and improves screen recordings and room admission.

    Meeting playback and screen recording

    • One WebRTC connection per peer on Windows. Chat, files, remote control, and all meeting audio and video share the native room connection. Windows uses its native hardware or software decoder and GPU renderer for incoming video, including video from web peers. Web viewers use the browser. Native screen sharing with the updated desktop app requires a peer that supports the shared connection.
    • Independent screen settings and shared encoding. Software-encoded screens keep their own encoding preset and variable-frame-rate target on the room connection. Viewers of the same screen can share a hardware encoder even with different bitrate limits when their current encoding settings and bandwidth bucket match.
    • Lower playback latency. When playing meeting streams or native screen shares, the browser now skips RTCRtpScriptTransform on incoming audio and video by default. Frames reach the decoder without passing through a JavaScript worker. Dedicated meeting connections can still opt into the transform for encoded recording.
    • 1% Low FPS for web playback. The stream statistics overlay and its copied summary show the frame rate calculated from the slowest 1% of presentation intervals in the last 10 seconds. The value is marked with ≈ when the browser reports several frames in one callback.
    • Record on the viewing device. Web viewers now record a shared Windows screen directly from the video and audio tracks they receive. Starting, pausing, resuming and stopping a recording leave live playback uninterrupted. Chromium can reuse the incoming encoded video when supported.
    • Keep screen audio in sync. Record a single selected audio track directly and mix only when multiple tracks are selected. For a screen and its matching audio track, Chromium recordings use receiver timing to align Opus audio with video. Windows screen shares now offer RTP Absolute Capture Time as a fallback before sender reports arrive.
    • More precise MKV seeking. Store each video frame's display duration so seeking while paused lands on the frame covering the requested time. Smooth uneven frame intervals in high-frame-rate screen recordings while preserving static holds and variable frame rates.

    Connections and file transfers

    • Faster Windows file transfers. The desktop app batches queued file blocks and bandwidth-test packets between the WebView and Rust, reducing IPC calls while preserving the DataChannel format used by web peers.
    • Choose a signaling server. Settings → Connection shows the deployment's WebSocket URL. Edits save automatically and apply the next time you join a room. Use Reset below the field to restore the default. Each server has its own room history and supplies its own managed TURN credentials.
    • Limit incomplete joins. The Bun server and Cloudflare Worker rate-limit WebSocket upgrades per IP, close connections that miss the join deadline (15 seconds by default), and create room state only after a valid join. Both cap room membership at 128 b
  3. v1.3.5Weblink 1.3.52026-11-01 · 2026-11-01 11:14 UTC
    查看更新说明

    Downloads

    Windows 10 22H2 / Windows 11 · x64

    PackageDownloadUsage
    InstallerWeblink-windows-x64-setup.exeInstalls WebView2 when needed; supports signed, user-confirmed in-app updates.
    PortableWeblink-windows-x64-portable.zipExtract both weblink-desktop.exe and weblink-portable; requires WebView2 120+. Replace manually to update.

    The empty weblink-portable file identifies the portable edition for update checks. Keep it beside weblink-desktop.exe.

    Changes

    Weblink 1.3.5 adds native screen reception and GPU playback to Windows desktop, connects native video to the existing recording controls, and simplifies remembered automation permissions and emergency revocation.

    Windows native screen playback

    • Native decoding: receive screen streams through native WebRTC, including H.265 Main 8-bit when a compatible Windows decoder and driver are available. H.264, VP8, VP9 and AV1 are also supported, with hardware decoding where available. Windows screen reception no longer depends on WebView2's codec support; Web clients continue using browser decoding.
    • Embedded GPU presentation: local screen preview and received native video share the same GPU presentation path inside the existing interface, including fullscreen and picture-in-picture. Keep video controls, audio playback and remote input integrated with the current layout, and use GPU interpolation when scaling native video.
    • Bounded, demand-driven processing: reuse frame buffers and GPU textures, present the latest available frame, and suspend unnecessary work for static layouts and hidden views. Hardware-decoded frames stay on the GPU for display; CPU readback is requested by consumers such as recording.

    Recording and video controls

    • Native video recording: record native screen playback with audio through the existing controls. Use pooled asynchronous readback for recordings and retain static frames while live playback continues through the GPU presenter.
    • Consistent action menus: use translucent gradients and matching opening and closing transitions for video controls across browser playback, local preview and native reception.
    • Clearer readback settings: clarify that GPU readback buffers only affects sender paths that need GPU-to-CPU readback, applies to the next share, and does not configure received-video recording or embedded GPU display.

    Automation permissions and approvals

    • Explicit emergency revocation: emergency stop now resets saved automation Always allow decisions to Ask, including offline devices, while preserving Deny decisions. Ordinary disconnects, reconnects, app restarts and ending individual grants retain saved permissions. Re-enabling automation does not restore permissions revoked by an emergency stop; MCP token calls remain separately paused until MCP is turned off and on again.
    • Consistent permission state: remove the separate pause state for remembered device permissions. Temporary failures of the Windows emergency listener cancel active work and report an error without changing saved device decisions.
    • Approval notification lifetime: keep Windows approval notifications available until answered, dismissed or expired, and dismiss both system and in-app requests at their approval deadline. Simplify Deny labels across supported languages.

    Maintenance

    • Update the pinned native SDK to libwebrtc 0.3.55, retain Weblink's native media extensions, and use upstream implementations for behavior now covered by the official SDK.
  4. v1.3.4Weblink 1.3.42026-10-29 · 2026-10-29 15:17 UTC
    查看更新说明

    Downloads

    Windows 10 22H2 / Windows 11 · x64

    PackageDownloadUsage
    InstallerWeblink-windows-x64-setup.exeInstalls WebView2 when needed; supports signed, user-confirmed in-app updates.
    PortableWeblink-windows-x64-portable.zipExtract both weblink-desktop.exe and weblink-portable; requires WebView2 120+. Replace manually to update.

    The empty weblink-portable file identifies the portable edition for update checks. Keep it beside weblink-desktop.exe.

    Changes

    Weblink 1.3.4 adds saved receiver video-quality settings, simplifies screen-sharing and control lifetimes, and improves streaming stability, video controls and desktop update progress.

    Receiver video quality

    • Saved receive preferences: add Receive video quality below Video quality in Settings → Media. Set resolution, frame rate and bitrate limits for all incoming video, remember them across sessions, and show the effective limits for each active source. Resolution and bitrate follow the sender by default; frame rate defaults to Auto.
    • Automatic frame-rate limits: use the receiver's display presentation cadence to limit the requested frame rate. Stabilize browser calibration so intermittent slow callbacks do not repeatedly switch between 60 and 120 FPS or leave a high-refresh display stuck at 60 FPS. Manual frame-rate choices remain available.
    • Consistent settings: use selection lists for resolution and frame rate and a slider for bitrate. Desktop choices account for available display capabilities; browsers retain the standard lists when that information is unavailable.
    • Independent viewer quality: apply each receiver's preferences within the sender's source and configured limits, supporting browser video and native screen streams. Adjust the viewer's outgoing encoding without changing the shared capture or other viewers' requested quality. Older peers continue streaming without receiver-side quality controls.

    Screen sharing, remote control and MCP

    • Keep the picture after control ends: manual and MCP control now leave an established screen share available to the room after release or controller disconnection. Viewers can continue watching and request control again. Remove the manual controller's remote Close screen action; the sharing device stops its picture locally.
    • Acquire sharing and control together: control.acquire accepts a monitor sourceId to start or reuse sharing and acquire input in one call. Check both sharing and input permissions together, with at most one approval request. Existing trackId calls remain supported, and failed acquisition preserves previously established sharing.
    • Respect remembered permissions: honor existing automation allow decisions and remove obsolete approval notifications after policy changes. Deny policies and emergency suspension remain enforced.
    • Clean stream shutdown: notify receivers before closing native transports so an intentional stop does not briefly appear as an interrupted connection.

    Streaming and interface fixes

    • Steadier NVIDIA screen encoding: replace periodic NVENC H.264/H.265 keyframes with on-demand keyframes to avoid recurring full-picture recompression and its quality pulses. Startup, new viewers, recovery requests and recording start/resume still request keyframes.
    • Stable video menus: preserve open action menus when screen metadata refreshes without replacing the source. Fully hide collapsed action buttons so their contents do not remain around the floating control dot.
    • Clearer desktop updates: use a consistent circular progress indicator. Show loading while preparing or installing, and download progress when known, instead of displaying a premature 100% state.
    • **Aligned file
  5. v1.3.3Weblink 1.3.32026-10-28 · 2026-10-28 03:10 UTC
    查看更新说明

    Downloads

    Windows 10 22H2 / Windows 11 · x64

    PackageDownloadUsage
    InstallerWeblink-windows-x64-setup.exeInstalls WebView2 when needed; supports signed, user-confirmed in-app updates.
    PortableWeblink-windows-x64-portable.zipExtract both weblink-desktop.exe and weblink-portable; requires WebView2 120+. Replace manually to update.

    The empty weblink-portable file identifies the portable edition for update checks. Keep it beside weblink-desktop.exe.

    Changes

    Weblink 1.3.3 improves Windows shortcut forwarding, unifies screen-sharing and control lifetimes, and makes MCP automation discovery and accessibility workflows more reliable.

    Remote control and screen sharing

    • Windows system shortcuts: restore reliable forwarding of ordinary keys, Win and Alt+Tab while suppressing the corresponding local shortcuts when system-key forwarding is active. Keep capture working after switching away from Weblink and returning.
    • Human control takes priority: approve and validate a manual takeover before replacing an automation-owned grant. Rejected, cancelled or expired requests leave the current control intact. Human input ends automation borrowing the same manual grant; automation must explicitly acquire a new lease to continue.
    • Control across monitors: allow an authorized controller to switch to another shared monitor after validating the new target. Failed switches retain the previous control, and viewing a different screen alone does not move input authorization.
    • One share per source: reuse existing native captures for manual control and MCP instead of opening duplicate screens. Preserve the existing capture and audio settings. Ending control releases only its associated temporary share use; user-started sharing, local recording and other active users keep the screen available.
    • Stable session lifetimes: keep acquired remote control active when unrelated local microphone, camera or screen streams change. Bind cleanup to the controlled source and session lifetime.
    • Consistent control indicators: publish the controller type and active automation state to room observers. Use consistent labels and icons for manual control, exclusive automation and automation borrowing manual control, while keeping takeover eligibility tied to the host's capabilities and permissions.

    MCP and accessibility

    • Clearer device discovery: report runtime, application version and supported tools separately from automation enablement and permissions, so clients can identify usable targets and explain unavailable capabilities.
    • Richer Windows accessibility: add bounded state, value and text reads, event-driven condition waits and optional observations after actions. Preserve a confirmed action's outcome when a later observation fails, with structured recovery information to avoid replaying an action that already succeeded.
    • Smaller screenshot responses: return PNG data once as MCP image content and retain coordinate and image metadata in the structured result.
    • Backend boundaries: unify capability reporting, separate accessibility operations from native event handling, and keep Windows input conversion in the Windows backend. Existing Windows behavior is retained; this release does not add other operating-system backends.

    Messaging, connections and releases

    • Room chat recovery: recover room-message channels after handshake timeouts so online peers can resume group messaging without leaving the input disabled.
    • Connection errors: validate desktop signaling URLs and report connection failures without mislabeling them as browser permission errors.
    • Faster releases: keep correctness tests on pull requests and the public branch, valid

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Control your desktop from a browser

    Connect to the desktop app from a browser on your phone or computer to view the remote screen, use the mouse and keyboard, and transfer files. Weblink also provides chat, a local file library, voice and video calls, and screen sharing, with devices connected over WebRTC.

    The Web app works without installing a native client. The desktop app reuses the same interface and application code, adding native screen capture, remote input, system clipboard access, and desktop window controls.

    Get started

    1. Open webl.ink or launch the desktop app.
    2. Choose a display name and room ID, and optionally set a room password.
    3. Join the same room from another device using the same password. Invite others with a room link or QR code.
    4. Open room chat or a private conversation, send files, or enable your microphone, camera, or screen share.

    To control a remote computer, run the desktop app there and request control from its participant or shared-display actions on another device. The host approves the request or uses a previously saved allow rule. A request can start display sharing after approval; window shares remain view-only.

    Download the Windows x64 installer or portable ZIP from GitHub Releases. The installer sets up WebView2 when needed; the portable ZIP requires WebView2 120 or newer and its weblink-portable marker beside the executable. Development CI runs provide a weblink-windows-x64 executable artifact. See desktop setup and builds for prerequisites and source builds.

    Web and desktop capabilities

    CapabilityWebDesktop (currently Windows)
    Rooms, private chat, file library and transfersSupportedSupported
    File storageIndexedDB by default; directory mounting where supportedLocal directory by default; IndexedDB also available
    Camera and microphoneBrowser device APIsWebView device APIs
    Screen sharingBrowser capture, where supportedNative display/window capture and supported system audio
    Video playbackBrowser WebRTC decoder and video elementNative hardware decoding with software fallback and GPU rendering
    RecordingOne local or remote source, with pause and resumeSame controls, including native shared screens
    Remote controlControl a compatible desktop hostControl another host or allow control of this computer
    AI automationWebMCP controller in supporting browsersMCP API, local automation and remote desktop tools
    Picture-in-pictureAvailable browser PiP APIsResizable, always-on-top native window
    System integrationPWA installation and share target where supportedTray, launch at login, close behavior and native notifications

    The supported desktop target is Windows 10 22H2 / Windows 11 on x64 with WebView2 120 or newer. Native system audio and input features depend on OS capabilities. Browser media capture, clipboard access, notifications, and PWA integration depend on browser support and permissions; use HTTPS or localhost for browser capture.

    Features

    Conversations and rooms

    • Private conversations and online room group chat with text, file attachments, forwarding, delivery status, and locally stored history.
    • Conversation search, labels, and activity ordering, alongside recent-room selection with saved connection details.
    • Per-client and per-room settings for remote-control requests, access to shared files, and automatic downloads.
    • Message, control-request, speed-test, and completed-transfer notifications, with configurable previews and sound. Windows notifications support inline replies and request approval.

    Device pairing and permissions

    • Verify each device's identity before exchanging application data. First-use pairing is automatic after a valid signed proof; later connections must prove continuity with the saved device identity and pairing keys.
    • If identity verification fails, application access is blocked and a warning opens the device's permission settings. Request re-pairing there and let the other device explicitly approve it through a notification.
    • Manage receiving content, screen sharing, shared-file lists, remote control and automation separately for each device. Joining a room does not grant remote-control or Shell permission.
    • Approve remote automation for the current connection, or save Always allow or Deny for its permission group. Normal reconnection preserves saved settings and verifies the device again before applying them.

    Pairing belongs to the local browser or desktop profile. It is separate from MCP client tokens and is not shared through an account. See device pairing and content permissions.

    File library and transfers

    • Import files or folders through a picker or drag and drop, and send or forward files from chat or the library. Folders are packaged as ZIP archives.
    • Track progress, pause, resume, retry, or cancel transfers, reusing cached chunks and already available content.
    • Keep a content-deduplicated local library with explicit sharing controls and a shared file list available across rooms.
    • Browse a connected member's shared files with search, sorting, previews, and batch downloads. Downloads enter the library and task list without adding chat messages.
    • Room attachments are downloaded on request by default. Enable small-file automatic downloads per room with a shared size limit in Transfer settings.
    • Choose browser storage or a real directory in File storage settings. Web defaults to IndexedDB; desktop defaults to a local directory. Supported browsers can mount a directory after permission is granted, and directory changes synchronize with the file library.
    • Automatically migrate old IndexedDB files and resumable chunks with progress feedback. Old file databases are removed only after the new data is verified.
    • Preview files with cached video thumbnails. Save IndexedDB files to your device, use Save As for directory files, or reveal a Windows file in Explorer.
    • Save a batch to one destination directory, resolve name collisions with overwrite, skip or keep both, and apply a choice to all remaining conflicts. Imports and saves show progress and cancellation controls and continue when the file-cache dialog is closed.

    Importing or receiving a file does not automatically share it. Newly sent files are shared automatically; sharing can be turned off in the library. Peers can browse only complete, shared content when their file-list permission allows it.

    Changing the default storage affects new files; existing files, active transfers and recordings keep their original location. Unfinished directory files use a .part suffix and cannot be previewed or shared. If a browser rejects a filename, directory storage can add .weblink on disk while keeping the original name in Weblink and transfers. Browser directory access and batch saving depend on picker support and permission; reopening the page may require authorization again.

    Meetings and screen sharing

    • Share a camera, microphone, and multiple screens with grid or featured layouts, pinning, fullscreen, picture-in-picture, and independent audio controls.
    • Adjust resolution, frame rate, and bitrate during a session, and choose audio formats supported by the current device and runtime.
    • On Windows, select displays or windows with previews, use DXGI or Windows Graphics Capture, and choose available software encoders or H.264/HEVC hardware encoding. High-refresh options follow connected displays.
    • Supported Windows hardware encoders receive GPU textures without a CPU frame round trip. Automatic selection prefers the capture GPU's encoder, while unsupported paths retain the memory-input fallback. Software and hardware encoders share variable-frame-rate scheduling for static screens.
    • On compatible NVIDIA devices, prefer native NVENC for H.264/HEVC, with Media Foundation fallback if it is unavailable or fails. Intel and AMD use their available Media Foundation encoders. Statistics identify the active encoder.
    • Compatible viewers share native encoders, with keyframe delivery for viewers joining an active stream. Receiver decode failures can trigger another supported codec, and Media Foundation output changes are renegotiated.
    • Windows uses one native WebRTC connection per peer for media, chat, files and remote control. Its GPU renderer displays hardware-decoded textures directly and uploads software-decoded frames. Web viewers use the browser's decoder and video element. Both peers must support the shared connection to use native screen sharing with the current desktop app. Hiding the local preview pauses its rendering while remote streaming continues.
    • Inspect stream statistics, ICE routes and connection state, and run peer throughput tests from the application.

    HEVC requires a compatible hardware encoder and a receiver with H.265 support in WebRTC. Native screen streams currently use 8-bit SDR YUV 4:2:0. Capture and codec availability are reported by the application; see native media details.

    Recording

    • Record one selected local or remote camera or shared screen, with only that source's associated audio. Start from its video menu; pause, resume or stop and save from the header status.
    • Pause and resume into one file. Closing a menu or the file-cache dialog does not stop recording; source removal or leaving the meeting finishes the recording.
    • Save continuously to the storage selected at the start. An unfinished entry remains in the file library until the recording is finalized with duration and seek metadata. A completion notification can open Web preview or the desktop system player, using the shared foreground/background notification settings.
    • Reuse supported encoded video and audio from the existing stream to avoid encoding them again. Web and desktop share this path, with MediaRecorder and native audio fallbacks when reuse is unavailable. Bounded recording queues keep slow storage from blocking normal stream delivery.
    • Choose Automatic, MKV or MP4 in settings. Automatic uses MP4 for H.264/H.265 and MKV for other supported video codecs. Reused G.722, PCMU or PCMA audio also uses MKV to preserve the original audio.

    Recording availability depends on browser APIs and the source's codecs. External players must support the codecs inside the chosen container. Browser directories may need additional time to finalize a recording; unfinished recordings are not guaranteed to be playable or recoverable after a crash or forced shutdown.

    Remote control and clipboard

    • Control a shared Windows display with a mouse and keyboard, including cursor appearance synchronization and configurable input-release and host emergency shortcuts.
    • Use mobile trackpad gestures or direct multi-touch, soft-keyboard and IME input, configurable sampling, and optional keyboard visibility following remote text focus.
    • Enable remote clipboard synchronization for text, rich text, images, and files. Copied files can go to the local clipboard or file library, depending on client capabilities; folders are transferred as ZIP archives.
    • Enable file drag-and-drop onto the remote screen to copy local files into compatible Windows applications. This copies files into the remote computer; dragging files out into the controller's operating system is not supported.

    Clipboard synchronization and remote file drop are off by default and require an active control grant. Their file transfers share a per-operation size limit of 64 MiB by default, configurable from 1 to 512 MiB. Hosts can approve or decline requests, remember a client's permission, and revoke control locally. See remote-control behavior.

    AI automation with MCP and WebMCP

    Connect an MCP client to a Windows desktop to inspect screens and accessibility trees, control keyboard and mouse input, manage screen sharing, run Shell jobs, and read diagnostics. Calls can target that desktop or a directly connected, paired desktop; each destination enforces its own permissions.

    1. On the desktop providing the MCP endpoint, open Settings → Automation, enable MCP, and create a Local MCP token for the client.
    2. Copy the URL and Authorization header from the token creation dialog into the MCP client. The default endpoint is http://127.0.0.1:32100/mcp.
    3. Enable automation on each desktop that may be operated. A desktop used only to discover and forward calls can keep its own automation switch off.
    4. For remote control, join the same room, complete device pairing, and approve the requested automation group on the target. devices.list supplies the peer IDs used by the tools.

    The two switches are independent and default to off. A supporting browser has only the MCP switch for WebMCP registration; it can control connected desktops but cannot execute local OS input or Shell commands. WebMCP is unavailable in browsers that do not provide document.modelContext.

    • Screenshots return PNG image content, fitting within 1024 × 1024 by default. Use a window or rectangle crop for detail, or request up to 2048 pixels per axis. Pointer coordinates always use the physical desktop coordinate system.
    • Keyboard input targets the foreground window by default. Optional window binding ends the input lease when that window loses focus or closes. Moving Weblink itself into the background keeps the automation session active.
    • Shell jobs support stdin, EOF, output cursors and target-specific signals, with up to ten concurrent jobs per device. Windows prefers PowerShell 7 (pwsh), falls back to Windows PowerShell when absent, and defaults to UTF-8. Jobs use pipes rather than a PTY and run with the app account's privileges.
    • Active AI control uses a sparkle pointer in the header and matching screen labels. The host's configured emergency-stop shortcut also stops automation. MCP token expiry remains independent of remote session approvals.

    See automation setup, tools and permissions for a connection example, tool arguments and execution limits.

    Connections and local data

    flowchart LR
        A[Client A] -->|Join room / SDP / ICE| S[Signaling]
        B[Client B] -->|Join room / SDP / ICE| S
    
        A <-->|WebRTC Data / Media| B
    

    Both browser and desktop clients use WebSocket signaling for room membership, peer discovery, and WebRTC negotiation. Messages, files, remote input, and media use WebRTC channels. When a direct route is unavailable, TURN can relay the encrypted traffic.

    Room passwords protect signaling payloads during negotiation. Display names and avatars are exchanged over WebRTC rather than published in signaling presence. The signaling service does not store chat history or files.

    Room messages reach currently connected members; there is no server-side offline message delivery. History, file metadata and preferences stay in the local browser or desktop WebView profile. File contents live in IndexedDB or the selected local directories. Browser and desktop profiles are separate and are not automatically synchronized. Access to a peer's shared files requires that peer to be connected.

    Settings and desktop MCP token hashes/listener configuration use localStorage; device identity, pairing keys and chat data use the profile's IndexedDB storage. Clearing profile storage removes that profile's identity and saved configuration. Local desktop development uses a separate WebView profile from built applications; development builds and stable builds share the existing built-app profile.

    Shared code and versions

    The SolidJS + TypeScript application lives in apps/web. The Tauri app in apps/desktop builds that same frontend with a desktop adapter, shared contracts in packages/platform, and native capture/input implementations in crates.

    Web and desktop use one application version from apps/web/package.json. About, copied version information, build metadata, and desktop installers all use this version. Stable Windows builds offer manual update checks in Settings → About and optional automatic checks at startup and hourly. Installed builds support signed, user-confirmed updates; portable builds link to the matching ZIP for manual replacement. Checks never download or install automatically.

    Self-hosting

    Host the static Web build or use the included Docker setup, then configure a WebSocket signaling backend:

    Configure STUN/TURN for your network as needed. Signaling servers must support the v2 join acknowledgment. See deployment for hosting, environment variables, managed TURN credentials, and LAN HTTP behavior.

    Development

    Use the Bun version pinned in root package.json (currently 1.4.2). Clone the repository with its signaling submodules:

    git clone --recurse-submodules https://github.com/99percentpeople/weblink.git
    cd weblink
    bun install --frozen-lockfile
    cp .env.example .env
    bun dev
    

    This starts the Web app and local Bun signaling. Configure ports and the local signaling URL in .env. For an existing checkout, initialize submodules with git submodule update --init --recursive before installing dependencies.

    For desktop development, install the Windows prerequisites in desktop development. If bun dev is already running, reuse its signaling server; otherwise, start local signaling in one terminal:

    bun --env-file=.env run dev:server
    

    Then start the desktop app in another terminal:

    bun --env-file=.env run dev:desktop
    

    Common checks and builds, also from the repository root:

    bun run lint
    bun run test:unit
    bun run test:integration
    bun run build
    bun run check:desktop
    bun run build:desktop --bundles nsis
    

    The NSIS installer build runs on Windows. See workspace development for the repository layout and testing for focused checks.

    Learn more