
roamr v0.1.4
현재 위치에 가장 적합한 WiFi 네트워크를 찾아보세요 — 저장된 모든 네트워크를 신호 막대가 아닌 실제 품질 기준으로 평가합니다.
roamr
지금 있는 곳에서 가장 좋은 WiFi 네트워크를 찾으세요. 연결을 끊지 않고.
여러 WiFi 네트워크가 있는 사무실(또는 집)에서는 이동에 따라 가장 좋은 네트워크가 바뀌며, "가장 좋음"은 단순히 신호 막대만으로 정해지지 않습니다. 네트워크가 신호 막대가 가득 차 보여도 느릴 수 있습니다: 혼잡한 2.4GHz, 오래된 WiFi 표준, 혼잡한 채널. roamr은 OS가 이미 알고 있는 주변의 모든 저장된 네트워크 정보를 읽어 실제 사용 품질로 점수를 매기고, 그 이유를 설명하며, 어떤 네트워크를 사용해야 하는지 알려줍니다.

상태: macOS에서 사용 가능(brew install --cask sourabh-khot65/tap/roamr)하며, 함께 제공되는 메뉴바 앱도 있습니다. Windows는 작동이 확인되었고, Linux는 구현되어 미리보기 단계입니다(플랫폼 참조). Mac이 없으신가요? roamr --demo를 사용해 보세요.
설치
macOS(권장). Homebrew로 설치하세요. cask는 설치 시 quarantine 속성을 제거하므로, 브라우저 다운로드에서 발생하는 Gatekeeper 경고 없이 바이너리가 실행됩니다:
brew install --cask sourabh-khot65/tap/roamr
Windows. Scoop으로 설치하세요:
scoop bucket add roamr https://github.com/sourabh-khot65/scoop-bucket
scoop install roamr
모든 플랫폼. 최신 릴리스에서 바이너리를 다운로드하거나, Go 1.26+로 소스에서 빌드하세요:
go install github.com/sourabh-khot65/roamr/cmd/roamr@latest
Releases 페이지의 바이너리(Homebrew와 달리)는 서명되지 않았으므로 macOS의 Gatekeeper가 quarantine 처리합니다. xattr -d com.apple.quarantine ./roamr로 한 번 해제하면 됩니다. Homebrew 설치는 영향을 받지 않습니다. roamr 자체 바이너리의 공증(notarization)은 계획되어 있지만 v0.x 범위에서는 제외됩니다.
빠른 시작
설치가 끝나면 내장 데모를 사용해 보세요(WiFi 하드웨어 불필요):
roamr --demo --why # or, from source: go run ./cmd/roamr --demo --why
→ Switch to Office-6E — clearly better here.
Office-6E ▀▀▀▀▁ 86% 6GHz ax score 95
- 6 GHz — fast, uncongested
- channel is clear
Office-5G ▀▀▀▀▀ 92% 5GHz ax score 93
- strong signal (-54 dBm)
- channel is clear
Office-Guest ▀▀▀▁▁ 68% 5GHz ac score 81
- channel is clear
▸ Office-2G ▀▀▀▀▀ 100% 2.4GHz n score 69
- strong signal (-47 dBm)
- 2.4 GHz — slower, more interference
- WiFi 4 — older, slower standard
현재 Office-2G(▸ 표시)에 100% 신호로 연결되어 있지만, roamr은 이 네트워크를 오래된 WiFi 4의 2.4GHz라는 이유로 마지막으로 순위를 매기고 대신 Office-6E를 추천합니다. "신호 막대 가득"과 "실제로 좋은" 사이의 이 간극이 바로 roamr의 핵심입니다.
명령어
| 명령어 | 기능 |
|---|---|
roamr | 현재 위치에서 알려진 최상의 네트워크 추천(기본값) |
roamr current | 연결 중인 네트워크 진단(지연 시간/지터 포함) |
roamr list | 알려진 네트워크와 해당 점수 나열 |
roamr watch | 지속적으로 샘플링하고, 하나가 지속적으로 더 나을 때만 전환 제안 |
roamr speedtest | 연결 중인 네트워크의 실제 다운로드 처리량 측정 |
플래그: --why(점수 설명), --json(기계 판독 가능), --demo(하드웨어 불필요), --interval / --samples(watch용).
roamr은 조언만 제공합니다: OS가 알고 있는 정보를 읽을 뿐 연결을 절대 변경하지 않습니다. 어떤 저장된 네트워크가 가장 좋은지 알려주며, 전환은 OS의 Wi-Fi 메뉴에서 직접 하면 됩니다.
watch는 각 네트워크의 점수를 시간에 따라 평활화(EMA)하고, 도전자가 여러 연속 샘플 동안 현재 네트워크를 확실한 차이로 앞설 때만 전환을 알리므로, 신호 노이즈나 2.4/5GHz 밴드 스티어링 때문에 추천이 흔들리지 않습니다.
작동 방식
점수 산정은 수동적이며 연결을 끊지 않습니다. 신호, 대역, 채널 혼잡도, WiFi 표준, 그리고(연결 중인 네트워크의 경우) 실시간 지연 시간을 고려합니다. 자세한 내용은 docs/architecture.md에 있으며, 플랫폼 지원은 하나의 플러그형 지점 뒤에 구현되어 docs/adding-a-platform.md에 설명되어 있습니다.
메뉴바 앱(macOS)
함께 제공되는 메뉴바 앱은 실시간 순위 목록과 그 "이유"를 드롭다운으로 표시합니다. 품질별 색상의 점수, 신호 막대, 그리고 어떤 네트워크가 지속적으로 더 나을 때 주황색 신호를 표시합니다. roamr watch --json의 출력을 읽으므로 모든 점수 산정은 CLI에 그대로 유지됩니다. CLI와 마찬가지로 조언만 제공하며 사용자를 대신해 전환하지 않습니다.
make app # build macos/Roamr.app (Swift, no Xcode needed)
make install-app # build and install it to /Applications
플랫폼
| OS | 제공자 | 상태 |
|---|---|---|
| macOS | macwifi를 통한 서명된 CoreWLAN 헬퍼(ADR-0002) | 작동 중(Apple Silicon, macOS 13+) |
| Windows | 네이티브 WLAN API(wlanapi.dll, ADR-0004) | 작동 중(기기에서 확인됨, 위치 서비스 필요) |
| Linux | nmcli(NetworkManager) | 구현됨(픽스처 테스트 완료, 실기기 확인 대기 중) |
macOS는 WiFi 세부 정보를 읽으려면 위치 권한이 필요합니다(첫 실행 시 내장 헬퍼에 부여됨). roamr을 빌드하거나 실행하는 데 유료 Apple 계정은 필요하지 않습니다(ADR-0002 참조). macwifi 의존성은 **Go 1.26+**가 필요하며 Apple Silicon을 대상으로 합니다. macOS는 PHY 모드를 보고하지 않으므로 해당 점수 신호는 macOS에서 건너뜁니다.
개발
go build ./... # build everything
go test ./... # run tests (no WiFi hardware needed)
go vet ./...
라이선스
MIT. LICENSE 참조.