
신뢰할 수 있는 localhost HTTPS — 로컬 CA, /etc/hosts, mDNS LAN 공유, 리버스 프록시. https://name.local → localhost:port로 매핑합니다.
로컬 개발을 위한 실제 HTTPS — TUI 및 LAN 공유 지원.
mkdev는 *.local에서 신뢰할 수 있는 HTTPS를 실행합니다. 단일 Go 바이너리: 인증 기관 + 리버스 프록시 + /etc/hosts + mDNS 브로드캐스트 + 완전한 TUI.
차별점:
https://app.local에 접속할 수 있습니다.mkdev를 실행하면 바로 TUI가 열립니다.internal/safeexec). PATH 기반 섀도잉이나 그룹 쓰기 가능 단축 경로가 없습니다.knownHost 허용 목록으로 제어됩니다. 와일드카드도, 미리 생성된 것도 아닙니다.mkdev install # CA + trust + daemon service + menu bar autostart
mkdev add myapp localhost:3000 # routes https://myapp.local → localhost:3000
curl https://myapp.local # 200 from your local app
install은 일회성입니다: CA를 생성하고, 시스템 저장소에 신뢰를 등록하고, 데몬 사용자 서비스(launchd / systemd)를 설치하고 활성화하며, 메뉴 바가 로그인 시 실행되도록 등록하고, GUI 세션이 있으면 즉시 바를 실행합니다. 데몬이 프록시를 소유합니다. TUI(mkdev 인자 없음)와 mkdev add | remove | list는 ~/.mkdev/daemon.sock을 통해 데몬과 통신합니다.

mkdev의 핵심 기능입니다. 실제 TLS로 같은 Wi-Fi의 모든 기기에 경로를 공유합니다 — 경고도, 터널 서비스도 없습니다.
s를 눌러 SHARE 열을 LAN으로 전환합니다.<name>.local → 이 머신의 LAN IP로 광고됩니다.https://<name>.local로 접속하세요. 기기가 mkdev CA를 신뢰하면(일회성) 경고가 표시되지 않습니다..local 경로뿐입니다. 다른 TLD도 프록시는 되지만 이름으로 LAN에서 접근할 수는 없습니다.s 토글은 즉시 적용됩니다 — mDNS 광고와 LAN 측 ACL은 다음 요청 시 업데이트됩니다. 재시작이 필요 없습니다.brew install venkatkrishna07/tap/mkdev
나중에 업그레이드:
brew update
brew upgrade mkdev
go install github.com/venkatkrishna07/mkdev/cmd/mkdev@latest
특정 버전으로 업그레이드:
go install github.com/venkatkrishna07/mkdev/cmd/[email protected]
macOS(Intel + Apple Silicon), Linux(amd64 + arm64), Windows(amd64)용 사전 빌드 바이너리가 Releases 페이지에 게시됩니다. 각 릴리스에는 checksums.txt와 cosign 키리스 서명(checksums.txt.sig + .pem)이 포함되어 있습니다. 검증 명령은 SECURITY.md#verifying-releases를 참조하세요.
macOS에서 Gatekeeper가 직접 다운로드한 바이너리를 차단하는 경우:
xattr -d com.apple.quarantine ./mkdev
git clone https://github.com/venkatkrishna07/mkdev.git
cd mkdev
task build
cp bin/mkdev ~/bin/ # or /usr/local/bin
**Go 1.25+**가 필요합니다.
mkdev install # CA, trust, daemon service, bar autostart — one command
mkdev # launch TUI
install 후 데몬은 백그라운드에서 실행되고 메뉴 바가 나타납니다(macOS, Linux GNOME/KDE, Windows). 바에는 데몬 상태, 경로 목록, 경로별 활성화/LAN 공유 토글이 표시됩니다. Quit는 데몬을 중지하지 않고 바만 종료합니다.
메뉴 바는 상시 UI입니다. 시스템 트레이에 있으며 ~/.mkdev/daemon.sock을 통해 데몬과 통신합니다. 로그인 시 실행되며(install이 자동 시작을 등록), mkdev bar로 포그라운드에서도 실행할 수 있습니다.
표시 정보:
mkdev v0.4.0 + 데몬 PID + 가동 시간 + 수신 중인 프록시 포트.name.tld → target과 접미사 배지( · disabled, · LAN)를 보여줍니다.동작 (경로 클릭):
https://name.tld를 엽니다.pbcopy / wl-copy / xclip / clip.exe).Enabled 플래그를 전환합니다. 비활성화된 경로는 저장소에 남지만 프록시되지 않습니다.바 수준 동작:
KeepAlive가 즉시 다시 시작하지 않도록 먼저 DisableUnit을 호출한 다음 소켓으로 종료를 보냅니다.참고:
mkdev daemon stop)뿐입니다. 데몬 프로세스를 직접 종료하면 launchd / systemd가 다시 시작시킵니다.바이너리를 교체하세요(brew upgrade / go install ...@latest / 새 다운로드). 다음에 mkdev 하위 명령을 실행하면 바이너리가 외부에 있는 부분들을 조정합니다: 데몬 plist / systemd 유닛과 바 자동 시작 항목을 새 바이너리를 가리키도록 다시 쓰고, 활성화된 경로에 대해 /etc/hosts를 다시 적용하며, CA가 삭제된 경우 다시 신뢰합니다. sudo 프롬프트는 인라인으로 실행됩니다. 데몬만 실행 중이고 CLI를 건드리지 않는 경우, 데몬은 자체 시작 시 안전한(sudo 없는) 작업을 수행하고 나머지는 다음 CLI 명령까지 대기시킵니다.
mkdev install을 다시 실행하면 동일한 작업을 명시적으로 수행하며 항상 안전합니다 — 모든 단계가 멱등적입니다.
| 플랫폼 | 신뢰 저장소 | 권한 상승 |
|---|---|---|
| macOS | 시스템 키체인 (security add-trusted-cert) | sudo / osascript |
| Linux | update-ca-trust / update-ca-certificates / trust extract-compat | sudo / pkexec |
| Windows | ROOT 시스템 저장소 (crypt32.dll 경유) | UAC (PowerShell RunAs) |
감지되는 Linux 배포판: Debian/Ubuntu (/usr/local/share/ca-certificates), RHEL/Fedora (/etc/pki/ca-trust/source/anchors), Arch (/etc/ca-certificates/trust-source/anchors), openSUSE (/usr/share/pki/trust/anchors).
Firefox는 자체 NSS 저장소를 사용하며 아직 지원되지 않습니다 — 시스템 Chrome/Safari/Edge/curl/wget은 모두 작동합니다.
| 명령어 | 용도 |
|---|---|
install | 일회성: CA + 신뢰 + 데몬 서비스 + 바 자동 시작. CA만 하려면 --no-service를 전달하세요. |
add <name> <target> | 경로를 추가합니다. /etc/hosts에 127.0.0.1 항목을 추가합니다. |
remove <name> | 경로와 해당 /etc/hosts 항목을 제거합니다. |
list | 저장소의 경로를 나열합니다. |
tui | TUI를 실행합니다(인자 없이 실행할 때의 기본 동작이기도 함). |
daemon serve | 데몬을 포그라운드로 실행합니다(보통 서비스 유닛이 구동). |
daemon stop | 실행 중인 데몬을 중지하고 사용자 서비스를 비활성화합니다. |
daemon status | 서비스의 설치/활성화/실행 상태를 보고합니다. |
bar | 메뉴 바 앱을 실행합니다. install에 의해 자동 시작됩니다. |
uninstall | CA 신뢰를 해제하고, /etc/hosts 항목을 제거하고, 데몬 + 바 자동 시작을 제거하고, ~/.mkdev/를 삭제합니다. |
version | 버전, 커밋, 빌드 날짜를 출력합니다. |
completion <bash|zsh|fish|powershell> | 셸 완성 스크립트를 출력합니다. |
hosts-helper | 숨김. /etc/hosts를 원자적으로 변경하기 위해 sudo로 호출됩니다. |
| 플래그 / 환경 변수 | 효과 |
|---|---|
--home <path> | ~/.mkdev 상태 디렉터리를 재정의합니다. |
--verbose, -v | stderr에 디버그 수준 로깅을 출력합니다. |
--version | 버전을 출력하고 종료합니다. |
MKDEV_HOME=<path> | --home과 동일합니다. |
<target>은 다음 중 하나를 허용합니다:
host:port e.g. localhost:3000
http://host[:port]/path e.g. http://localhost:3000/api
https://host[:port]/path e.g. https://gitlab.example.com