LanDrop is a single-binary tool for moving text and files between devices on the same LAN. Run it on one machine, open the address (or scan the QR code) from any other device, and paste text or drop files in a browser. No accounts, no cloud. The web UI is embedded in the binary.
macOS (Homebrew)
v0.1.0 is not code-signed yet, so it is not on Homebrew. The cask is published from the first signed release; until then use the install script below.
brew install lupguo/tap/landropUpgrade with brew upgrade landrop. The Homebrew cask is macOS-only. More on using Homebrew (upgrade, uninstall, troubleshooting): docs/homebrew.md (Chinese).
macOS / Linux (install script)
curl -fsSL https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.sh | shThe script downloads the release for your OS and CPU, verifies its SHA-256 checksum, and installs landrop to /usr/local/bin if writable, otherwise to ~/.local/bin (it never uses sudo). Options, set as environment variables:
curl -fsSL https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.sh | LANDROP_VERSION=v0.1.0 LANDROP_INSTALL_DIR="$HOME/bin" shLANDROP_VERSION: tag to install (default: latest release)LANDROP_INSTALL_DIR: install directory
Piping a script into a shell runs whatever it contains: you can read scripts/install.sh first, or download it and run it yourself.
Windows (PowerShell)
irm https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.ps1 | iexInstalls landrop.exe to %LOCALAPPDATA%\Programs\landrop and adds it to your user PATH (open a new terminal afterwards). To pin a version, set $env:LANDROP_VERSION = "v0.1.0" first. Read scripts/install.ps1 before piping it to iex if you want to check it.
Manual download
Download the archive for your platform from the Releases page, together with checksums.txt:
landrop_darwin_arm64.tar.gz,landrop_darwin_amd64.tar.gzlandrop_linux_amd64.tar.gz,landrop_linux_arm64.tar.gzlandrop_windows_amd64.zip
Verify it, then extract and put landrop somewhere on your PATH:
shasum -a 256 -c checksums.txt --ignore-missing # macOS
sha256sum -c --ignore-missing checksums.txt # Linux# Windows: compare the output with the matching line in checksums.txt
Get-FileHash -Algorithm SHA256 .\landrop_windows_amd64.zipCheck the installed version with landrop --version (prints landrop v0.1.0 (<commit>, <date>)).
Maintainers: see docs/release-setup.md (Chinese) for how releases are set up.
landropThe terminal prints the LAN addresses, a 4-digit access code and a QR code. Open the address on another device, enter the code, and paste text or drop files. A device that scans the QR code (or opens the ?t= link) joins without typing the code.
Usage:
landrop [flags] start the LanDrop server
landrop send <file>|- send a file (or stdin with -) to the running server
Flags:
--dir string directory to share read-only for browsing
--keep keep temporary files on exit
--lang string terminal language: en|zh|ja|ko (env LANDROP_LANG) (default "en")
--max-size string maximum file size, e.g. 512MB or 4GB (default "4GB")
--name string mDNS name, reachable as <name>.local (default "drop")
--no-auth disable the access code (anyone on the network can join)
--no-open do not open the browser on start
--no-save do not autosave received files to ~/Downloads/LanDrop
--port int listen port; tries the next one if busy, up to 10 times (default 9958)
--ttl duration how long items are kept (default 24h0m0s)
--version print the version and exit
-h, --help show this help
With LanDrop running on this machine:
landrop send ./report.pdf # send a file
cat app.log | landrop send - # send stdin (text up to 1 MiB becomes a message, larger input a file)- macOS: v0.1.0 is not signed. The install script works as-is (curl downloads are not quarantined). If you downloaded the archive in a browser and Gatekeeper blocks it, run
xattr -d com.apple.quarantine landrop. Later signed releases are notarized by Apple; their first run checks the notarization online. - Windows: the binary is not code-signed, so SmartScreen may warn. Click "More info", then "Run anyway".
- Windows firewall: allow inbound TCP on the port (run in an elevated prompt):
netsh advfirewall firewall add rule name="LanDrop" dir=in action=allow protocol=TCP localport=9958 - macOS Local Network permission: on first run macOS may ask whether the terminal app may find devices on your local network. Allow it, or other devices (and
<name>.local) cannot reach LanDrop. It can be changed in System Settings > Privacy & Security > Local Network. - AP / client isolation: if other devices cannot connect, check that the router or guest Wi-Fi does not have "AP isolation" / "client isolation" enabled; it blocks device-to-device traffic.
drop.local(mDNS) may not resolve on every network; use the IP address printed in the banner.
- LanDrop speaks plain HTTP on your LAN. Anyone who can sniff the network can see traffic. Use it only on networks you trust.
- Access is gated by a 4-digit code. Five consecutive wrong attempts lock that IP for 60 seconds, and more than 30 failures overall within a minute lock all code attempts for 60 seconds. Existing sessions and QR/token links are unaffected.
- Share links are one-time by default (1 download, 10 minutes); invalid or used links return HTTP 410. Message (text + attachments) links have no download limit and work until they expire.
--no-authdisables the code entirely: anyone on the network can view, send and download. Use it only on networks you fully trust.- Only the host machine (loopback) can remove other devices.
Requires Go 1.26 and Node 22.
make all # web UI + bin/landrop
./bin/landrop
make test # Go and web unit tests
make e2e # Playwright smoke test (needs: cd web && npx playwright install chromium)
make dist # cross-compile darwin/arm64, darwin/amd64, windows/amd64, linux/amd64, linux/arm64 into dist/
make release-snapshot # local dry run of the release build (goreleaser, no publishing)LanDrop 是一个单文件工具,用于在同一局域网内的设备之间传文本和文件。在一台机器上运行,在其他设备的浏览器里打开地址(或扫码),即可粘贴文本、拖入文件。无账号、不经过云端;Web 界面已内嵌在二进制中。
macOS(Homebrew)
v0.1.0 还没有代码签名,所以暂未上架 Homebrew。第一个签名版本发布时会同步上架;在那之前,请使用下面的安装脚本。
brew install lupguo/tap/landrop升级:brew upgrade landrop。Homebrew cask 仅适用于 macOS。升级、卸载、常见问题等完整说明见 docs/homebrew.md。
macOS / Linux(安装脚本)
curl -fsSL https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.sh | sh脚本会按系统和 CPU 下载对应版本,校验 SHA-256,然后安装到 /usr/local/bin(不可写时安装到 ~/.local/bin,脚本从不使用 sudo)。可用环境变量:
curl -fsSL https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.sh | LANDROP_VERSION=v0.1.0 LANDROP_INSTALL_DIR="$HOME/bin" shLANDROP_VERSION:指定版本标签(默认最新版)LANDROP_INSTALL_DIR:安装目录
把脚本直接管道给 shell 执行意味着运行其中的全部内容,建议先阅读 scripts/install.sh,或下载后自行运行。
Windows(PowerShell)
irm https://raw.githubusercontent.com/lupguo/landrop/main/scripts/install.ps1 | iex安装 landrop.exe 到 %LOCALAPPDATA%\Programs\landrop 并加入用户 PATH(之后请新开终端)。如需指定版本,先设置 $env:LANDROP_VERSION = "v0.1.0"。想先检查脚本,请阅读 scripts/install.ps1。
手动下载
从 Releases 页面 下载对应平台的压缩包和 checksums.txt:
landrop_darwin_arm64.tar.gz、landrop_darwin_amd64.tar.gzlandrop_linux_amd64.tar.gz、landrop_linux_arm64.tar.gzlandrop_windows_amd64.zip
校验后解压,把 landrop 放到 PATH 中的目录:
shasum -a 256 -c checksums.txt --ignore-missing # macOS
sha256sum -c --ignore-missing checksums.txt # Linux# Windows:将输出与 checksums.txt 中对应行比对
Get-FileHash -Algorithm SHA256 .\landrop_windows_amd64.zip安装后可用 landrop --version 查看版本(输出 landrop v0.1.0 (<commit>, <date>))。
维护者请参阅 docs/release-setup.md(中文)了解发布配置。
landrop # 加 --lang zh 可让终端输出中文终端会显示局域网地址、4 位访问码和二维码。其他设备打开地址并输入访问码即可;扫码或打开带 ?t= 的链接则无需输入访问码。
landrop send ./report.pdf
cat app.log | landrop send -参数列表见上方 Flags(landrop --help --lang zh 可看中文说明)。
- macOS:v0.1.0 未签名。用安装脚本安装可以直接运行(curl 下载的文件不会被加上隔离标记)。如果是在浏览器里下载的压缩包,被 Gatekeeper 拦截时,执行
xattr -d com.apple.quarantine landrop。之后的签名版本会经过 Apple 公证,首次运行时会联网校验。 - Windows:二进制未做代码签名,SmartScreen 提示时点击"更多信息",再点"仍要运行"。
- Windows 防火墙:以管理员身份执行
netsh advfirewall firewall add rule name="LanDrop" dir=in action=allow protocol=TCP localport=9958。 - macOS 本地网络权限:首次运行时请允许终端访问本地网络,否则其他设备无法连接。
- AP / 客户端隔离:如果其他设备连不上,请检查路由器或访客 Wi-Fi 是否开启了"AP 隔离"。
- 局域网内使用明文 HTTP,请只在可信网络中使用。
- 访问码为 4 位数字;同一 IP 连续输错 5 次锁定 60 秒,全局 1 分钟内失败超过 30 次则暂停所有输码尝试 60 秒。
- 分享链接默认一次有效(1 次下载、10 分钟),失效返回 HTTP 410。消息(文字 + 附件)的分享链接不限下载次数,在过期前一直有效。
--no-auth会关闭访问码,网络内任何人都能查看和发送,请谨慎使用。
需要 Go 1.26 和 Node 22:make all 后运行 ./bin/landrop;测试 make test;冒烟测试 make e2e;交叉编译 make dist;本地发布演练 make release-snapshot。

