All docs/Install on Windows (Native, no WSL)
INSTALL

Install on Windows (Native, no WSL)

Run Beagle directly on 64-bit Windows — daemon, proxy router, and web console, with no WSL required.

July 2026

Three pieces

Which Windows guide should I use?

This native guide is the recommended path for most people — it runs Beagle directly on Windows with nothing extra to learn. The separate WSL2 guide is for developers who already run a Linux environment on Windows or whose company policy blocks native mode.

Beagle runs directly on 64-bit Windows. The npm package includes the native helper and WireGuard's signed wintun.dll, so there is no separate driver to download.

PieceWhat it doesRuns asWhere
daemon (agentnet up)Joins the Decent Network and creates the agentnet0 virtual adapterWindows startup task (SYSTEM)background
router (agentnet proxy router)Local multi-exit proxy with China split routing; optional HLS accelerationPowerShell (you)127.0.0.1:8889
UI (agentnet ui)Web console for friends, messages and filesPowerShell (you)http://localhost:8765
Requirements

Windows 10/11 or Windows Server 2016+, 64-bit x64 or ARM64, and Node.js 20+. Windows Server 2008 R2/2012 R2 and Node.js 12 are not supported. Use the Windows (WSL) guide only when native mode is blocked by policy.

1. Install Node.js

Beagle is distributed through npm, the package manager that ships with Node.js — a free, open-source runtime from the OpenJS Foundation. You install Node.js once; it gives you the npm and agentnet commands used below. You do not need to know how to program to run these steps.

01
Download the LTS installer

Open nodejs.org, download the current LTS Windows installer, and run it with default options — keep Add to PATH checked.

02
Verify in a fresh PowerShell

Close and reopen PowerShell, then check the versions. node --version must print v20.x or newer.

node --version
npm --version

2. Install Beagle and create your identity

Open PowerShell as Administrator (Start → type PowerShell → right-click → Run as administrator), then run:

npm install -g @decentnetwork/lan
agentnet --version
agentnet init --name my-windows-pc
Your keys are yours

agentnet init creates a cryptographic identity — no account, email, or password. Everything is stored in $env:USERPROFILE\.agentnet; the keypair is in carrier\keypair.json. Back up this folder and never share the keypair.

3. Install and start the daemon

Keep the Administrator PowerShell open. This installs the signed Wintun adapter, the 10.86.0.0/16 route, and an elevated startup task named Decent AgentNet that starts at boot and restarts after a failure.

agentnet service install

Verify it, then allow 60–90 seconds after the first start for the dora roster and peer sessions to converge:

agentnet service status
agentnet diag
Get-NetAdapter -Name agentnet0
Get-NetRoute -DestinationPrefix 10.86.0.0/16

4. Start the proxy router

Open a new, normal PowerShell window. For normal browsing, start the router and keep this window open. It listens at 127.0.0.1:8889; press Ctrl+C to stop. Normal proxy use, chat, and the web UI do not require a CA certificate.

agentnet proxy router

Optional — CCTV and other HLS video: stop the normal router with Ctrl+C, trust the local video CA once (Windows shows a security confirmation; approve it), then restart with acceleration. The CA is generated locally and used only for selected China video-CDN hosts.

agentnet proxy trust-ca
agentnet proxy router --hls-accel

5. Start the web UI

Open one more normal PowerShell window and keep it open, then open http://localhost:8765 to add friends, chat, and send files. Press Ctrl+C to stop the UI.

agentnet ui

6. Point Chrome at the proxy

Open a separate Chrome profile that uses Beagle; your normal Chrome stays unchanged. By default Beagle uses China split routing: matching sites and video use the available exits, other traffic connects directly.

& "$env:ProgramFiles\Google\Chrome\Application\chrome.exe" `
  --proxy-server="127.0.0.1:8889" `
  --user-data-dir="$env:TEMP\chrome-beagle" `
  --proxy-bypass-list="<-loopback>"
Or use an extension

Alternatively, use ZeroOmega or FoxyProxy and configure an HTTP proxy at 127.0.0.1 port 8889. Want every site to use an exit? Start the router with agentnet proxy router --all; add --hls-accel only when HLS video acceleration is needed.

Manage, update, remove

Run daemon commands from an Administrator PowerShell. The router and UI are the two normal PowerShell windows — stop either with Ctrl+C and rerun its command to start again.

agentnet service status
agentnet service restart
Get-Content -Wait "$env:USERPROFILE\.agentnet\agentnet-service.log"

Update Beagle, then restart the router and UI windows so all three pieces use the new version:

npm install -g @decentnetwork/lan@latest
agentnet service restart
Remove the daemon completely

Only when fully uninstalling: agentnet service uninstall.

Optional: make this machine an exit node

Run in Administrator PowerShell. The exit proxy listens on this node's AgentNet IP at port 8888. --hls-accel belongs on the computer watching video, not on every exit node.

agentnet proxy enable
agentnet service restart

Troubleshooting

SymptomFix
Unexpected token '?' or unsupported engineNode.js is too old. Install Node.js 20+.
agentnet is not recognizedReopen PowerShell after installing Node.js/package. Confirm %APPDATA%\npm is on PATH.
Access is denied / route or Wintun adapter failsReopen PowerShell as administrator and retry agentnet service install.
Missing TUN helper or wintun.dllReinstall @decentnetwork/lan; check whether antivirus quarantined files under bin\windows-*. Never download a DLL from a third-party site.
agentnet diag cannot reach the daemonRun agentnet service restart, then inspect agentnet-service.log.
Peers appear offline just after startWait 60–90 seconds. If it persists, confirm no other VPN installed a conflicting 10.86.* route.
Browser cannot load through 127.0.0.1:8889Confirm both the daemon and the agentnet proxy router window are running.
Video works but stallsConfirm the router was started with --hls-accel and agentnet proxy trust-ca succeeded.
Native mode blocked by enterprise policyUse the WSL guide. Never run native and WSL daemons with the same identity at the same time.
Next guideInstall on Linux