
Security News
OpenCode User Hit with Hostile Backlash After Reporting Free AI Loophole
An OpenCode user faced harassment after reporting a free AI usage loophole, drawing a bitter backlash in a GitHub thread that has since been deleted.
@ollamawg/cli
Advanced tools
Reach your Ollama server from anywhere through a user-space WireGuard tunnel, with per-device access control and a dashboard.
Reach your Ollama server from your laptop and phone without exposing it to the internet.
ollamawg puts a WireGuard tunnel in front of Ollama and adds per-device access control. It gives you a dashboard on the host that shows who is connected, what they run, and who is knocking on the port, and a ChatGPT-style chat page for phones. You can block a device or an IP with one click.
It is a single Go binary. WireGuard runs in user space through wireguard-go and gVisor's network stack, so the server needs no root, no kernel module and no TUN device. Computers connect with ollamawg connect, which needs no admin rights either. Phones use the official WireGuard app, because the keys and protocol are standard WireGuard.

Screenshot taken with simulated devices and traffic.
devices machine running Ollama
┌──────────────────────────┐ ┌────────────────────────────────────────────────┐
│ laptop │ UDP 51820 │ │
│ app → 127.0.0.1:11434 │ WireGuard │ firewall → WireGuard → proxy → 127.0.0.1:11434 │
│ ollamawg connect ─┼──(encrypted)──►│ (IP rules) (keys) (roles, Ollama │
├──────────────────────────┤ │ models, │
│ phone │ │ rate, │
│ browser → 10.77.0.1/chat │ │ log, │
│ WireGuard app ─┼──(encrypted)──►│ /chat) │
└──────────────────────────┘ │ dashboard on 127.0.0.1:8088 │
└────────────────────────────────────────────────┘
/chat.Ollama itself stays on 127.0.0.1. Nothing outside the tunnel can talk to it.
Ollama on the server, listening on 127.0.0.1:11434, which is its default. Pull at least one model, for example ollama pull llama3.2.
A UDP port that devices can reach. By default this is 51820.
Behind CGNAT this won't work as-is. Many home and mobile ISPs put customers behind carrier-grade NAT, where the router's WAN address is private (10.x, 100.64.x) and no port can be forwarded. You can still:
See Troubleshooting.
npm install -g @ollamawg/cli # prebuilt binary for Linux, macOS, Windows and FreeBSD
npx @ollamawg/cli version # or run it without installing
go install github.com/himanshu-mamgain/ollamawg/cmd/ollamawg@latest
Standalone binaries are attached to every GitHub Release. A Dockerfile is included; see Running as a service.
On the machine running Ollama:
ollamawg init --endpoint your-public-ip-or-dns:51820
ollamawg serve
init writes server.yaml and prints the dashboard password. Open http://127.0.0.1:8088 on the server, or reach it over SSH with ssh -L 8088:127.0.0.1:8088 server.
ollamawg add-peer --name laptop # writes laptop.yaml
Copy laptop.yaml to the laptop, then run:
ollamawg connect --config laptop.yaml
curl http://127.0.0.1:11434/api/tags # any Ollama client works unchanged
The ollama CLI, Open WebUI, LangChain, Continue and any OpenAI-compatible client pointed at http://127.0.0.1:11434/v1 go through the tunnel. The chat page is at http://127.0.0.1:11434/chat.
ollamawg add-peer --name phone --qr # prints a QR code
You can also use Add device in the dashboard, then Phone.
http://10.77.0.1:11434/chat.Ollama apps such as Enchanted or Reins work too: point them at http://10.77.0.1:11434.
Chat page on a phone, with a simulated model reply.
See Getting started for the full walkthrough.
The dashboard runs on the server at http://127.0.0.1:8088. The browser asks for a username and password.
Username and password. init creates the user admin with a random password, which it prints and saves in server.yaml under admin.password. To choose your own:
ollamawg passwd # asks for a new password twice
ollamawg passwd --user himanshu # also change the username
ollamawg init --endpoint ... --user himanshu --set-password # or choose both at setup
Passwords you choose are stored as a bcrypt hash (admin.password_hash), never in plain text. A running server picks up the change within 2 seconds.
Two-factor login (2FA). This adds a 6-digit code from an authenticator app, such as Google Authenticator, Authy, 1Password or Microsoft Authenticator.
ollamawg 2fa enable # shows a QR code: scan it, then type the code to confirm
ollamawg 2fa status
ollamawg 2fa disable # also the way back in if you lose your phone
You can also turn it on from the 2FA button in the dashboard.
With 2FA on:
admin.api_token) as Authorization: Bearer <token>./chat, served inside the tunnel.
user for inference, readonly, admin for pull and delete, or custom path rules.llama3.2,qwen3:*./metrics.ollamawg 2fa enable. Scripts and Prometheus then use an API token.add-peer, block or a hand edit of server.yaml applies within 2 seconds without dropping sessions.Server
init create server.yaml with keys and a dashboard password
add-peer register a device; --qr prints a QR code for the WireGuard app
remove-peer delete a device
list-peers show devices and rules
block block --device or --ip
unblock undo a block
serve run the tunnel, proxy, chat page and dashboard
passwd set your own dashboard username and password
2fa enable, disable or check two-factor dashboard login
Client
connect bring the tunnel up and expose Ollama on 127.0.0.1:11434
status check the handshake and this device's policy
Other
keygen print a WireGuard key pair
version print the version
Run ollamawg <command> -h for a command's flags.
| Guide | What's in it |
|---|---|
| Getting started | Install, set up a server, add laptops and phones, connect |
| Configuration | Every field in server.yaml and client configs, roles, model rules |
| Dashboard and admin API | The UI, two-factor login, the HTTP API behind it, Prometheus metrics |
| Security model | What is protected, how, and what is not |
| Running as a service | systemd, launchd, Windows, Docker, port forwarding |
| Go library | Embedding the server and client in your own programs |
git clone https://github.com/himanshu-mamgain/ollamawg && cd ollamawg
go test -race ./...
go build -o ollamawg ./cmd/ollamawg
Go 1.24 or newer is required. Cross-compiling works out of the box, for example GOOS=windows GOARCH=amd64 go build ./cmd/ollamawg.
Releases are cut from main by .github/workflows/publish.yml:
version (and its optionalDependencies) in npm/cli/package.json and Version in server.go. A test fails if they differ.A re-run finishes a release that stopped halfway.
FAQs
Reach your Ollama server from anywhere through a user-space WireGuard tunnel, with per-device access control and a dashboard.
The npm package @ollamawg/cli receives a total of 1,514 weekly downloads. As such, @ollamawg/cli popularity was classified as popular.
We found that @ollamawg/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
An OpenCode user faced harassment after reporting a free AI usage loophole, drawing a bitter backlash in a GitHub thread that has since been deleted.

Threat Research
/Security News
319 browser extensions installed by 13.4 million users hijack searches, capture queries, and collect referral payments from Yahoo and Bing.

Threat Research
Malicious Firefox extensions mimic Phantom, Jupiter, and Bitget wallets to steal recovery phrases and private keys, with one fetching its payload remotely.