How to Install or Uninstall Features Independently in Vorssaint
Toggle features on or off in the Features hub, or run ./Tools/uninstall.sh to completely remove Vorssaint and all its data.
Vorssaint is a modular macOS utility that lets you pick exactly which capabilities you need. Unlike monolithic apps, each feature in Vorssaint is self-contained—you can enable or disable individual modules without affecting the rest of the application. This guide explains how to manage features through the UI, programmatically, and how to perform a complete uninstall.
Installing and Uninstalling Features via the Settings UI
The Features hub is the primary interface for managing Vorssaint's capabilities.
Accessing the Features Hub
- Click the Vorssaint icon in your menu bar.
- Select Settings → Features.
You'll see a list of all available features—such as Volume Mixer, Window Switcher, and Homebrew Manager—each with a toggle switch and an energy badge indicating its resource usage.
Enabling a Feature (Installing)
- Flip the toggle ON for any feature you want.
- If the feature requires macOS permissions (Accessibility, Screen Recording, etc.),
PermissionManager.swiftprompts you automatically. - The feature downloads any necessary components, starts its background worker, and appears in the UI immediately.
According to the README, "Everything can be changed later in Settings" and "Each feature also wears an honest energy badge" so you understand the trade-offs before enabling【/cache/repos/github.com/vorssaint/vorssaint-utils/main/README.md#L58-L64】.
Disabling a Feature (Uninstalling)
- Flip the toggle OFF.
- The feature's UI disappears, its background work stops, and its runtime hooks are removed.
- Settings are preserved so you can re-enable later without reconfiguration.
This design ensures disabled features consume zero CPU or memory—the worker is stopped and unregistered from FeatureRegistry.
How the Modular Architecture Works
Vorssaint's feature system is built on three core components in the source code:
| Component | File Path | Purpose |
|---|---|---|
| Feature Registry | Sources/Vorssaint/Core/FeatureRegistry.swift |
Maintains the list of features, their identifiers, and enabled states. Notifies workers to start or stop when toggles change. |
| Features View | Sources/Vorssaint/UI/Settings/FeaturesView.swift |
Renders the toggle UI and binds switches to FeatureRegistry.enable(featureID:) and FeatureRegistry.disable(featureID:). |
| Permission Manager | Sources/Vorssaint/Core/PermissionManager.swift |
Requests only the permissions required by the specific feature being enabled. |
When you toggle a feature, FeatureRegistry calls the appropriate worker—such as VolumeMixerWorker or WindowSwitcherWorker—which are started lazily and stopped immediately upon disable. This guarantees clean isolation: a disabled feature cannot leak memory, spawn processes, or interfere with other features.
Enabling or Disabling Features Programmatically
For automation, scripting, or custom integrations, Vorssaint exposes a public Swift API through FeatureRegistry:
import Vorssaint
// Enable the "Window Switcher" feature
FeatureRegistry.shared.enable(featureID: .windowSwitcher)
// Disable the "Battery Saver" feature
FeatureRegistry.shared.disable(featureID: .batterySaver)
Feature identifiers are defined as enum cases in FeatureRegistry.swift and map directly to the UI toggles. This API is useful for:
- Corporate deployment scripts that pre-configure Vorssaint for employees.
- Power users who want to trigger features via keyboard shortcuts or other automation tools.
- Testing and development workflows.
Completely Uninstalling Vorssaint
To fully remove Vorssaint—including all features, settings, permissions, and cached data—use the provided uninstall script.
Running the Uninstall Script
# From the repository root or the installed bundle's Tools folder
./Tools/uninstall.sh
The script at [Tools/uninstall.sh](https://github.com/vorssaint/vorssaint-utils/blob/main/Tools/uninstall.sh) performs four cleanup steps【/cache/repos/github.com/vorssaint/vorssaint-utils/main/Tools/uninstall.sh】:
#!/usr/bin/env bash
# 1. Quit the running application
osascript -e 'quit app "Vorssaint"'
# 2. Remove the login item launch agent
launchctl unload -w "$HOME/Library/LaunchAgents/com.vorssaint.utils.launcher.plist"
# 3. Revoke all granted macOS permissions
tccutil reset Accessibility com.vorssaint.utils
tccutil reset ScreenRecording com.vorssaint.utils
# 4. Delete application bundle and all related files
rm -rf "/Applications/Vorssaint.app"
rm -rf "$HOME/Library/Application Support/com.vorssaint.utils"
rm -rf "$HOME/Library/Preferences/com.vorssaint.utils.plist"
rm -rf "$HOME/Library/Caches/com.vorssaint.utils"
As documented in the README: "To remove Vorssaint completely … ./Tools/uninstall.sh"【/cache/repos/github.com/vorssaint/vorssaint-utils/main/README.md#L78-L82】.
What the Uninstall Script Removes vs. Preserves
| Removed | Preserved (nothing) |
|---|---|
| Application bundle | N/A—complete removal |
| All user preferences and settings | |
| Granted macOS permissions (Accessibility, Screen Recording, etc.) | |
| Login item and launch agent | |
| Cache and temporary files |
Note: If you only want to disable a feature temporarily, use the Features hub toggle instead. The uninstall script is intended for complete removal when you no longer want Vorssaint on your system.
Summary
- Install a feature: Open Settings → Features and toggle it ON. Permissions are requested automatically, and the feature starts immediately.
- Uninstall a feature: Toggle it OFF in the same hub. Settings are saved for future re-enable, but all runtime activity stops.
- Programmatic control: Use
FeatureRegistry.shared.enable(featureID:)andFeatureRegistry.shared.disable(featureID:)in Swift. - Complete removal: Run
./Tools/uninstall.shto delete Vorssaint, its permissions, and all associated files.
Frequently Asked Questions
Does disabling a feature delete its settings?
No. When you toggle a feature off in the Features hub, Vorssaint preserves its configuration. Re-enabling the feature later restores your previous settings without reconfiguration. This differs from the full uninstall script, which deletes all data.
Can I install features without granting all permissions upfront?
Yes. Vorssaint uses PermissionManager.swift to request only the permissions required by the specific feature you enable. For example, enabling Window Switcher may require Accessibility access, while Homebrew Manager needs no special permissions. You never grant permissions for features you don't use.
What happens if I disable a feature that other features depend on?
Independent features have no hard dependencies. Each Vorssaint module is designed to operate in isolation. Disabling one feature cannot break another because there are no cross-feature dependencies in the FeatureRegistry architecture.
Is the uninstall script safe to run if Vorssaint isn't currently running?
Yes. The script first attempts to quit the app gracefully with osascript, then proceeds with cleanup. If the app isn't running, that step simply completes without error, and the remaining removal steps execute normally.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →