{"id":23161666,"url":"https://github.com/danielpgross/friendly_neighbor","last_synced_at":"2025-05-12T13:06:44.868Z","repository":{"id":192039811,"uuid":"685700320","full_name":"danielpgross/friendly_neighbor","owner":"danielpgross","description":"Server that responds to ARP (IPv4) and NDP (IPv6) requests on behalf of neighboring machines. Useful for keeping sleeping machines accessible on the network.","archived":false,"fork":false,"pushed_at":"2023-10-10T15:33:23.000Z","size":202,"stargazers_count":22,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-12T13:06:32.515Z","etag":null,"topics":["arp","homeserver","ndp","networking","wake-on-lan"],"latest_commit_sha":null,"homepage":"https://danielpgross.github.io/friendly_neighbor/howto-sleep-wake-on-demand","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielpgross.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-31T20:08:57.000Z","updated_at":"2025-03-24T14:55:59.000Z","dependencies_parsed_at":"2023-09-02T07:46:48.168Z","dependency_job_id":"eb99b703-fb99-4c94-879c-5b77fc94b91d","html_url":"https://github.com/danielpgross/friendly_neighbor","commit_stats":null,"previous_names":["danielpgross/friendly_neighbor"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpgross%2Ffriendly_neighbor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpgross%2Ffriendly_neighbor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpgross%2Ffriendly_neighbor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpgross%2Ffriendly_neighbor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielpgross","download_url":"https://codeload.github.com/danielpgross/friendly_neighbor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745151,"owners_count":21957317,"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":["arp","homeserver","ndp","networking","wake-on-lan"],"created_at":"2024-12-17T23:15:06.855Z","updated_at":"2025-05-12T13:06:44.799Z","avatar_url":"https://github.com/danielpgross.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Friendly Neighbor\n\n[![friendly-neighbor](https://snapcraft.io/friendly-neighbor/badge.svg)](https://snapcraft.io/friendly-neighbor)\n\n\u003cimg src=\"logo.jpg\" alt=\"Cartoon showing waving computer in doorway of house\" width=\"200\" height=\"200\" align=\"right\" /\u003e\n\nFriendly Neighbor is a network server that responds to ARP and NDP requests on behalf of other LAN devices. Think of it as applying a set of static IP-to-MAC address mappings for all devices on your LAN.\n\nIts main use-case is enabling network packets to be sent to sleeping machines so that they can be woken up on demand using wake-on-unicast. [This blog post](https://dgross.ca/blog/linux-home-server-auto-sleep/) explains the technique in detail.\n\n## Features\n* Super lightweight and performant, built with Zig\n* Built with libpcap for efficient, low-overhead packet filtering\n* Supports different CPU architectures, including x86_64 and Raspberry Pi (ARM64)\n* Distributed as a universal [Snap package](https://snapcraft.io/) for easy installation on many Linux distros\n* Can respond on behalf of multiple machines at once\n* IPv4 and IPv6 support\n\n## Prerequisites\n* Linux (any distro supporting Snap packages, kernel version 2.6.27+)\n* Wired Ethernet network interface\n\n## Installation\n\n[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/friendly-neighbor)\n\n```\nsudo snap install friendly-neighbor\nsudo snap connect friendly-neighbor:hardware-observe\nsudo snap connect friendly-neighbor:network-control\n# Replace the values for \"mac-ip-mappings\" and \"interface-name\" below with your real ones:\nsudo snap set friendly-neighbor mac-ip-mappings=AA:BB:CC:DD:EE:FF,10.0.8.3 interface-name=eth0\nsudo snap restart friendly-neighbor\n```\n\nThe Snap package is configured to run automatically Friendly Neighbor as a network service (daemon). After performing the steps above, the service should be running and should automatically start on subsequent system startups.\n\n## Usage\n\nThe following usage details are only relevant when running the service directly. If using the Snap package, service parameters are set using `snap set friendly-neighbor ...`\n\n```\nUSAGE\n    friendly_neighbor [-hv] [-i \u003cIFACE\u003e] [-m \u003cMAPPING\u003e...] [--mappings \u003cMAPPINGS\u003e]\n\nOPTIONS\n    -i, --interface \u003cIFACE\u003e\n            Name of network interface on which to listen and send packets\n\n    -m, --mapping \u003cMAPPING\u003e...\n            One or more MAC to IP (v4 or v6) address mappings, each in the\n            format \u003cMAC address\u003e,\u003cIP address\u003e\n\n        --mappings \u003cMAPPINGS\u003e\n            A single string containing one or more mappings in the format \u003cMAC\n            address\u003e,\u003cIP address\u003e with mappings separated by a space\n\n    -h, --help\n            Display this help and exit\n\n    -v, --version\n            Print program version and exit\n\nEXAMPLES\n    friendly_neighbor -i eth0 \\\n        -m 11:22:33:44:55:66,192.168.1.2 \\\n        -m 11:22:33:44:55:66,fd12:3456:789a:1::1\n\n    friendly_neighbor -i eno1 --mappings \\\n        \"AA:BB:CC:DD:EE:FF,10.0.8.3 AA:BB:CC:DD:EE:FF,fd9a:bc83:57e4:2::1\"\n```\n\n## Contributing\nContributions are welcome, pull requests and issues can be created at https://github.com/danielpgross/friendly_neighbor\n\n## License\nMIT\n\nHappy networking, and remember to be a friendly neighbor! 🌐💻","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpgross%2Ffriendly_neighbor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielpgross%2Ffriendly_neighbor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpgross%2Ffriendly_neighbor/lists"}