{"id":15653028,"url":"https://github.com/erikh/ztui","last_synced_at":"2025-04-30T17:04:59.481Z","repository":{"id":41237524,"uuid":"494979646","full_name":"erikh/ztui","owner":"erikh","description":"A terminal UI for ZeroTier","archived":false,"fork":false,"pushed_at":"2023-05-18T17:13:18.000Z","size":409,"stargazers_count":36,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-30T17:04:53.171Z","etag":null,"topics":["terminal","ui","zerotier"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erikh.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-05-22T06:36:14.000Z","updated_at":"2025-04-22T14:21:59.000Z","dependencies_parsed_at":"2024-10-03T12:44:42.269Z","dependency_job_id":"ff509d76-bdbf-4e93-9bd9-b69038333130","html_url":"https://github.com/erikh/ztui","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikh%2Fztui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikh%2Fztui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikh%2Fztui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikh%2Fztui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erikh","download_url":"https://codeload.github.com/erikh/ztui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251748945,"owners_count":21637417,"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":["terminal","ui","zerotier"],"created_at":"2024-10-03T12:44:30.860Z","updated_at":"2025-04-30T17:04:59.076Z","avatar_url":"https://github.com/erikh.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ztui: your one-stop shop for ZeroTier terminal UI goodness\n\nztui aims to be a frontend for all interactions with ZeroTier in an attempt to\ntransform how people work with it. It provides the following features:\n\n-   Main Screen:\n    -   Bookmarks for Networks (disconnecting does not make the network id disappear from the list, and you can rejoin easily)\n    -   Interaction directly with Central members from the network list.\n    -   Joining, Leaving Networks\n    -   Per-Network bandwidth statistics\n    -   Bind arbitrary commands to keys that use a template to launch (see more on this below)\n    -   Review the network JSON formatted pretty\n    -   Launch `$EDITOR` against a file of network rules (and save them back to central)\n-   Central / Member List:\n    -   Rename members\n    -   Auth, Unauth, and Delete members\n\nNetworks List View:\n\n\u003ccenter\u003e\u003cimg src=\"https://github.com/erikh/ztui/blob/main/readme-images/main.png\" /\u003e\u003c/center\u003e\n\nMembers List / Network View:\n\n\u003ccenter\u003e\u003cimg src=\"https://github.com/erikh/ztui/blob/main/readme-images/network.png\" /\u003e\u003c/center\u003e\n\n## Installing\n\nGet [Rust](https://www.rustup.rs) 1.60 or better if you need to. You'll need it.\n\n```\ncargo install ztui\n```\n\nYou may also appreciate our [GitHub Releases](https://github.com/erikh/ztui/releases)!\n\n## Configuring arbitrary commands\n\n### Rules\n\n-   Command must not be mapped by existing commands\n-   Will be executed in a shell; quote accordingly\n\n### Configuration Syntax\n\nAfter you start `ztui` for the first time, `$HOME/.config.zerotier/settings.json` will be created for you with your last-saved network information. Now, what we want to do is create `$HOME/.config.zerotier/config.json` and add something like this:\n\n```json\n{\n    \"network_commands\": {\n        \"1\": \"/bin/tcpdump -i %i\"\n    },\n    \"member_commands\": {\n        \"1\": \"/bin/iperf -c %a\"\n    }\n}\n```\n\nNetwork format strings available:\n\n-   `%i`: the interface of the ZeroTier network\n-   `%n`: the network ID of the ZeroTier network\n-   `%a`: the first addresses in the list of assigned IP addresses\n\nIn this case, it would allow me to press `1` over a network to `tcpdump` its interface; then I would control+C out of it to come back to `ztui`.\n\nMember format strings available:\n\n-   `%n`: the network ID of the ZeroTier network\n-   `%i`: the identity of the member of this ZeroTier network\n-   `%a`: the first assigned IP address of this member\n-   `%N`: the name (not the fqdn!) of the ZeroTier network member as it appears in central\n\nIn the above example, it allows me to start an `iperf` client against the address of the selected member.\n\n## Author\n\nErik Hollensbe \u003cgit@hollensbe.org\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikh%2Fztui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferikh%2Fztui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikh%2Fztui/lists"}