{"id":24544086,"url":"https://github.com/stoiandan/howdy","last_synced_at":"2026-05-19T17:12:27.058Z","repository":{"id":205144777,"uuid":"713481703","full_name":"stoiandan/Howdy","owner":"stoiandan","description":"Zero configuration network discovery tool for macOS","archived":false,"fork":false,"pushed_at":"2024-01-07T18:39:55.000Z","size":54,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T20:16:02.289Z","etag":null,"topics":["bonjour","bonjour-browser","bonjour-discovery","bonjour-service","network","swift","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stoiandan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-11-02T15:55:28.000Z","updated_at":"2023-12-21T08:02:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"5355ff59-5a24-4912-906e-7e99da219f84","html_url":"https://github.com/stoiandan/Howdy","commit_stats":null,"previous_names":["stoiandan/howdy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoiandan%2FHowdy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoiandan%2FHowdy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoiandan%2FHowdy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stoiandan%2FHowdy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stoiandan","download_url":"https://codeload.github.com/stoiandan/Howdy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243841223,"owners_count":20356446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bonjour","bonjour-browser","bonjour-discovery","bonjour-service","network","swift","swiftui"],"created_at":"2025-01-22T20:16:03.602Z","updated_at":"2026-05-19T17:12:27.023Z","avatar_url":"https://github.com/stoiandan.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Howdy\n\nHowdy helps you discover all your local LAN machines, including macOS, Windows and Linux.\nIt's able to tell your their _mDNS_ names.\n\n## How?\n\nHowdy makes use of Apple's `Bonjour`, a zero-configuration netwoork service, via `Network.framework`.\n\nIt uses its very own protocol called `zero`, build on top of `TCP/IP`. It's a simple protocol, really.\nIt contains a fixed sized header of `8 bytes` that represents an `UInt`, declering the size of future `json` encoded `hostname` (for Unicode support 😃):\n\n\u003cimg width=\"636\" alt=\"image\" src=\"https://github.com/stoiandan/Howdy/assets/10388612/56be2126-cdf6-4066-b536-1deb3b31c03c\"\u003e\n\nSo, every time a app instance starts, it publishes it's service on mDNS (Bonjour) and browse over other avlaible service on the local netowrk.\nIf it finds one, it sends it's hostname via the Howdy (zero) protocol.\n\nHere's and example of a Howdy instnace listing other three machines on the network:\n\n\u003cimg width=\"1012\" alt=\"image\" src=\"https://github.com/stoiandan/Howdy/assets/10388612/6312fbca-d2ec-463f-834e-2723d5c00472\"\u003e\n\nTo simulate these machines. I've used the `dns-sd` UNIX command to search for Bonjour services and resolve the port.\nI've then used netcat (`nc`) combined with echo to send an 8 byte `UInt` header via `UDP` and a plain-text string (for demo purposes):\n\n```zsh\necho -n -e '\\x09\\x00\\x00\\x00\\x00\\x00\\x00\\x00bar.local' | nc -u localhost 65172\n```\n\n## Why?\n\nWhile macOS's `Finder` does a good job in listing computers, sometimes they're simply not listed (probably because of OS policies) and\nnot enough info is available (for example the IP Address). \n`Howdy` allows you to retireve all that, without lowering security, it also gives you more info.\n\nPlans are to also allow file transfer via `Howdy` this is a good alternative to file sharing, as you don't have to start a share and turn it off, for sercutity,\nif all you want is to transfer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoiandan%2Fhowdy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstoiandan%2Fhowdy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoiandan%2Fhowdy/lists"}