A live per-app egress (outbound) firewall & monitor for Windows and Linux — see which application is talking to which remote IP and port, refreshed every ~2 seconds; get flagged the instant a brand-new destination appears; block an app or an address; and flip a global kill-switch that stops all outbound traffic except loopback. No kernel driver — Talon drives your OS's own firewall.
Strix Talon is part of the open-source Strix Advanced Tools suite of privacy & security utilities for Windows and Linux.
Most machines have plenty of inbound protection and almost no visibility into what their own apps send outbound. Talon closes that gap: it shows, in real time, every process that has an active outbound connection and exactly where it is going, alerts you the moment a new destination shows up, and lets you cut off an app or an address on the spot.
The key design choice is that Talon ships no kernel driver. Instead of asking you
to trust and sign a WFP callout or a custom netfilter module, it translates each rule
you make into the operating system's own firewall — Windows Defender Firewall via
netsh advfirewall, Linux via nft — and keeps every rule it creates in a private,
namespaced area so it can be removed cleanly and can never clobber your existing
firewall configuration.
- Live per-app egress monitor — lists every application with an active outbound connection and the remote IP / port it is talking to, refreshed every ~2 seconds. Read-only and unprivileged.
- New-destination alerts — flags a destination the moment it appears for the first time, so an app quietly reaching a new endpoint stands out immediately.
- Block an app or an address — block a program's outbound traffic (Windows) or a specific remote IP (all platforms) with one action; unblock just as easily.
- Global kill-switch — block all outbound traffic except loopback with a single toggle, optionally keeping the local LAN reachable. Loopback is always exempt, so the switch can never lock you out of your own machine.
- Inbound exposure at a glance — surfaces local LISTENING sockets and whether
each is bound to
0.0.0.0(exposed to the network) or127.0.0.1(local only), so you can see what is reachable into the box, not just out of it. - One-click revert — every rule Talon creates is namespaced;
revertremoves only Talon's rules and leaves the rest of your firewall untouched.
Talon does not intercept packets itself and installs no kernel component. Each rule is expressed as an argv list (never a shell string) and handed to the platform's native firewall:
- Windows — rules are added to Windows Defender Firewall with
netsh advfirewall. Rule names are prefixedStrixTalon-, so they are easy to find, audit, and remove. - Linux — rules live in a private
strixtalonnftables table managed withnft. Your existing tables and chains are never edited.
Because everything Talon writes is namespaced, revert can tear down Talon's rules
in full without ever touching a rule you (or your distro) created.
| File | What it is |
|---|---|
strix_talon_core.py |
Pure engine + firewall argv builders (connection/listener enumeration, new-destination diffing, rule construction, validation). |
StrixTalon.py |
PySide6 desktop dashboard — a modern, live UI for monitoring and rule changes. |
talon.py |
Linux CLI: watch / list / listeners / rules / block / unblock / killswitch / revert. |
tests/test_talon.py |
Self-running test suite — python tests/test_talon.py. |
requirements.txt |
GUI dependencies: PySide6, psutil. |
Run from source (any OS): requires Python 3. The GUI needs PySide6 and psutil; the CLI and the tests need only the standard library plus psutil.
git clone https://github.com/strix-tool/strix-talon
cd strix-talon
pip install -r requirements.txt
# GUI (Windows and Linux)
python StrixTalon.py
# CLI (Linux)
sudo python3 talon.py watchDownload the installer from the
Releases page when available,
or run StrixTalon.py from source. Monitoring is read-only and needs no privileges;
changing firewall rules needs Administrator rights, so the GUI offers an elevated
relaunch via the absolute interpreter path (not PATH).
The build is not code-signed yet. Because a firewall tool touches security-sensitive settings, Windows SmartScreen or your AV may flag it on first run — choose More info → Run anyway. This is documented honestly in SECURITY.md.
Install the .deb from Releases
when available, or run from source. Monitoring is unprivileged; the commands that
change firewall rules use nft and are run with sudo.
python StrixTalon.pyA modern, single-window dashboard: a live table of apps and their outbound
destinations (with new destinations highlighted), a panel of local listening sockets
showing 0.0.0.0 vs 127.0.0.1 exposure, per-row block / unblock actions, the
global kill-switch toggle, and a one-click revert.
python3 talon.py watch # live per-app egress monitor (read-only)
python3 talon.py list # snapshot of current outbound connections
python3 talon.py listeners # local LISTENING sockets + exposure
sudo python3 talon.py block 203.0.113.5 # block outbound to a remote IP (nft)
sudo python3 talon.py unblock 203.0.113.5 # remove that rule
sudo python3 talon.py rules # list Talon's own rules
sudo python3 talon.py killswitch on # block all outbound except loopback
sudo python3 talon.py killswitch on --allow-lan # …but keep the LAN reachable
# Per-app blocking ("this app may never touch the internet") is available in the
# GUI on Windows; the Linux CLI blocks by address (nft can't match by program).
sudo python3 talon.py killswitch off # lift the kill-switch
sudo python3 talon.py revert # remove ALL Talon rules, restore your firewallWatching, listing, and listing listeners are read-only and unprivileged; only the
commands that add or remove rules (block, unblock, killswitch, revert) need
Administrator/root.
A firewall tool changes security-sensitive OS settings, so its design centres on not
being able to hurt you. Talon ships no kernel/WFP driver — enforcement is
delegated to the OS's own firewall. Every rule is namespaced (StrixTalon- rule
names on Windows, a private strixtalon nftables table on Linux) so revert removes
only Talon's rules and can never clobber your existing ruleset. There is no
self-lockout — loopback is always exempt, the kill-switch keeps loopback (and
optionally the LAN) reachable, and every change is revertible in one click. There is
no injection — every firewall command is an argv list, destination IPs are
validated with ipaddress, and a program path must be a real file before a rule is
built. And it runs with least privilege — visibility is read-only and
unprivileged; only rule changes need Administrator/root. Read the full threat model
in SECURITY.md. Found a vulnerability? See its reporting section.
- No interactive allow/deny pop-ups in v1. The "allow or deny this new connection" prompt (Little Snitch's signature) requires a WFP callout driver on Windows / NFQUEUE on Linux and is out of scope for v1. Talon v1 is live visibility + rule-based OS-firewall blocking + new-destination alerts.
- Per-app blocking is Windows-only.
netshmatches an outbound rule by program path. On Linux,nft/iptablescannot natively map a running process to a rule, so on Linux Talon blocks by destination IP — and says so. - Unsigned Windows build may trip SmartScreen / AV. A firewall tool touches security-sensitive settings, so an unsigned build can be flagged on first run; verify the source and choose More info → Run anyway.
Strix Talon calls no third-party services and bundles no external firewall code; it
builds on the standard-library ipaddress module, psutil, PySide6, and the OS's
own firewall tooling. Thanks and references: ACKNOWLEDGEMENTS.md.
MIT © 2026 Strix Advanced Tools. Use only on machines you own or are authorized to administer.
