
bitbang-cli v0.5.0
通过端到端加密的点对点 WebRTC,使用浏览器或 CLI 即可建立对机器的安全远程访问,支持交互式 shell、文件传输和 Web 代理,无需端口转发或账户。
BitBang CLI
bitbang 是一个单一静态二进制文件的远程访问多功能工具。通过任意浏览器,即可获得交互式 shell 和对远程机器的文件浏览器访问权限。你还可以访问该机器网络上的 Web 应用。除浏览器外,它还支持 TCP 端口转发、文件复制和终端共享。它无需账户或配置——开箱即用。

在你要访问的机器上:``` curl -sSfL bitba.ng/install | sh bitbang serve
`serve` 会打印一个 URL。在任何浏览器中打开它,你就能获得一个终端、一个文件浏览器,以及通往该机器网络的代理——或者从另一个终端用 `bitbang connect <url>` 连接同一台机器,这会添加端口转发(`-L`)和文件复制(`bitbang cp`)。连接是端到端加密且点对点的;`bitba.ng` 服务器负责介绍两端,然后退出。
`bitbang` 是一个单一的静态 Go 二进制文件。它是 [BitBang 项目](https://github.com/richlegrand/bitbang) 的一部分;这份 [白皮书](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) 深入介绍了其设计。
## 对比
| | ngrok | Tailscale | `bitbang` |
| ------------------------------ | ---------------------- | ------------------------------ | ------------------- |
| 首次使用前的设置 | 账户 + authtoken | 账户 + 每台设备登录 | **运行一条命令** |
| 要分享某物,你运行 | 一个 Web 服务器,外加 ngrok | 他们的客户端在两台机器上 | **`bitbang serve`** |
| 远端浏览器获得的内容 | 你已经在运行的 Web 服务器 | 什么都没有——它需要他们的客户端 | **一个终端、一个文件浏览器,以及远程网络上的 Web 应用** |
| 数据路径 | 他们的服务器 | P2P(中继回退) | **P2P(中继回退)** |
| 端到端加密 | 默认不启用 | 是 | **是** |
## 快速食谱
**访问家中的服务**
- [从任何地方挂载你的家庭 NAS(SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [从任何地方观看你的媒体库(Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [从任何地方使用你自己的 LLM(Ollama、Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [查看你的安防摄像头(Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [在不暴露的情况下访问你的家庭自动化(Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [打印到你的家用打印机(IPP、CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)
**进入一台机器**
- [在 NAT 后面的机器上获取 shell](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [从手机获取 shell](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [远程桌面进入 Windows 机器(RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [访问 Linux 或 Mac 桌面(VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [SSH 到没有开放端口的机器(OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [设置无头 Raspberry Pi](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)
**与他人分享**
分享只需给某人一个唯一的 URL 或二维码,让他们获得访问权限。权限可以定制,并可设置为在几分钟、几小时等时间内过期。
- [分享文件而无需上传到任何地方](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [向某人展示你的项目](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [给某人一个会过期的访问权限](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [从手机查看你的代理会话(Claude Code、tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [修复别人的路由器](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)
**开发与设备**
- [从你的开发机器访问数据库(Postgres、MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [同步无法互相发现的设备(Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [从浏览器观看机器人(ROS、Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)
**技巧**
- [转发监听器暴露了什么](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [让你局域网上的其他机器使用转发](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [已知无法工作的情况](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)
## 使用 `bitbang`
每个连接都有两端:一个**监听器**(`bitbang serve`,运行在被访问的机器上)和一个**连接器**(浏览器,或 `bitbang` CLI,运行在发起访问的机器上)。一个监听器 URL 可同时服务两种连接器。
### 监听器:`bitbang serve````
bitbang serve # everything: shell + proxy + files + forward
bitbang serve shell # just a terminal
bitbang serve files ~/share # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080 # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80 # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22 # just TCP, for `connect -L`
bitbang serve shell files ~/share proxy nas.lan:8096 # any combination
每个都会打印一个二维码、URL 和一个配对码。该模式决定了监听器究竟能做什么:serve shell 没有可授予的转发权限,而仅转发的监听器永远不会启动 shell,因此也就没有可提升的权限。
一个值得了解的默认行为:转发和代理可以到达监听器能到达的任何主机:端口,而不仅仅是你原本设想的那一个,因此为数据库分发的链接也能到达该网络的其余部分。在单词后指定目标名称可缩小范围——forward db.internal:5432 只到达该目标,其他一概不达。
共享正在运行的会话:bitbang share
serve shell 会启动一个新的 shell。而 share 则发布一个已经在运行的 tmux 会话:```
bitbang share # publish the current tmux session
bitbang share --read-only # publish without a control URL
bitbang share status|stop|rotate
该命令在发布后立即返回,因此对于已在进行的任务,可以使用 `Ctrl-Z`、`bitbang share`、`fg` 来恢复。托管需要在 Unix 或 WSL 上使用 tmux 3.2+。原生 Windows 客户端可以打开 URL,但无法托管共享。
默认情况下,该命令会打印两个 bearer URL:
- **控制 URL** 可以输入,权限与本地键盘相同。一次只能连接一个控制器。
- **查看 URL** 仅限观看。输入在到达 tmux 之前即被丢弃,最多可有 `--max-viewers` 个查看者同时连接(默认 16)。
`--read-only` 完全省略控制凭据。查看者和控制者的限制在每次连接的整个生命周期内都有效,即使在其打开 shell 之前也是如此。
共享默认持续运行直到停止;`--ttl` 设置生命周期(例如 `--ttl 1h`)。共享 URL 是临时的,绝不会保存到 `devices.json` 中。`share stop`、TTL 到期或移除源会话会断开远程对等连接,但不会停止源会话。
重新运行 `bitbang share` 会重新打印正在运行的共享的 URL。如果你传入的标记与正在运行的共享不一致(例如对具有控制 URL 的共享使用 `--read-only`),它会明确说明,而不是返回旧 URL;`bitbang share rotate` 会用使用新标记的共享替换当前共享。
后台工作进程在分离的 `_bbshare_*` tmux 管理会话中运行,因此无需管理守护进程或 PID 文件。
共享不会更改任何 tmux 选项。使用 tmux 默认的 `window-size latest` 时,窗口会跟随活动的读写客户端;单独的查看者仍会提供唯一可用的尺寸。如果 `window-size` 已被覆盖,`share` 会报告该情况,但不会更改用户的配置。
### 分发受限访问:`bitbang link`
一个监听器、一个 URL,以及你需要的任意数量的**访问链接**。每个链接都是该同一 URL 上的一个独立代码,授予监听器所提供功能的子集,并可选地在固定时间失效:```
bitbang link edit # add entries in $EDITOR
bitbang link ls # what you have handed out
bitbang link rm <label> # revoke one
bitbang link qr <label> # its URL and QR code
一条条目是 ~/.bitbang/bitbang/links.json 中的一行 JSON。写一条不带代码的条目,在其控制台重新加载监听器,它就会生成一条:```json
[
{"label": "ana", "grant": "files", "expires": "2026-09-01T00:00:00Z"},
{"label": "ben", "grant": "files /srv/photos"},
{"label": "dev", "grant": "shell forward 127.0.0.1:5432"}
]
(empty)```
0) owner files forward proxy shell
https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#_vtQ0JCPe7s
1) ana files expires in 6d
https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#T-Ty_HhvLfY
2) ben files /srv/photos
https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#L6La8OzBO74
3) dev forward 127.0.0.1:5432 shell
https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#8kmI3LYzB7E
owner 是身份自身的代码,授予监听器所提供的一切;请改发其他代码之一。控制台接受标签或旁边的数字,因此 rm 2 和 rm ben 效果相同。
grant 以 serve 所接受的措辞书写,并且只能收窄监听器已提供的内容。这意味着链接并不局限于挑选能力:它可以指定共享文件夹的子目录、转发目标的一个子集,或 shell 的单个命令。省略 grant,链接便授予监听器所提供的一切。若请求超出监听器的范围,控制台会以 serve 会给出的相同消息予以拒绝。
标签用于标识链接,而非其条款,因此两个人可以持有授权和过期时间完全相同的链接,而你仍可撤销其中一个而不影响另一个。
撤销和过期会波及已打开的会话:连接关闭,持有者会被告知原因,而非悄然无声。而过期的代码会被停用而非暂停——续期条目会生成新代码,因此你已发送的 URL 仍然失效。
使用 6 位代码配对
当你无法粘贴 URL 或扫描二维码时(例如在通话中,或处于喊话距离内),bitbang serve 还会打印一个简短的配对代码。对方打开 bitba.ng/<code>(或运行 bitbang connect <code>),其屏幕会显示第二个 6 位数字,然后他们向你读出那个数字。你输入该数字以批准。中间人无法使两个数字匹配,而配对会保存设备连接凭据以供下次使用,例如 bitbang connect nas1。如果你了解 Magic Wormhole,其形式类似——一个口头代码,安全地介绍两台机器相识。

自带 TURN 服务器
大多数连接直接点对点进行。当两端都位于无法打洞的 NAT 之后时,流量需要中继,默认情况下由我们提供。-ice-servers 将监听器指向你自己的服务器:```
bitbang serve -ice-servers ~/turn.json
监听器在注册时将配置交给信令服务器,服务器再将其提供给任何连接方——因此两端都使用你的中继,我们的服务器从不参与其中。任何 coturn,或像 Cloudflare 或 Twilio 这样的托管提供商,都可以使用。
该文件是 JSON 格式,采用你的提供商交给你的以下三种形式之一:```json
[{"urls": ["turn:turn.example.net:3478"], "username": "user", "credential": "pass"}]
I need the input content to translate. Please provide the chunk of Markdown content you'd like me to translate from English to Chinese.```json {"ice_servers": [{"urls": "stun:stun.example.net:3478"}]}
I need the input content to translate. Please provide the chunk of Markdown content you'd like me to translate from English to Chinese.```json
{"iceServers": [{"urls": ["turn:turn.example.net:3478"], "username": "u", "credential": "p"}]}
urls 接受一个字符串或列表;username 和 credential 用于 TURN,并且可以
在仅 STUN 的条目中省略。路径可以是绝对路径、相对路径或以 ~ 开头的路径。如果某个文件
无法解析,监听器会在启动时停止,而不是静默回退。
如果某个会话在未被要求的情况下最终通过中继传输,bitbang connect 会明确告知,
而不是让你疑惑为什么感觉变慢了。监听器无论如何都会记录这一点
(通过 via RELAY),并且 -relay / -norelay 会在你排查路径时强制明确这一选择。
值得说明的是:这关乎谁承载字节,而非谁能读取它们。中继 只会看到 DTLS 密文,包括我们自己的。当你需要超出我们所能提供的 TURN 服务时(我们目前限制时长),请自行运行。
从浏览器连接
打开 URL。根据所提供的内容,你会得到:
- Shell —— 页面中的完整终端(支持颜色、调整大小、复制/粘贴)。
- Files —— 浏览、预览、下载和上传。
- Proxy —— 输入局域网地址(
nas.local、192.168.1.10:8080、localhost:3000/admin),然后像在本地一样使用该应用。登录、Cookie、上传和流媒体均可正常工作。
从 CLI 连接```
bitbang connect # interactive shell bitbang connect -- tail -f /var/log/syslog # one-shot command bitbang connect -L 15432:db.internal:5432 # local TCP forwarding bitbang connect -L 14450:nas.local:445 -L 15900:[fd00::20]:5900 bitbang cp :/var/log/app.log ./app.log # copy files, scp-style bitbang cp - :/tmp/firmware.bin < firmware.bin # stdin/stdout work too
`-L` 仅转发 **TCP**,与 `ssh -L` 类似。`-L` 默认绑定 `127.0.0.1`,除非你传入
`-g`,这会使转发的端口可从你的本地网络访问——而
任何访问该端口的人都能获得隧道所到达的任何内容,且其前方没有任何 BitBang
凭据。
监听端需要 `bitbang serve forward` 或 `bitbang serve`。默认情况下,
`forward` 链接可到达**监听端能到达的任何主机:端口**,而不仅仅是你所想的那个,
因此为数据库分发的链接也能到达该网络的其余部分。通过指定其可访问的内容来缩小范围:```
bitbang serve forward db.internal:5432 # this link reaches one service
每次成功连接或配对都会保存到 ~/.bitbang/devices.json,因此之后只需一个简短名称即可:bitbang connect nas1。
平台支持
每个平台一个二进制文件,无运行时依赖。除下面标出的两行外,所有功能在所有平台上均可用。
| Linux | macOS | Windows | |
|---|---|---|---|
Shell、文件、代理(bitbang serve) | 是 | 是 | 是 |
TCP 转发(-L) | 是 | 是 | 是 |
| 访问链接——授权、过期、撤销 | 是 | 是 | 是 |
| 自带 TURN | 是 | 是 | 是 |
| 使用 6 位代码配对 | 是 | 是 | 是 |
| 监听控制台(Enter) | 是 | 是 | 是 |
bitbang connect、bitbang cp | 是 | 是 | 是 |
| 查看共享会话 | 是 | 是 | 是 |
托管共享(bitbang share) | 是 | 是 | 否 * |
| 连接时终端大小调整 | 是 | 是 | 否 ** |
* bitbang share 发布的是 tmux 会话,因此托管共享需要 tmux——Linux、macOS 或 WSL。原生 Windows 仍可通过 bitbang connect 打开共享 URL。
** Windows 连接端无法感知其终端被调整大小,因此远程 shell 会保持启动时的大小,直到你重新连接。Unix 通过 SIGWINCH 获取此信息,而 Windows 没有对应的机制。
安全性
- 自认证身份。 首次运行时,
bitbang会在~/.bitbang/<program>/下生成一个 RSA 密钥对;设备 UID 由公钥派生而来,因此冒充设备意味着需要找到其 UID 的第二个原像。 - 秘密永不触及服务器。 访问代码位于 URL 片段(
#…)中,浏览器绝不会发送该片段——bitba.ng仅作为中介促成连接,永远不会看到授权该连接的凭据。 - 端到端加密。 所有流量都通过 WebRTC 的 DTLS 传输。信令服务器只能看到公钥、派生的 UID 和连接元数据——绝不会看到你的数据。如果需要 TURN 中继,它也只能看到密文。
- 已验证的配对。 代码配对中的朗读数字是一个短认证字符串(SAS),由两端根据协商好的 DTLS 指纹和两个承诺的随机数独立计算得出——中间人机器的指纹必然不同,因此无法使两个数字匹配。
- URL 是一种持有者凭据。 任何拥有它的人都能获得你选择提供的内容——如果你运行了
serve shell,那就是一个 shell。请据此谨慎分享。 - 可选 PIN(
--pin)适用于永久或无人值守的设置,以及一次性模式(-ephemeral),每次运行都会生成全新身份。 - 服务器仍然能看到的内容。 并非一无所见。它负责促成双方介绍,因此会观察到两端的 IP 地址、连接时间以及交换的数据量。端到端加密使其无法接触你的数据,但无法将其排除在元数据之外——最小信任比无信任描述得更准确。
- 浏览器信任其加载的页面。 浏览器客户端是由信令服务器提供的 JavaScript,因此打开 URL 意味着信任该服务器提供诚实的代码。
bitbang connect没有这种依赖:它是一个你安装并校验过的二进制文件。如果这一区别对你很重要,请使用 CLI 连接。
两端如何相互认证,从而使信令服务器无法插入到连接中,详见此处:无信任信令:无中央权威的认证。
为什么?
- 无需开放或配置任何内容。 可在 NAT、CGNAT 或受限网络之后工作——无需修改路由器、无需 VPN、无需隧道守护进程。
- 连接端无需安装任何内容。 浏览器就足够了。当你需要脚本、管道和文件复制时,CLI 随时可用。
- 设计上注重隐私。 流量是 WebRTC/DTLS,点对点传输。信令服务器永远看不到它;如果无法建立直接路径,TURN 中继也只传输密文。
- 无需账户,无遥测。
为什么不直接用 SSH?或者 Tailscale?
简短回答:对于你已能通过 SSH 访问的机器,或你能在其上安装的自己的设备群,请继续使用现有工具。bitbang 适用于远端是个人而非设备的情况,或当你所在之处无法安装任何东西时。这两个问题在 FAQ 中有详细解答。
安装```
curl -sSfL bitba.ng/install | sh
Linux 和 macOS。检测你的操作系统和架构(Linux 上为 `amd64`、`arm64` 和 `armv7`),从最新的 [GitHub release](https://github.com/richlegrand/bitbang-cli/releases) 下载二进制文件,对照该 release 的 `checksums.txt` 验证其 SHA-256,然后安装到 `~/.local/bin/bitbang`。
Windows 构建版本以 `bitbang-windows-amd64.exe` 和
`bitbang-windows-arm64.exe` 的形式发布。从 Releases 下载相应的二进制文件,
将其重命名为 `bitbang.exe`,并放置在你的 `PATH` 中。
**从源码构建:** 参见 [下文](#building-from-source)。
**macOS 和 Gatekeeper。** 上述一键安装不受影响:`curl` 不会
设置 `com.apple.quarantine` 属性,因此它获取的二进制文件可以正常运行。
如果你改为在浏览器中从 Releases 页面下载 `bitbang-darwin-arm64`,macOS 会将其隔离并拒绝打开,因为该 release 的二进制文件未经公证。可通过以下任一方式清除隔离属性:```
xattr -d com.apple.quarantine ./bitbang-darwin-arm64
或右键点击 Finder 中的文件并选择“打开”,这会提供一次性覆盖。或者从源码构建,这种方式永远不会被隔离。
Windows 和 SmartScreen。 Windows 上也会发生同样的情况,原因相同。浏览器下载会附加 Mark-of-the-Web,因此首次运行时会显示
“Windows 已保护你的电脑” —— 选择 更多信息,然后点击 仍要运行。发布二进制文件未进行代码签名,因此这是预期行为,而非出现问题的迹象。使用 curl 或 PowerShell 的
Invoke-WebRequest 获取 .exe 不会附加该标记,从源码构建也不会。
安装选项
固定版本、更改位置,或在运行前阅读脚本:``` curl -sSfL bitba.ng/install | sh -s -- --version 0.5.0 curl -sSfL bitba.ng/install | sh -s -- --prefix /usr/local/bin
curl -sSfL bitba.ng/install -o install.sh && less install.sh && sh install.sh
发布标签没有 `v` 前缀(`0.5.0`,而不是 `v0.5.0`)。
### 安装 URL 的工作原理
`bitba.ng/install` 是一个重定向,而不是托管的脚本。其链路如下:
1. `curl` 访问 `https://bitba.ng/install`,该地址 302 重定向到本仓库(`main` 分支)中的 [`install.sh`](https://github.com/richlegrand/bitbang-cli/blob/HEAD/install.sh)。
2. 脚本在你的 shell 中运行,检测操作系统和架构,并从 `https://github.com/richlegrand/bitbang-cli/releases/latest/download/bitbang-linux-<arch>` 下载二进制资源。
3. 它从同一发布版本获取 `checksums.txt`,并验证二进制的 SHA-256。
4. 安装到 `~/.local/bin`(可覆盖)。
安装脚本位于本仓库中,与它所安装的代码放在一起——因此你可以将它与二进制文件一起审查,而规范的 bitba.ng 主机只拥有短 URL。自托管者可以将自己主机的 `/install` 指向他们发布的任何脚本:信令服务器的 `INSTALL_URL` 环境变量控制重定向目标(为空 → 404)。
## 命令参考
每个子命令和标志都记录在 **[CLI.md](https://github.com/richlegrand/bitbang-cli/blob/HEAD/CLI.md)** 中,`bitbang <command> --help` 会在终端中打印相同的内容。
## 从源码构建
需要 Go 1.25+。纯 Go,静态链接(`CGO_ENABLED=0`)——跨编译非常简单,无运行时依赖。```
go build ./cmd/bitbang/
# cross-compile:
GOOS=linux GOARCH=arm64 go build -o bitbang-arm64 ./cmd/bitbang/
GOOS=linux GOARCH=arm GOARM=7 go build -o bitbang-armv7 ./cmd/bitbang/
GOOS=windows GOARCH=amd64 go build -o bitbang.exe ./cmd/bitbang/
GOOS=darwin GOARCH=arm64 go build -o bitbang-macos ./cmd/bitbang/
从 Windows 命令提示符:```bat go build -o bitbang.exe .\cmd\bitbang go test .... run_tests.cmd unit
Shell 命令、文件共享、代理和 CLI 客户端均支持在 Windows 上运行。交互式浏览器和 CLI shell 使用 Windows ConPTY,包括终端输入回显、行编辑、VT 输出和调整大小事件。ConPTY 需要 Windows 10 版本 1809 或 Windows Server 2019 或更高版本。
## 图表
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/47068/d68fcddad62ab84f11a549906a2b5abf2330fb25f39b3c1a1266eac7257a080d.png" alt="bitbang CLI shell 和文件共享" width="760">
<img src="https://assets.kitploit.com/production/public/readmes/47068/55bb6866c22504a6434e3dee8cb998e747cd73cb9d0bfa5e0bc0ede7b90ce262.png" alt="bitbang CLI 代理操作" width="720">
</p>
## 路线图
现已推出:**shell、文件和代理**,可从浏览器或 CLI 访问,此外还有 **TCP 端口转发**、scp 风格的文件复制、带已保存设备表的**临时配对**、**终端共享**(`bitbang share`)以及**访问链接**(`bitbang link`),后者可收窄并限定 URL 授予的权限范围。已设计并即将推出:
- **串口桥接** -- 从本地虚拟端口驱动远程 `/dev/ttyUSB0`(例如通过互联网运行 Arduino IDE)。相关问题已在此处提交:[这里](https://github.com/richlegrand/bitbang-cli/issues/3)。
- **远程桌面** -- 通过 WebRTC 视频轨道传输屏幕,通过数据通道传输键盘/鼠标。
## 许可证
MIT -- 参见 [LICENSE](https://github.com/richlegrand/bitbang-cli/blob/HEAD/LICENSE)。
## 贡献
欢迎提交 Issue 和 PR。
配方则有所不同:它们位于 [cookbook](https://github.com/richlegrand/bitbang/blob/main/cookbook.md) 中,存放在 [bitbang](https://github.com/richlegrand/bitbang) 仓库里,因为它们横跨所有项目而非仅限本项目。添加配方需在该仓库提交 PR。
要让配方被*收录*,还需要为每个 README 应展示该配方的项目提交一个小的 PR -- 上面的 [配方](#recipes) 列表在此处手动维护。这是有意为之:每个项目自行决定哪些配方值得展示给自己的读者,而不是让每个 README 都收录所有配方。