{"id":13760666,"url":"https://github.com/inet256/inet256","last_synced_at":"2025-04-05T00:06:58.815Z","repository":{"id":39908536,"uuid":"246693818","full_name":"inet256/inet256","owner":"inet256","description":"Identity Based Network API with 256-Bit Addresses","archived":false,"fork":false,"pushed_at":"2025-01-06T02:32:20.000Z","size":765,"stargazers_count":136,"open_issues_count":6,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-28T23:05:18.132Z","etag":null,"topics":["cjdns","cryptography","distributed","inet256","ipfs","mesh","mesh-networks","network","networking","p2p","peer-to-peer","routing","yggdrasil"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inet256.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"liberapay":"brendoncarroll"}},"created_at":"2020-03-11T22:38:05.000Z","updated_at":"2025-01-06T02:32:23.000Z","dependencies_parsed_at":"2025-02-18T17:33:36.118Z","dependency_job_id":"8a3b4b01-b687-4b22-9a7a-b97ad523d048","html_url":"https://github.com/inet256/inet256","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Finet256","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Finet256/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Finet256/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Finet256/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inet256","download_url":"https://codeload.github.com/inet256/inet256/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266563,"owners_count":20910836,"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":["cjdns","cryptography","distributed","inet256","ipfs","mesh","mesh-networks","network","networking","p2p","peer-to-peer","routing","yggdrasil"],"created_at":"2024-08-03T13:01:15.909Z","updated_at":"2025-04-05T00:06:58.787Z","avatar_url":"https://github.com/inet256.png","language":"Go","funding_links":["https://liberapay.com/brendoncarroll"],"categories":["Go"],"sub_categories":[],"readme":"# INET256\n\n![Matrix](https://img.shields.io/matrix/inet256:matrix.org?label=%23inet256%3Amatrix.org\u0026logo=matrix)\n[![GoDoc](https://godoc.org/github.com/inet256/inet256?status.svg)](http://godoc.org/github.com/inet256/inet256)\n[\u003cimg src=\"https://discord.com/assets/cb48d2a8d4991281d7a6a95d2f58195e.svg\" width=\"80\"\u003e](https://discord.gg/TWy6aVWJ7f)\n\nA 256 bit address space for peer-to-peer hosts/applications.\n\n\u003e **The value proposition**:\n\u003e\n\u003e All you have to know to send messages to another process is its address, which will never change.\n\u003e\n\u003e All you have to do to recieve messages is generate a private, public key pair and connect to the INET256 daemon\n\nThe INET256 API and Address Spec: [Spec](./doc/10_Spec.md)\n\nThe architecture of the reference implementation: [Mesh256](./pkg/mesh256/README.md)\n\nDocumentation for the daemon's config file: [Daemon Config](./doc/22_Daemon_Config.md)\n\n## Features\n- Stable addresses derived from public keys\n- Secure communication to other nodes in the network\n- Best-effort delivery like IP or UDP. At-most-once delivery, unlike IP and UDP.\n- Messages are never corrupted. If it gets there, it's correct.\n- Easy to add/remove/change routing algorithms.\n- Addresses are plentiful. Spawn a new node for each process. Every process gets its own address, no need for ports.\n- Daemon can run without root or `NET_ADMIN` capability.\n- IPv6 Portal for IPv6 over INET256. Exposed as a TUN device. (requires `NET_ADMIN`).\n- Autopeering and transport address discovery help make peering easy.\n\n## Getting Started\n\n### Running with Systemd\nInstall the inet256 binary to `/usr/local/bin/inet256`\n\nInstall the systemd unit files\n```shell\n$ just install-systemd\n```\n\nStart the service\n```shell\n$ systemctl start inet256\n```\n\n### Running with Docker\nFirst build the docker image\n```shell\n$ just docker\n```\n\nThen create the configuration files\n```shell\n$ mkdir myconfig\n$ inet256 create-config \u003e myconfig/config.yml\n$ inet256 keygen \u003e myconfig/private_key.pem\n```\n\nFinally, run docker container.\n```\n$ docker run -it --rm --net=host -v ./myconfig:/config:ro inet256:local\n```\n\n## Mesh256\nThe reference implementation of an INET256 Service, which lives in this repository, is called `mesh256`.\nIt uses a distributed routing algorithm to allow nodes on the network to discover paths between one another.\n\n### Network Routing Protocols\nThe autoconfiguring, distributed routing algorithms of the sort required are under active research, and we don't want to couple mesh256 to any one algorithm as the state of the art could change rapidly.\n\nUsers are ultimately in control of which networks they participate in.\nNetworks can be selected in the configuration file.\n\nWe are eager to add other protocols.\nCheck out `networks/beaconnet` for an example of simple routing protocol. It's a good place to start.\n\n## Utilities/Applications \nThis project provides tools for using INET256 networks, some of which are not yet implemented\n\n- [x] IPv6 Portal (TUN Device). Similar to CJDNS and Yggdrasil.\n- [ ] IPv4 VPN, declarative mappings from INET256 -\u003e IPv4. similar to WireGuard.\n- [x] netcat.  Send newline separated messages to other nodes: `inet256 nc`.\n- [x] echo. A server to echo messages back to the sender: `inet256 echo`.\n- [x] Central Discovery Server to keep track of roaming peers. `inet256 central-discovery`\n\n## Code Tour\n- `pkg/inet256` API definitions.  Mostly things required by the spec.\n\n- `pkg/mesh256` The reference implementation of an INET256 Service. \n\n- `pkg/inet256d` The daemon that manages setting up transports, autopeering, discovery, the actual INET256 service, and the HTTP API.\n\n- `pkg/inet256ipv6` Logic for bridging INET256 to IPv6. Includes the IPv6 portal.\n\n- `pkg/inet256test` A test suite for Network implementations.\n\n- `pkg/autopeering` Autopeering interface definition and implementations\n\n- `pkg/discovery` discovery interface definition and implementations\n\n- `networks/` Network implementations, routing logic is in these.\n\n- `client/` Client implementations, these connect to the daemon.\n\n## License\nCode in this repository is by default licensed under the GPL as defined in `LICENSE`.\nSome of the sub-directories contain their own `LICENSE` files for the LGPL, or MPL as defined therein.\nThat license applies to the sub-directory.\n\nIn summary: you should be able to import an INET256 client in a language of your choice and do whatever you want.\nBut other than clients, the implementation is strongly copyleft.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finet256%2Finet256","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finet256%2Finet256","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finet256%2Finet256/lists"}