@10p.io/tunnel

中文文档
20.81.1发布于 2026/11/06MITTypeScriptCommonJS零依赖近 30 天下载 1943

TUN device + smoltcp userspace TCP/IP stack NAPI module for planx vnet (Pattern C privileged daemon)

原始使用文档
文档目录9 节
  1. Overview
  2. NAPI exports
  3. Dev build (single platform)
  4. Release flow (5 platform fan-out + publish)
  5. Prerequisites
  6. Steps
  7. Dry run
  8. Per-arch binaries
  9. Troubleshooting

@10p.io/tunnel

TUN device + smoltcp userspace TCP/IP stack NAPI module for planx vnet (Pattern C privileged daemon).

Overview

Pattern C 分離 model の native side。 planx-networkd (= root process) が本 NAPI module を load して TUN device + smoltcp Interface + tokio poll loop を起動する。 USER process side の planx daemon は tRPC over unix socket で networkd に接続し、 L4 event のみ boundary を超える。

NAPI exports

  • setup_vnet({ selfHip, prefix, mtu }) → { ifaceName }
  • addPeerAddress({ hipBytes }) / removePeerAddress({ hipBytes })
  • injectTcpData({ connId, payload }) / injectTcpClose({ connId }) / injectUdpSend({ dstPort, srcAddr, srcPort, payload })
  • onEvent((ev: NetworkdEvent) => void) / offEvent()

Dev build (single platform)

nx build @10p.io/tunnel              # release .node (native target only)
nx build:debug @10p.io/tunnel        # debug .node
nx test @10p.io/tunnel               # cargo test
nx lint @10p.io/tunnel               # cargo clippy

Release flow (5 platform fan-out + publish)

5 per-arch package を repo commit して GAR publish するための flow。 Mac local で実行する想定 (= CI では走らせない)。

Prerequisites

brew install zig
rustup target add aarch64-apple-darwin x86_64-apple-darwin \
                  x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu \
                  x86_64-unknown-linux-musl
gcloud auth application-default login   # or GOOGLE_APPLICATION_CREDENTIALS export

Steps

# 1. 5 platform 分の .node を prebuilt/ に生成
nx prebuild @10p.io/tunnel

# 2. prebuilt/*.node を packages/@10p.io/tunnel-{arch}/ に配布 +
#    main package の index.js / index.d.ts を最新化
nx build @10p.io/tunnel

# 3. (commit .node files to repo — Rust source 改修ごとに必要)
git add prebuilt/ ../../../packages/@10p.io/tunnel-*/planx-tunnel.*.node
git commit -m "chore(tunnel): rebuild native binaries"

# 4. 全 publish (= main + 5 per-arch を tag:package run-many で publish)
nx run-many -t deploy -p 'tag:package' --parallel=2

Dry run

DRY_RUN=true nx run @10p.io/tunnel:deploy

Per-arch binaries

PackagePlatformlibc
@10p.io/tunnel-darwin-arm64macOS Apple Silicon-
@10p.io/tunnel-darwin-x64macOS Intel-
@10p.io/tunnel-linux-x64-gnuLinux x86_64glibc
@10p.io/tunnel-linux-arm64-gnuLinux ARM64glibc
@10p.io/tunnel-linux-x64-muslLinux x86_64musl

main @10p.io/tunnel package が optionalDependencies で各 per-arch を参照し、 runtime に NAPI loader (index.js) が platform 判定で適切な .node を require する。

Troubleshooting

  • 401/403 on publish → ~/.npmrc の GAR token 切れ / 権限を確認。 CI では on-merge-to-develop.yml の "Configure Artifact Registry auth" step が token を 供給する (deploy script 自身は auth しない、#4645 で npx auth-refresh を撤去)。 手動で publish する場合のみ npx google-artifactregistry-auth で refresh する。
  • napi build で "linker cc not found" (Linux cross-compile) → --zig flag が抜けている。 prebuild.sh 経由で実行する。
  • cargo: command not found → rustup PATH 未設定。 export PATH="$HOME/.cargo/bin:$PATH"。
  • prebuilt/*.node が古い → nx prebuild を re-run して git add し直す。

版本与发布记录

@10p.io/tunnel 共发布 14 个版本,首次发布于 2026/10/19;过去 12 个月发布了 14 个版本。

版本发布日期距今
20.81.1latest2026/11/062 天前
20.78.02026/10/2712 天前
20.76.12026/10/2613 天前
20.76.02026/10/2613 天前
20.74.32026/10/2613 天前
20.73.02026/10/2514 天前

关于 @10p.io/tunnel 的常见问题

@10p.io/tunnel 是什么?

TUN device + smoltcp userspace TCP/IP stack NAPI module for planx vnet (Pattern C privileged daemon)

如何安装 @10p.io/tunnel?

在项目目录运行 npm install @10p.io/tunnel,或使用 pnpm add / yarn add / bun add。

@10p.io/tunnel 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@10p.io/tunnel 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@10p.io/tunnel 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@10p.io/tunnel 可以商用吗?

@10p.io/tunnel 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@10p.io/tunnel 的下载量有多少?

根据 npm 官方下载统计,@10p.io/tunnel 在 2026/10/04 – 2026/11/02 这 30 天内被下载 1,943 次,日均约 65 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@10p.io/tunnel 还在维护吗?

最新版本 20.81.1 发布于 2026/11/06(2 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/10/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。