The simple way to share files and notes on your local network.
Why??
My local network is an absolute zoo of hardware: a couple of PCs, MacBooks, an iPhone, tablets, and random Pis scattered everywhere. Half of them are legacy devices that refuse to talk to cloud services, and others are completely un-accounted (no Apple/Google logins). Copy-pasting text or flinging a quick file across them was driving me insane—and dumping API tokens onto public pastebins is obviously a huge YIKES.
Tired of bloated solutions that demand Docker stacks, npx bloat, or sketchy .msi installers that pollute your filesystem with a gigabyte of junk, I wrote my own thing:
A dead-simple, disposable, one-click LAN file/text drop. Think of it as a ultra-dumbed-down local Google Drive with basic inline editing and previewing. No login, no setup wizard (just allow port access on your firewall), and super easy to spin down when you're done.
Data persistence? It’s literally just a single SQLite DB. Move the file, move your data.
Port forwarding to the open internet? There's literally no auth. May the odds be ever in your favor.
Simple Multicast Share is a self-contained LAN file manager designed to work without accounts, a separate web server, or runtime setup. Download one binary, run it, and open the advertised mDNS address from another device on the same network.
- One binary: the Rust server and complete React interface are bundled together.
- One database: files, folders, notes, and preferences are stored in one SQLite file.
- No setup: mDNS is enabled by default, so there is no server configuration or IP address to remember.
- Local-first: share through a browser on your trusted home, studio, or office network.
| File browser | File preview (code files) |
|---|---|
![]() |
![]() |
| File preview (3D models) | Debug Database inspector (saved file data) |
![]() |
![]() |
-
Download the binary for your operating system.
-
Run it:
simple-multicast-share -
On another device connected to the same local network, open:
http://<your-computer-name>.local:7777
The server binds to all network interfaces, discovers the computer name, and
advertises the web interface over mDNS automatically. Upload or drag and drop
files, organize them into folders, or create and edit notes directly in the browser. The adjacent
simple-multicast-share.db file contains all durable application data.
If a device does not support .local mDNS names, open the host computer's LAN IP
address instead. At startup, the server prints a ready-to-use URL for every active
local network address, for example http://192.168.1.25:7777. No application
configuration is required.
- Create and edit notes or source/configuration text in a CodeMirror editor with automatic syntax highlighting
- Upload by picker or drag-and-drop, replace, rename, move, download, and recursively delete
- Browse for a move destination, including nested folders, parents, and the root
- Create folders and organize shared files
- Distinct icons and a file-type column, with sortable list headers and grid-view sort controls for name, type, size, and modified time
- Full-window drag-and-drop upload target for the currently open folder
- Grid/list views and system/light/dark themes persisted in SQLite
- Browser previews for images, PDF, audio, video, and STL/OBJ/FBX/glTF/GLB 3D models
- Local Office previews for DOCX/DOCM, XLSX/XLSM/XLSB/XLS/ODS, and PPTX/PPTM/PPSX/PPSM/POTX/POTM
- UTF-8 source/config editing with optimistic revision checks
- Image crop and freehand, arrow, rectangle, and text annotations
- Read-only ZIP, TAR, TAR.GZ, TGZ, and GZ inspection with entry, size, and expansion guards
- mDNS advertisement as
<hostname>.localand_http._tcp.local - Debug database inspector for browsing schemas/rows and updating typed cells
The interactive 3D viewer provides orbit, pan, zoom, reset, grid, wireframe, and animation playback. Self-contained STL, OBJ, FBX, glTF, and GLB files work directly. Referenced OBJ material libraries, textures, and glTF buffers are resolved from files and subfolders beside the model in the virtual file manager; external internet resources are intentionally not fetched.
Office previews are rendered locally in the browser; document contents are never
sent to a cloud viewer. Legacy binary .doc and .ppt files require a native
conversion engine and therefore show download/save-as-modern-format guidance.
Spreadsheet previews cap rendered DOM output at 500 rows by 100 columns per sheet
to keep the interface responsive while preserving the original file in storage.
Modern zipped Office files also pass the server's archive entry, expanded-size,
and compression-ratio guards before rendering.
For files whose extension and MIME type are unknown, the preview dialog provides an Open as selector for every supported text, image, media, PDF, archive, 3D, and Office parser. This does not rename or modify the file. Incompatible content produces an explicit error dialog and lets the user choose another preview type.
Prebuilt releases require no development tools. The following instructions are only for building the project from source.
Requirements are a current Rust toolchain, Node.js, and Corepack.
corepack pnpm install --frozen-lockfile
corepack pnpm build
cargo build --releaseThe web build must run before Cargo so web\dist is embedded. The resulting
target\release\simple-multicast-share.exe needs no web assets or Node.js at
runtime. The release profile favors a small distributable binary with size
optimization, full link-time optimization, a single codegen unit, stripped
symbols, and abort-on-panic behavior.
For development:
cargo run -- --no-mdns --port 3000
corepack pnpm --filter web devThe Vite development server proxies /api to 127.0.0.1:3000.
simple-multicast-share [--port <PORT>] [--mdns|--no-mdns]
[--db <PATH>] [--hostname <NAME>]
--portdefaults to7777.- mDNS is enabled by default;
--no-mdnsdisables it. --hostnameoverrides the advertised host label.--dbselects the SQLite file. By default, the executable name with a.dbextension is created beside the executable.
The HTTP listener always binds to 0.0.0.0. With the defaults, open
http://<hostname>.local:7777 from another device when local mDNS is supported,
or use one of the local IP address URLs printed when the server starts.
The SQLite database is the single durable persistent store and should be backed up
as one unit. SQLite may create temporary -wal and -shm working files beside it
while the server is running; these are implementation details rather than separate
application data stores. Stop the server before copying the database for the
simplest consistent backup.
The application has no configured file upload cap and streams request bodies into SQLite. SQLite's compiled BLOB maximum, its incremental BLOB API range, free disk space, and operating-system limits remain unavoidable. Text editing is limited to 16 MiB and archive inspection to 100 MiB because those preview operations must materialize content in memory. Archive expansion is additionally guarded against excessive entries and decompression ratios.
There is deliberately no authentication. Anyone who can reach the port can read, create, replace, move, and delete all content in the database. Run this only on a trusted LAN and use host firewall rules to restrict network access. Do not expose it directly to the internet.
The bug icon opens a live SQLite inspector. Its edits bypass normal file-manager
workflows, though SQLite constraints remain active, so invalid changes can make
data inaccessible. It does not permit arbitrary SQL or access to internal
sqlite_* tables. BLOB cells are edited as UTF-8 when valid and Base64 otherwise.
The inspector also shows the main database file size, WAL size, and reclaimable
free-page space. Its confirmed Compact database action checkpoints WAL and runs
VACUUM; this rewrites the database, may briefly block requests, and needs
temporary free disk space.
See the API contract for endpoint details.
Pull requests and pushes to main or master run frontend lint/tests/build plus
Rust formatting, tests, Clippy, and a locked release build. The workflow is defined
in .github/workflows/ci.yml.
Pushing a tag such as v0.1.0 builds and publishes the standalone binary directly
for Windows x86-64 and ARM64, Linux x86-64 and ARM64, and macOS x86-64 and ARM64
with generated GitHub release notes. There are no ZIP or TAR wrappers. The release
can also be run manually to produce downloadable workflow artifacts without
publishing a GitHub release.
Simple Multicast Share on GitHub
Author: Jamie Phan



