
विश्वसनीय 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 पर किसी भी डिवाइस के साथ रूट साझा करें — कोई चेतावनी नहीं, कोई टनल सेवा नहीं।
LAN पर बदलने के लिए s दबाएँ।<name>.local → इस मशीन के LAN IP के रूप में विज्ञापित होता है।https://<name>.local पर जाएँ। एक बार डिवाइस mkdev CA पर भरोसा कर ले (एक-बार), तो कोई चेतावनी नहीं।.local रूट mDNS पर ब्रॉडकास्ट होते हैं। अन्य 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 फ़्लैग बदलता है। अक्षम रूट स्टोर में रहते हैं लेकिन प्रॉक्सी होना बंद कर देते हैं।बार-स्तरीय क्रियाएँ:
DisableUnit कॉल करता है ताकि launchd / systemd KeepAlive उसे तुरंत पुनः स्पॉन न करे, फिर सॉकेट पर शटडाउन भेजता है।नोट:
mkdev daemon stop) पर्यवेक्षित डेमन को साफ़ तरीके से रोक सकते हैं — डेमन प्रोसेस को सीधे मारने पर launchd / systemd उसे पुनः स्पॉन कर देगा।बाइनरी बदलें (brew upgrade / go install ...@latest / नया डाउनलोड)। अगली बार जब आप कोई mkdev सबकमांड चलाएँगे, तो बाइनरी उन हिस्सों को समेटती है जो इसके बाहर रहते हैं: डेमन plist / systemd यूनिट और बार ऑटोस्टार्ट प्रविष्टि को नई बाइनरी की ओर इंगित करने के लिए फिर से लिखती है, सक्षम रूट्स के लिए /etc/hosts को फिर से स्थापित करती है और यदि CA हटा दिया गया हो तो उसे फिर से विश्वसनीय बनाती है। Sudo प्रॉम्प्ट इनलाइन चलते हैं। यदि आपके पास केवल डेमन चल रहा है और CLI को कभी नहीं छूते, तो डेमन अपने स्टार्टअप पर सुरक्षित (बिना-sudo) काम करता है और बाकी को अगले CLI कमांड तक कतार में रखता है।
mkdev install को दोबारा चलाना यही काम स्पष्ट रूप से करता है और हमेशा सुरक्षित है — हर चरण इडेम्पोटेंट है।
पहचाने जाने वाले 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 सभी काम करते हैं।
<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
HTTPS अपस्ट्रीम्स के लिए (जैसे, कॉर्पोरेट VPN पर एक निजी GitLab) अपस्ट्रीम का TLS सर्टिफिकेट सिस्टम ट्रस्ट स्टोर के विरुद्ध सत्यापित होना चाहिए। निजी CA के रूट को OS कीचेन में जोड़ने की आवश्यकता होती है।
hosts-helper को सीधे कॉल करने के लिए नहीं बनाया गया है। add / remove विशेषाधिकार प्राप्त /etc/hosts लेखन करने के लिए उसी बाइनरी को sudo के अंतर्गत पुनः आह्वान करते हैं।
TLD नोट।
.localरूट्स को mDNS रिस्पॉन्डर चाहिए (macOS पर हमेशा-चालू, Linux परnss-mdnsइंस्टॉल होने पर उपलब्ध)।.test/.dev/.localhostअकेले/etc/hostsके ज़रिए हर जगह काम करते हैं। मेल खाने के लिए कॉन्फ़िग मेंtldसेट करें।
कॉन्फ़िग ~/.mkdev/config.toml पर रहता है। डिफ़ॉल्ट:
tld = ".local" # appended to bare names in `add`
proxy_port = 443 # binding :443 requires sudo on serve
theme = "auto" # reserved for future TUI
log_retention = "7d" # reserved
log_max_size = "100MB" # reserved
कॉन्फ़िग डायरेक्टरी को --home <path> या MKDEV_HOME=... से ओवरराइड करें।
~/.mkdev/ca/ पर एक ECDSA P-256 रूट CA जनरेट करता है। प्राइवेट की का मोड 0o400 है।security), Linux CA-bundle डायरेक्टरी + update-ca-*, Windows ROOT स्टोर crypt32.dll के ज़रिए। ट्रस्ट-स्टोर एकीकरण mkcert (BSD-3) से अनुकूलित है — LICENSE-MKCERT देखें।add पर, डेमन ~/.mkdev/state.db पर एक bbolt KV में रूट लिखता है और sudo-आह्वानित हेल्पर सबकमांड के ज़रिए /etc/hosts में 127.0.0.1 <name>.<tld> पंक्ति जोड़ता है।यह टूल आपके सिस्टम ट्रस्ट स्टोर में एक प्राइवेट CA इंस्टॉल करता है। ~/.mkdev/ca/rootCA-key.pem तक पढ़ने की पहुँच रखने वाला कोई भी TLS सर्टिफिकेट जारी कर सकता है जिन पर आपकी मशीन भरोसा करेगी। की 0o400 (केवल मालिक पढ़ सकता है) के साथ बनाई जाती है।
0.0.0.0 बाइंड करता है, लेकिन एक कनेक्शन-स्रोत ACL उन रूट्स पर LAN रिक्वेस्ट को 403 करता है जो स्पष्ट रूप से shared चिह्नित नहीं हैं। लूपबैक हमेशा गुजरता है।add / remove /etc/hosts बदलने के लिए sudo आह्वान करते हैं। खतरे के मॉडल और os.Executable()-समाधानित हेल्पर पाथ्स के आसपास की ज्ञात सीमा के लिए SECURITY.md देखें।mkdev uninstall # stops + disables daemon, untrusts CA, clears /etc/hosts,
# removes daemon service + bar autostart, wipes ~/.mkdev/
यदि कुछ अटक जाए, तो Keychain Access.app खोलें, mkdev खोजें और हाथ से हटा दें। फिर grep mkdev /etc/hosts चलाएँ और किसी भी अवशेष को साफ करें।
डेमन प्रॉक्सी और रूट स्टोर का मालिक है। यह ~/.mkdev/daemon.sock पर एक लोकल HTTP API प्रदर्शित करता है (केवल-मालिक 0600)। TUI, CLI सबकमांड्स और मेन्यू बार — सभी डेमन के क्लाइंट हैं — केवल डेमन के पास bbolt लॉक होता है।
mkdev install डेमन को यूज़र-सर्विस (macOS पर launchd LaunchAgent, Linux पर systemd --user) के रूप में इंस्टॉल करता है और इसे सक्षम करता है। यह पृष्ठभूमि में चलता है और लॉगआउट / लॉगिन के बाद भी बना रहता है।
mkdev daemon status # installed / enabled / running
mkdev daemon stop # stop + disable (prevents respawn)
curl --unix-socket ~/.mkdev/daemon.sock http://x/v1/status
curl --unix-socket ~/.mkdev/daemon.sock http://x/v1/routes
curl --unix-socket ~/.mkdev/daemon.sock -X POST http://x/v1/routes \
-H 'Content-Type: application/json' \
-d '{"name":"foo","target":"localhost:3000"}'
curl --unix-socket ~/.mkdev/daemon.sock -X DELETE http://x/v1/routes/foo
आगे:
/api → 8080, /ws → 9000)।~/.mkdev/ca/rootCA.pem को Settings → Privacy & Security → Certificates → View Certificates → Authorities → Import के अंतर्गत मैन्युअल रूप से आयात करें।~/.mkdev/config.toml में proxy_port = 8443 सेट करें और https://name.local:8443 उपयोग करें।mkdev add बार-बार sudo माँगता है। Sudo का प्रति-सत्र कैश समाप्त हो जाता है (डिफ़ॉल्ट 5 मिनट)। इसके बजाय TUI का Domains टैब उपयोग करें — यह osascript (macOS GUI प्रॉम्प्ट) या pkexec (Linux Polkit) के ज़रिए एलिवेट करता है।/etc/hosts में उस नाम के लिए पहले से एक प्रविष्टि है। mkdev add इडेम्पोटेंट है और केवल तब जोड़ता है जब कोई mkdev-प्रबंधित प्रविष्टि मौजूद न हो। पिछली प्रविष्टि को हाथ से हटाएँ या कोई अलग नाम चुनें।CONTRIBUTING.md देखें।
mkdev का ट्रस्ट-स्टोर एकीकरण — macOS पर Keychain/security, Linux पर CA-bundle + update-ca-*, Windows पर crypt32.dll ROOT स्टोर, और NSS से सटे पथ — Filippo Valsorda के mkcert से अनुकूलित है, BSD-3। उस पूर्व कला के बिना, यह परियोजना काफी कठिन होती। अपस्ट्रीम लाइसेंस के लिए LICENSE-MKCERT देखें।
TUI Charmbracelet's Bubble Tea / Bubbles / Lipgloss से बनाया गया है। mDNS hashicorp/mdns के ज़रिए। लोकल KV bbolt के ज़रिए।
MIT LICENSE।
| प्लेटफ़ॉर्म | ट्रस्ट स्टोर | एलिवेशन |
|---|
| macOS | System Keychain (security add-trusted-cert) | sudo / osascript |
| Linux | update-ca-trust / update-ca-certificates / trust extract-compat | sudo / pkexec |
| Windows | ROOT system store via crypt32.dll | UAC (PowerShell RunAs) |
| कमांड | उद्देश्य |
|---|
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 के ज़रिए आह्वान होता है। |
| फ़्लैग / env | प्रभाव |
|---|
--home <path> | ~/.mkdev स्टेट डायरेक्टरी को ओवरराइड करें। |
--verbose, -v | stderr पर डीबग-स्तरीय लॉगिंग। |
--version | संस्करण प्रिंट करें और बाहर निकलें। |
MKDEV_HOME=<path> | --home के समतुल्य। |
| फ़ील्ड | डिफ़ॉल्ट | नोट्स |
|---|
tld | .local | जब add <name> में कोई डॉट न हो तो स्वतः जोड़ा जाता है। |
proxy_port | 443 | यदि आपका प्लेटफ़ॉर्म यूज़र-सर्विस को :443 बाइंड नहीं करने देता तो 8443 सेट करें। |
theme | auto | आगामी TUI के लिए आरक्षित। |
log_retention | 7d | आरक्षित। |
log_max_size | 100MB | आरक्षित। |
0.0.0.0:<proxy_port>add / remove पर प्रॉक्सी की रूट टेबल इन-प्रोसेस रीलोड होती है, कोई रीस्टार्ट नहीं।0.0.0.0 बाइंड करता है, लेकिन नॉन-लूपबैक रिक्वेस्ट 403 होती हैं जब तक कि मेल खाने वाला रूट shared चिह्नित न हो — LAN शेयरिंग देखें।Location और Set-Cookie Domain को वापस प्रॉक्सी डोमेन पर फिर से लिखा जाता है ताकि क्लाइंट क्रेडेंशियल न गिराएँ।