Skip to content

About

Native macOS LAN scanner built with SwiftUI

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

LanScope Mac

CI Latest Release Downloads

LanScope Mac is a native macOS 14+ LAN scanner for local network administrators. It is built with Swift, SwiftUI, MVVM, async/await, and Network.framework.

Use LanScope Mac only on networks you own or are authorized to administer.

What's new in 0.3.0

Version 0.3.0 adds network profiles, device labels and notes, safe scan comparisons, on-demand latency/loss monitoring, Russian UI, Wi-Fi charts/export, and optional Bonjour enrichment. ARP-only devices are explicitly unconfirmed; cancellation and global probe limits are enforced. Existing settings are migrated with a pre-upgrade backup.

Monitoring starts only after an explicit action. Charts show measured samples; the Wi-Fi overlap diagram is not a measurement of airtime utilisation. Table-column customization requires macOS 14.4+; macOS 14.0–14.3 use the compact table and full inspector.

The downloadable 0.3.0 build is for Apple Silicon (arm64), uses an ad-hoc signature and is not notarized by Apple. Developer ID signing and notarization remain a separate release prerequisite for Apple-verified distribution.

Latest Release

Latest version: v0.3.0

Download for Apple Silicon, macOS 14+:

Release history is documented in CHANGELOG.md.

Screenshots

The following screenshots show the earlier 0.1.x interface. Version 0.2.0 replaces the emoji navigation and full-window animation with native SF Symbols, a compact activity illustration, and contextual controls.

Scan empty state

Settings

MVP Features

  • IP range input: 192.168.1.1-254, full ranges such as 192.168.1.10-192.168.1.40, single IP addresses, and CIDR ranges up to 4096 hosts, with strict validation.
  • Local IPv4 range detection.
  • Scan / Stop controls, progress reporting, and non-blocking scanning.
  • Ping-based discovery and TCP port scanning for common services: SSH, HTTP, HTTPS, SMB, AFP, VNC, RDP, and HTTP-alt.
  • Wi-Fi scanner for nearby networks with SSID, BSSID, signal, noise, channel, band, width, security, and PHY mode.
  • Configurable timeout and parallel scan limit.
  • ARP cache lookup through the Darwin routing table without root access or child processes.
  • Local IEEE OUI database in Resources/oui.json with 39k+ vendor records.
  • OUI database updates from Settings or with script/update_oui_database.rb.
  • Favorites and scan history stored locally with UserDefaults, with versioned backup before migration.
  • CSV / JSON export and selected-row clipboard copy.
  • Quick actions: Browser, SSH through Terminal, SMB, VNC, Copy IP, Copy MAC, Favorite, and Wake-on-LAN.
  • App icon, DMG volume icon, Finder layout, and custom DMG file icon from Resources/AppIcon.icns.
  • Native light/dark appearance, a collapsible device inspector, and accessibility-aware motion and materials.

Interface

LAN and Wi-Fi scans share the same status and result presentation. Results are available immediately; short row transitions never delay selection or export. The network illustration animates only while scanning in an active window and respects Reduce Motion. Toolbar and status surfaces respect Reduce Transparency and increased contrast.

Select a device to open its inspector, or toggle it with the toolbar's sidebar icon. Tables retain horizontal scrolling at smaller window sizes so network identifiers remain readable.

Installation

See INSTALL.md for installation instructions.

The current MVP app uses an ad-hoc signature, not a Developer ID certificate, and is not notarized. Download builds from GitHub Releases and follow the installation guide.

Run in Xcode

  1. Open Package.swift in Xcode.
  2. Select the LanScopeMac scheme.
  3. Make sure the run destination is My Mac.
  4. Press Run.

If Xcode asks you to accept the license, run:

sudo xcodebuild -license

Run from Terminal

/bin/bash ./script/build_and_run.sh

The script builds the SwiftPM executable target, stages a local app bundle in dist/LanScope Mac.app, copies resources, and launches it as a foreground macOS app.

Process verification:

/bin/bash ./script/build_and_run.sh --verify

Static validation:

/bin/bash ./script/validate_static.sh

Tests:

swift test

Vendor / OUI Database

The bundled OUI database works offline. To update it from the official IEEE CSV:

./script/update_oui_database.rb

Source: https://standards-oui.ieee.org/oui/oui.csv.

The same action is available in Settings -> Lookup -> Update OUI from IEEE. User-updated data is stored in ~/Library/Application Support/LanScope Mac/oui.json and takes precedence over bundled records.

Build a DMG

/bin/bash ./script/package_dmg.sh

The artifact is created at dist/LanScope Mac.dmg.

Packaging can reuse an existing Finder layout without UI automation: set LANSCOPE_DMG_LAYOUT_FILE to a .DS_Store file from a previous LanScope Mac volume with the same contents and background paths.

For an optimized app, build with BUILD_CONFIGURATION=release. If the checkout is in an iCloud-synced folder, stage signed artifacts outside that folder to avoid Finder metadata invalidating the signature:

export LANSCOPE_DIST_DIR=/tmp/lanscope-release
BUILD_CONFIGURATION=release /bin/bash ./script/build_and_run.sh --bundle-only
/bin/bash ./script/package_dmg.sh

The DMG contains:

  • LanScope Mac.app
  • /Applications shortcut
  • README.md
  • INSTALL.md
  • LICENSE
  • PRIVACY.md
  • custom Finder layout and background
  • app, volume, and DMG file icons

The DMG is intentionally not committed to git. Publish distributable builds through GitHub Releases.

Release Workflow

To publish a new version, update CHANGELOG.md first, then run:

/bin/bash ./script/release.sh 0.2.0

The release script updates app metadata, runs validation and tests, builds an optimized app bundle and DMG, verifies the DMG, commits the version bump, pushes main, creates the version tag, and publishes a GitHub Release with the DMG and checksum. It also honors LANSCOPE_DIST_DIR.

Architecture

  • App/ - app entry point and app-level state.
  • Features/Scanner - scan screen and scan empty-state animation.
  • Features/WiFi - Wi-Fi network scanner screen and Wi-Fi results table.
  • Features/Devices - table, sidebar, and detail panel.
  • Features/Favorites - favorite devices.
  • Features/History - scan history.
  • Features/Settings - scanner, lookup, local-network, and theme settings.
  • Core/NetworkScanner - async scanner, TCP probes, service catalog.
  • Core/WiFiScanner - CoreWLAN Wi-Fi scan integration and Location Services permission bridge.
  • Core/ARP - macOS ARP cache reader.
  • Core/VendorLookup - local OUI lookup and database updates.
  • Core/WakeOnLAN - UDP magic packet support.
  • Core/Export - CSV / JSON / clipboard export.
  • Models/ - Device, ScannerConfig, ScanHistory, and related models.
  • Persistence/ - UserDefaults persistence.
  • Utilities/ - IP parsing, local network detection, hostname resolution, and actions.

MVP Limitations

  • ICMP discovery uses system /sbin/ping; the app does not use raw sockets and does not require root access.
  • TCP port scanning is implemented with Network.framework.
  • macOS 15+ asks for Local Network access before the app can scan nearby devices.
  • Wi-Fi scanning uses public CoreWLAN APIs and does not require root access. macOS may require Location Services permission before SSID and BSSID are visible.
  • MAC addresses are available only when macOS has the device in the ARP cache.
  • Vendor lookup depends on the local OUI database. Randomized or locally administered MAC addresses are shown as Locally Administered, and missing OUIs are shown as Unknown.

Security And Privacy

LanScope Mac is local-first. It does not send scan results, device data, favorites, or history to external services.

See PRIVACY.md and SECURITY.md.

About

Native macOS LAN scanner built with SwiftUI

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages