{"id":26223431,"url":"https://github.com/inet256/diet256","last_synced_at":"2025-04-19T11:33:00.064Z","repository":{"id":61624861,"uuid":"482595082","full_name":"inet256/diet256","owner":"inet256","description":"Coordinated INET256 Network Using QUIC","archived":false,"fork":false,"pushed_at":"2023-05-21T19:48:26.000Z","size":172,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T07:21:49.214Z","etag":null,"topics":["grpc","inet256","nat-traversal","networking","p2p","quic","tailscale"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.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":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":"2022-04-17T17:55:18.000Z","updated_at":"2024-02-20T20:45:45.000Z","dependencies_parsed_at":"2024-06-19T05:19:58.893Z","dependency_job_id":"7281cefb-0e28-40db-a910-76a7cb1fa288","html_url":"https://github.com/inet256/diet256","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Fdiet256","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Fdiet256/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Fdiet256/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inet256%2Fdiet256/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inet256","download_url":"https://codeload.github.com/inet256/diet256/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249685172,"owners_count":21310558,"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":["grpc","inet256","nat-traversal","networking","p2p","quic","tailscale"],"created_at":"2025-03-12T17:33:36.724Z","updated_at":"2025-04-19T11:33:00.030Z","avatar_url":"https://github.com/inet256.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diet256\nDiet256 is a centrally coordinated, densely connected overlay network, implementing the [INET256](https://github.com/inet256/inet256) [spec](https://github.com/inet256/inet256/blob/master/doc/10_Spec.md).\nIt's the same simple INET256 API, but without any of peering or routing configuration to manage.\n\nDiet256 makes all its connections over The Internet using QUIC and uses a central server to discover the IP address of peers.\nThe central server is outside an INET256 application's security perimeter, and the worst thing it can do is misinform a client about the location of a peer.\nIt can't trick applications into sending or receiving messages to or from the wrong peers.\n\n## Getting Started\nEither download a binary from the release page or build from source.\n\n### Installing From Source\nIn the repo, run `make install` and it will install to `$GOPATH/bin`.\n\n## Run the Daemon\nYou can run diet256 as a fully functional INET256 implementation (instead of the reference implementation).\n\n```shell\n$ diet256 daemon\n```\n\nAll the INET256 tools will work with diet256 including the IPv6 Portal.\n\n## Using this Library\nYou can import this package as a go library and build an INET256 application without running any additional daemon processes.\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"crypto/ed25519\"\n\t\"log\"\n\n\t\"github.com/inet256/diet256\"\n\t\"github.com/inet256/inet256/pkg/inet256\"\n)\n\nfunc main() {\n\tsrv, err := diet256.New() // That's it; now you're ready to create Nodes.\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Provide a key, which will determine the Node's local address\n\t_, privateKey, _ = ed25519.GenerateKey(nil)\n\tnode, err := srv.Open(ctx, privateKey)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer node.Close()\n\tlog.Println(\"local node:\", node.LocalAddr())\n\n\t// dst is the address of the peer you want to send to.\n\tdst := inet256.ID{}\n\tnode.Send(context.Background(), dst, []byte(\"ping\"))\n}\n```\n\n## Run the IPv6 Portal In-Process\nNormally, the IPv6 Portal runs as its own process, separate from the INET256 daemon.\nYou can do that with `inet256 ip6-portal`, if `diet256 daemon` or another INET256 implementation is running.\n\ndiet256 also supports an in process IPv6 portal.  You can launch that with\n```shell\n$ diet256 ip6-portal --private-key ./path/to/private_key.pem\n\nINFO[0000] opened node jAeAUgztUHiKUgNpIDtzBcVm19Y9Y829MvhqFvG3VSY\nINFO[0000] Created TUN utun2\nINFO[0000] Local INET256: jAeAUgztUHiKUgNpIDtzBcVm19Y9Y829MvhqFvG3VSY\nINFO[0000] Local IPv6: 200:603c:290:676a:83c4:5290:1b49:1db\n```\nAnd then you will have a TUN device connected to the diet256 network using the standard IPv6-to-INET256 address mapping.\n\n## More\nFor more INET256 docs head over to [INET256](https://github.com/inet256/inet256).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finet256%2Fdiet256","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finet256%2Fdiet256","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finet256%2Fdiet256/lists"}