SeaLegs is a privacy-first macOS menu bar app that adds a transparent overlay for visual comfort on top of 3D games. It can show a soft edge vignette, center reference dot, minimal crosshair, horizon guide, dashboard frame, virtual nose, and peripheral frame to help reduce visual discomfort while playing.
SeaLegs can also use Screen Recording permission for an optional Adaptive mode. In Adaptive mode, it analyzes low-resolution screen motion locally on your Mac, converts frames into numeric motion metrics, and adjusts overlay strength automatically. It does not store screenshots, video, audio, OCR output, typed text, key strings, or raw mouse paths.
SeaLegs is not a medical device. It does not diagnose, treat, or prevent motion sickness. If you experience severe dizziness, vomiting, headache, visual symptoms, or other discomfort, stop playing and rest.
SeaLegs is an overlay utility. It is not an anti-cheat bypass, cheat tool, game automation tool, memory patcher, injector, or gameplay modifier.
Use SeaLegs at your own risk with online games, competitive games, and games protected by anti-cheat systems. Some games may restrict overlays, screen capture, accessibility helpers, or unsigned/notarized apps. The project maintainers are not responsible for account restrictions, matchmaking penalties, bans, data loss, gameplay issues, or other consequences caused by using SeaLegs with a game or platform.
Do not use SeaLegs to bypass anti-cheat systems, modify game memory, automate gameplay, gain unfair advantage, or violate a game's terms of service.
- Supported: Apple Silicon Mac, macOS 14 or later
- Recommended: windowed or borderless-window games
- Limited: some native fullscreen games may not show overlays because of macOS Spaces behavior
- Unsupported: Windows, Linux, VR, anti-cheat bypassing, game memory patching, gameplay automation
The downloadable DMG is ad-hoc signed with Hardened Runtime, but it is not signed with an Apple Developer ID and is not notarized by Apple. Gatekeeper will therefore show an unidentified-developer warning on first launch.
-
Download
SeaLegs-0.1.0-arm64.dmgandSHA256SUMS.txtfrom GitHub Releases. -
In Terminal, open the download directory and verify the artifact:
shasum -a 256 -c SHA256SUMS.txt
-
Open the DMG and drag
SeaLegs.apptoApplications. -
Try to open SeaLegs once. macOS is expected to block this first attempt.
-
Open System Settings > Privacy & Security, scroll to Security, and click
Open Anywayfor SeaLegs. Confirm with your Mac password or Touch ID. -
Open SeaLegs again and follow the in-app permission guidance if you want to use Adaptive mode or the optional input signal.
Do not disable Gatekeeper globally. The Open Anyway exception applies only
to this copy of SeaLegs. Because ad-hoc signatures identify individual builds,
an update may require you to allow SeaLegs again and re-enable Screen Recording
(called Screen & System Audio Recording on some macOS versions) or Input
Monitoring before reopening the app and pressing Refresh.
SeaLegs helps you add stable visual references to games that move quickly or use strong camera effects.
Core features:
- Menu bar app with quick access to settings and overlay actions
- Transparent click-through overlay on the active game display by default, with an optional all-displays mode; the active target follows the game window when it moves between displays
- Soft edge vignette for reducing peripheral motion intensity
- Center dot and minimal crosshair for stable visual reference
- Horizon guide for driving, flying, and large camera turns
- Dashboard frame and virtual nose for cockpit-like grounding
- Peripheral frame for subtle screen boundary awareness
- Manual strength modes: Off, Low, Medium, High
- Optional Adaptive mode that adjusts strength from local motion analysis
- Game profiles and presets for different game categories
- Feature demo that shows all visual aids at high contrast for 12 seconds
- Hotkeys for overlay toggle, strength changes, emergency mode, discomfort rating, and debug HUD
- Local-only numeric session logs and reports
- Game settings checklist for common comfort-related options
- Calibration and diagnostics export
SeaLegs has two main operating modes.
Manual modes do not require Screen Recording permission.
- SeaLegs creates a transparent macOS overlay window above the game.
- The overlay ignores mouse and keyboard input, so clicks continue to go to the game.
- You choose Low, Medium, or High strength from the menu bar or Settings.
- SeaLegs draws the selected vignette and visual reference elements with Metal.
Adaptive mode requires Screen Recording permission.
- SeaLegs captures a low-resolution view of the active game screen.
- The frame is reduced in memory for analysis.
- SeaLegs estimates peripheral motion, horizontal/vertical motion, zoom-like expansion, rotation-like movement, and repeating motion patterns.
- The motion score is smoothed over time.
- The overlay becomes stronger when motion risk rises and softer when the screen is stable.
- Raw frames are discarded after analysis.
Adaptive mode is designed for comfort tuning, not game analysis, cheating, or automation.
- Build or install SeaLegs.
- Launch the app.
- Click the SeaLegs icon in the macOS menu bar.
- Choose
Show Feature Demoto confirm the overlay is visible. - Open Settings > Overlay and choose a mode.
- If you want automatic strength adjustment, open Settings > Adaptive and grant Screen Recording permission.
- Add the current game as a profile from the menu bar if you want automatic game matching.
- On a multi-display Mac, choose
Active Game DisplayorAll Displaysin Settings > General.
If an existing saved profile feels too subtle, use Apply Recommended Visual Aids in Settings > Overlay.
Screen Recording permission is only required for Adaptive mode. Basic overlay and manual modes work without Screen Recording permission.
Input Monitoring permission is optional and off by default. If enabled, it is used only as an auxiliary turn signal. SeaLegs remembers this opt-in and starts the signal automatically after permission has been granted and the app is reopened.
SeaLegs does not store:
- Screenshots
- Video
- Audio
- OCR output
- Typed text
- Key strings
- Raw mouse paths
- Raw capture frames
Local files:
~/Library/Application Support/SeaLegs/profiles.json: game profiles and overlay settings~/Library/Application Support/SeaLegs/settings.json: language, telemetry, and privacy settings~/Library/Application Support/SeaLegs/Sessions/*.jsonl: numeric motion samples, profile identifiers, permission state, optional discomfort ratings, and emergency-mode events
Session logs are retained for 14 days by default and can be disabled or deleted in Settings > Privacy.
Diagnostics export includes numeric state and salted hashes only. It should not include screenshots, video, OCR output, typed text, raw app identifiers, or full executable paths.
- Toggle overlay:
Option + Command + F10 - Increase strength:
Option + Command + F11 - Decrease strength:
Option + Command + F9 - Emergency comfort:
Option + Command + F12 - Record discomfort rating:
Control + Option + Command + S - Debug HUD:
Control + Option + Command + D
All core actions are also available from the menu bar.
cd SeaLegs
ruby Scripts/generate_xcodeproj.rb
xcodebuild -project SeaLegs.xcodeproj -scheme SeaLegs -destination 'platform=macOS' buildBuild the ad-hoc signed Apple Silicon DMG used for 0.x releases from a clean Git worktree:
cd SeaLegs
./Scripts/build_dmg.shArtifacts are written to dist/v0.1.0/ by default. The script verifies
the app version, build number, architecture, Hardened Runtime signature, DMG
contents, and SHA-256 checksum before publishing the final files.
For more stable local permission behavior, generate the project with your Apple development team:
cd SeaLegs
SEALEGS_DEVELOPMENT_TEAM="<TEAM_ID>" ruby Scripts/generate_xcodeproj.rb
xcodebuild -project SeaLegs.xcodeproj -scheme SeaLegs -destination 'platform=macOS' buildcd SeaLegs
xcodebuild -project SeaLegs.xcodeproj -scheme SeaLegs -destination 'platform=macOS' testcd SeaLegs
xcodebuild -project SeaLegs.xcodeproj -scheme SeaLegs -destination 'platform=macOS' build
open ~/Library/Developer/Xcode/DerivedData/SeaLegs-*/Build/Products/Debug/SeaLegs.appAfter launching, use the SeaLegs menu bar icon to open Settings. Start with Show Feature Demo so you can confirm that center dot, crosshair, horizon guide, dashboard frame, virtual nose, and peripheral frame are all rendering correctly.
If Adaptive mode does not work or Screen Recording remains Not Granted:
- In SeaLegs Settings > Adaptive, click
Request Access. - In System Settings > Privacy & Security > Screen Recording, enable SeaLegs.
- If macOS asks for it, quit and reopen SeaLegs.
- Return to Settings > Adaptive and click
Refresh.
If an active capture stream is interrupted, SeaLegs falls back to the basic overlay and retries a limited number of times. Sleeping and waking the Mac also re-evaluates the active game and restarts Adaptive mode when it is still applicable.
If frames stop arriving without an explicit ScreenCaptureKit error, the status
changes to Waiting for samples automatically. Hiding the overlay also stops
Adaptive capture; editing a profile while hidden does not restart it.
If permission state is stuck during development, reset it:
tccutil reset ScreenCapture com.dawncrow.SeaLegsThen reopen SeaLegs and request permission again.
SeaLegs 0.x downloads are distributed without Developer ID signing or Apple notarization. Every release includes the manual Gatekeeper instructions above, an SHA-256 checksum, and a build manifest. The planned 1.0 release will use Developer ID signing and Apple notarization before it is presented as a stable release.
See RELEASE.md for the release process.
SeaLegs is prepared for open-source publication under the MIT License.
- License: LICENSE
- Contributing guide: CONTRIBUTING.md
- Security policy: SECURITY.md
- Support policy: SUPPORT.md
- Code of conduct: CODE_OF_CONDUCT.md
- Changelog: CHANGELOG.md
- Roadmap: ROADMAP.md
- Architecture: docs/ARCHITECTURE.md
- Privacy design: docs/PRIVACY.md
- Development guide: docs/DEVELOPMENT.md
- App icon:
SeaLegs/SeaLegs/Assets.xcassets/AppIcon.appiconset - Menu bar icon:
SeaLegs/SeaLegs/Assets.xcassets/MenuBarIcon.imageset - Accent color:
SeaLegs/SeaLegs/Assets.xcassets/AccentColor.colorset - Generator:
SeaLegs/Scripts/generate_app_icon.py
To regenerate icon assets:
cd SeaLegs
python3 Scripts/generate_app_icon.py
ruby Scripts/generate_xcodeproj.rb