DBDelve
DBDelve는 Rust 기반 빠른 다중 엔진 데이터베이스 클라이언트, 무료 오픈소스, 텔레메트리 없음
Holistic view of macOS network status: interfaces, VPN/tunnel, DNS, reachability
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A holistic view of network status on macOS: interfaces, VPN/tunnel state, DNS resolvers (including split-tunnel/split-DNS), and reachability — the things you end up checking manually when the Cisco VPN acts up.
netcheck reports:
NWPath verdict on the primary route: status
(satisfied / unsatisfied / requires-connection), primary interface type, and
whether the link is metered or in Low Data Modenetcheck is macOS, Apple Silicon (arm64) only. It ships as a native SwiftUI
app plus a small netcheck CLI, both built on one Swift network-probing
engine (NetStatus).
brew tap hugoh/tap
brew install netcheck # netcheck CLI
brew install --cask netcheck # native SwiftUI app
You can install either or both — they're independent.
Grab the latest release from the Releases page:
netcheck-<version>-aarch64-apple-darwin.tar.gz — the netcheck binary.
Unpack and put it on your PATH.NetCheck-<version>.zip — the native app. Unzip and drag
NetCheck.app to /Applications.[!NOTE] Both artifacts are ad-hoc signed, not notarized with a Developer ID. Homebrew strips the quarantine attribute on install, so they run normally. With a direct download, macOS flags the app as from an unidentified developer on first launch — right-click (or Control-click) and choose Open, or clear it:
xattr -cr /Applications/NetCheck.app(for the CLI:xattr -d com.apple.quarantine ./netcheck).
Requires the Swift toolchain (Xcode or the Command Line Tools).
mise run build:cli # release netcheck CLI
mise run build:app # dev build of NetCheck.app
mise run bundle:swiftui # ad-hoc-signed release NetCheck.app bundle
or plain SwiftPM:
swift build --package-path apps/NetCheck
swift test --package-path apps/NetCheck
swift test runs the deterministic suite (no network). Add the live network
and system probes with:
mise run test-live # or: NETCHECK_LIVE_TESTS=1 swift test --package-path apps/NetCheck
Lint, format, and dead-code checks run together with:
mise run check # swiftlint + swiftformat + periphery + icon
mise run fix # apply swiftformat
The CLI prints JSON to stdout — one snapshot per subcommand, meant for
scripting and piping into jq:
netcheck # full snapshot as JSON (same as `netcheck status`)
netcheck interfaces
netcheck dns
netcheck vpn
netcheck proxy
netcheck wifi
netcheck path # primary network path (NWPath)
netcheck captive # captive-portal status
netcheck connection # connectivity tier ("online" / "limited" / "offline")
netcheck ping 1.1.1.1 8.8.8.8
netcheck resolve google.com github.com
netcheck connect amazon.com microsoft.com --port 443
Example — netcheck vpn:
{
"tunnels": [],
"primary_interface": "en0",
"connected": false,
"split_tunnel": false,
"routed_subnets": []
}
Output is JSON; there is no stability guarantee beyond that. null-valued
fields are omitted.
The app shows the same data across four tabs (Overview, DNS, Reachability, Wi-Fi) and auto-refreshes: a re-check fires immediately on any OS network-path change (interface up/down, IP/DNS reconfig, a VPN connecting or dropping), backed by an adaptive-interval poll (60s while healthy, 10s once a check comes back degraded, a full re-check every fifth tick) as a safety net for failures that produce no path event — a blackholed route, a captive-portal sign-in on an unchanged Wi-Fi association.
Fields fill in progressively as each probe finishes, so a slow probe (the
captive-portal check has a 10s timeout) never blocks the rest of the
panel. Shortcuts: ⌘R refresh, ⌘A toggle auto-refresh, ⌘1–⌘4 switch
tabs, ⌘Q quit.
Each status collection includes a plain-HTTP (not HTTPS) request to
captive.apple.com — the same captive-portal-check endpoint macOS itself
uses — to determine whether the network is behind a captive portal.