mrkeyoor.com_
Fri 02 Oct 14:57 UTC
Dev Toolsevaluationupdated 02 Oct 2026

SwitchHosts review

SwitchHosts is a desktop app for keeping several hosts-file configurations and turning them on or off without hand-editing the system file. It handles local and remote entries, groups, scheduled refreshes, backups, and quick switching from the window or system tray on macOS, Windows, and Linux.

Verdict

Our SwitchHosts run installed 441 packages and passed all 84 Vitest checks, but the full suite exited 101 because Cargo could not find gdk-3.0, so the packaged v5.0.2 download is the safer route than a source build. Use it if named profiles, remote refreshes, and tray switching replace edits you make every week. Choose a CLI for servers, automation, or a single static hosts file.

We ran it

Lab card: what happened when we ran SwitchHostsScreenshot of SwitchHosts (switchhosts.app)
Install✓ · 37s441 packages · 539 MB
Buildn/ano build script
Tests✗ · 80s84 passed · 0 failed of 84 (vitest)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo270 files~32,751 lines of source · 3.5 MB · 2 CI workflows · tests dir

Answers from our run

Does SwitchHosts build from source?

Dependencies installed in 37 seconds (441 packages), and the project has no separate build step. We cloned commit 09adfa4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do SwitchHosts's tests pass?

Yes: 84 of 84 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does SwitchHosts have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use SwitchHosts?

Headless servers or shell-only workflows: SwitchHosts is a Tauri desktop app, so a CLI such as hostctl is a better fit.

What are the alternatives to SwitchHosts?

hostctl, hosts, Gas Mask. Our SwitchHosts run installed 441 packages and passed all 84 Vitest checks, but the full suite exited 101 because Cargo could not find `gdk-3.

Setup3/5Packaged apps are easy; source tests need native GTK libraries
Docs4/5Clear features, backup layout, and build commands
Community4/527,251 stars and an October 2 push, but 428 open issues
Maturity4/5v5.0.2 spans three desktop systems; native tests failed here

Who it’s for

Developers who regularly point domains at local, staging, or test systems.
QA and support teams that need named hosts profiles instead of repeated manual edits.
Desktop users who want remote hosts lists refreshed on a schedule or at startup.
Teams that need the same graphical workflow on macOS, Windows, and Linux.

Who it’s NOT for

Headless servers or shell-only workflows: SwitchHosts is a Tauri desktop app, so a CLI such as hostctl is a better fit.
Linux contributors expecting npm alone to prepare the source tree: our Cargo test stopped because the system library gdk-3.0 was missing.
Windows users who cannot tolerate repeated privilege prompts: open issue 1041 reports UAC confirmation after edits to an enabled configuration.
macOS 26 users who depend on the tray popover: open issue 1048 reports that it appears only after returning to the desktop.
Corporate remote-list setups that use an untrusted private CA: issue 1046 asks for custom-CA support or a per-list certificate bypass that v5.0.2 does not provide.

Setup reality

Our fresh Debian sandbox installed commit 09adfa4 in 37 seconds, adding 441 packages and using 539 MB. The harness found no build script target and skipped that step. The test command exited 101 after 80 seconds, although all 84 Vitest checks passed.

Using a release needs no hosted service or secret. Writing the system hosts file still requires operating-system permission. Remote list URLs, proxy behavior, write mode, launch at login, post-apply commands, and the local HTTP API are optional preferences.

Building from source needs Node.js, Rust, and Tauri's platform packages. Our failure was specific: Cargo could not find gdk-3.0 through pkg-config. The repository supplies packaged downloads for macOS, Windows, and Linux, which avoid that source-build setup.

Five entry types replace repeated system-file edits

SwitchHosts v5 manages 5 entry types: system, local, remote, group, and folder. You can enable a profile, switch it from the system tray, search or replace text, and keep related mappings together. A staging setup stops being a block of addresses pasted into a protected file and becomes a named item that can be turned off again. That helps developers, testers, and support staff who change destinations often.

The v5 layout puts a manifest, entry content, preferences, trash data, and histories under ~/.SwitchHosts, or the matching .SwitchHosts folder in a Windows user directory. Copying that whole folder makes a complete manual backup. The in-app JSON export is narrower: the README says it carries hosts data but leaves out preferences and histories.

The v5.0.2 packages are easier than a source build

Release v5.0.2, published September 3, 2026, includes installers or bundles for macOS, Windows, and Linux across supported CPU architectures. Linux users get AppImage, Debian, and RPM choices. Windows users can also install SwitchHosts through Chocolatey. For someone who only wants to switch profiles, these packages arrive with the desktop application already assembled.

Source work crosses 3 prerequisite layers: Node.js, Rust, and Tauri's operating-system packages. The README then directs contributors to npm install and npm run tauri:dev. Production packaging uses npm run tauri:build. Linux contributors are sent to Tauri's external prerequisite list instead of seeing the native packages beside the commands. Our Debian result shows why those packages deserve attention.

What happened when we ran it

Our test method used a fresh Debian container with 3 CPUs, 8 GB of RAM, Node 22, no secrets, and no extra privileges. Our sandbox installed commit 09adfa4 in 37 seconds. The checkout held 270 files, about 32,751 lines of source, and occupied 3.5 MB before installation. Npm added 441 packages and raised disk use to 539 MB. The harness found no build script target, so it skipped the build step. Npm audit reported 0 known vulnerabilities.

The test command ran for 80 seconds and exited 101. Vitest itself was clean: 13 files passed, containing 84 passing tests and 0 failures. Cargo then tried to build the Rust side and stopped when pkg-config could not find the gdk-3.0 system library at version 3.22 or newer. The log said gdk-3.0.pc was unavailable and PKG_CONFIG_PATH was unset. It did not report a failing project assertion.

The TypeScript and React unit checks completed, while the native Linux test path was not portable to this fresh Debian container as supplied. We did not install extra system packages after the failure or run a packaged desktop binary. These measurements cover repository setup and tests, not tray behavior, privilege prompts, remote refresh reliability, or installer quality.

Issue 1041 reports repeated Windows UAC prompts

GitHub listed 428 issues as open; issue 1041 says edits to an enabled configuration trigger a Windows UAC confirmation and asks for synchronization on save or focus loss instead. Hosts-file writes are privileged by design, but prompt frequency can still make an editor annoying. If your workflow changes several lines at a time, test that interaction on the exact Windows policy your company uses.

Issue 1048 concerns the macOS 26 tray popover. The reporter says clicking the tray icon does not show the small window in the current workspace and requires returning to the desktop. Issue 1043 also says search finds an entry only after its location has been brought into view and does not search across groups. We did not reproduce these reports in our container, but they touch two reasons to choose the GUI.

Issue 1046 leaves private-CA remote lists unresolved

In v5.0.2, remote entries have 3 refresh triggers: manual, scheduled, and application startup. That makes a centrally maintained test or block list practical without asking each person to paste updates. Proxy settings are available, and post-apply commands can connect a profile change to another local action. A local HTTP API lets other tools control the desktop app.

Issue 1046 describes a v5.0.2 remote URL signed by an internal or self-signed CA. The request fails because the certificate chain is not trusted, and the issue asks for custom-CA support or a per-entry option to bypass verification. The request remains open. A company using private PKI should verify that the operating system trusts its CA instead of assuming SwitchHosts has its own certificate setting.

An October 2 push shows activity, while 428 issues remain open

GitHub showed 27,251 stars and a last push on October 2, 2026. The latest release was v5.0.2 on September 3, and the measured commit from October 2 updated a development dependency. GitHub's repository counter showed 428 open items. A separate API search returned 428 open issues and 0 open pull requests, making that an issue backlog on the day we checked.

Recent reports received comments, and code landed the same day as our run. That is evidence of current maintenance, though the backlog is large. The project dates to 2011 and now has signed Linux artifacts, multi-architecture installers, an updater, and two CI workflow files. Those are mature distribution signals. The unanswered platform reports still deserve a trial on your operating-system version before a team standardizes on it.

Pick a CLI when switching must work without a desktop

The 539 MB development install buys a desktop workflow that hostctl and xwmx/hosts replace with commands. Gas Mask stays closer to SwitchHosts' graphical model but targets macOS. SwitchHosts earns its footprint when groups, remote refreshes, backups, and tray access save repeated manual work across three desktop systems. If those features sound excessive, use the smaller tool and keep the hosts file boring.

Alternatives

ProjectWhat it isPick it when
hostctlA command-line tool for managing tagged hosts profiles and entries.pick this instead when scripts, terminals, and headless machines matter more than a desktop interface.
hostsA portable shell script for adding, removing, and listing hosts-file entries.pick this instead when you want one small script with no desktop runtime.
Gas MaskA macOS hosts-file manager with profile switching from a native desktop app.pick this instead when your whole team uses macOS and cross-platform parity has no value.

What people are saying

  1. [velocity-scout] oldj/SwitchHosts

Sources

  1. SwitchHosts repository and README
  2. SwitchHosts v5.0.2 release
  3. Measured SwitchHosts commit
  4. Windows UAC prompt report
  5. macOS 26 tray behavior report
  6. Remote hosts private CA request

More dev tools reviews

touchHLE · effect · Duo-animation · DuoLikeAnimation · team-Omzo · lid-plane · the whole board →