{"id":24303272,"url":"https://github.com/kunalsheth/grpc-visualizer","last_synced_at":"2025-06-16T02:05:23.024Z","repository":{"id":250236068,"uuid":"196428998","full_name":"kunalsheth/grpc-visualizer","owner":"kunalsheth","description":"Visually inspect protobuf files. Developed while interning @cisco.","archived":false,"fork":false,"pushed_at":"2019-07-25T16:09:18.000Z","size":3286,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-09T10:25:25.547Z","etag":null,"topics":["grpc"],"latest_commit_sha":null,"homepage":"","language":"Java","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/kunalsheth.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":"2019-07-11T16:22:37.000Z","updated_at":"2024-12-17T09:03:30.000Z","dependencies_parsed_at":"2024-07-26T02:50:30.678Z","dependency_job_id":null,"html_url":"https://github.com/kunalsheth/grpc-visualizer","commit_stats":null,"previous_names":["kunalsheth/grpc-visualizer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kunalsheth/grpc-visualizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kunalsheth%2Fgrpc-visualizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kunalsheth%2Fgrpc-visualizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kunalsheth%2Fgrpc-visualizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kunalsheth%2Fgrpc-visualizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kunalsheth","download_url":"https://codeload.github.com/kunalsheth/grpc-visualizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kunalsheth%2Fgrpc-visualizer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260083860,"owners_count":22956407,"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"],"created_at":"2025-01-17T00:36:27.148Z","updated_at":"2025-06-16T02:05:22.984Z","avatar_url":"https://github.com/kunalsheth.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grpc-visualizer\nCLI to visually inspect gRPC's `.proto` config files.\n \n![Demo GIF](./demo/demo.gif)\n(`\u003e\u003e\u003e` indicates a streaming RPC call, `──\u003e` indicates a singular value.)\n\n```\ngrpc-visualizer path/to/grpc-config.proto [\"command 1\" \"command 2\"...]\n\ncommands: \n\t'help'\n\t'message [REGEX]' — display structure of message data\n\t'digraph (svg|pdf|png|dot) [REGEX]' — display structure of message types in relation to each other\n\t'service [REGEX]' — display client/server RPC functions\n\t'gui' — open web server on port 8383 for interactive digraphs\n```\n\n## Directional Graphs  \nInput:  \n```proto\nmessage RecursiveType {\n    // ...\n    My code = 4;\n}\nmessage My {\n    RecursiveType should = 1;\n    // ...\n    RecursiveType crash = 3;\n    My code = 4;\n}\nmessage Person {\n    // ...\n    message PhoneNumber { /* ... */ }\n    repeated PhoneNumber phones = 4;\n}\nmessage AddressBook {\n    repeated Person people = 1;\n}\n```\nCommand: `digraph svg`  \nOutput:  \n![Demo Digraph](./demo/digraph.svg)\n\n## Cyclic Dependency Detection  \n### Example 1\nInput:  \n```proto\nmessage A {\n    B aHasB = 1;\n    C aAlsoHasC = 2;\n}\nmessage B {\n    D bHasD = 1;\n}\nmessage C {\n    D cHasD = 1;\n}\nmessage D {\n    A dMischievouslyHasA = 1;\n}\n```\nCommand: `digraph svg A`  \nOutput:  \n![Demo Cyclic Dependency Detection](./demo/huans_first_drawing_AFTER.svg)\n\n### Example 2\nInput:  \n```proto\nmessage A {\n    B aHasB = 1;\n}\nmessage B {\n    C bHasC = 1;\n    D andD = 2;\n    E andE = 3;\n}\nmessage C {\n    D cAlsoHasD = 1;\n}\nmessage D {\n    A dMischievouslyHasA = 1;\n}\nmessage E {\n}\n```\nCommand: `digraph svg`  \nOutput:  \n![Demo Cyclic Dependency Detection](./demo/huans_second_drawing_BEFORE.svg)\n\nCommand: `digraph svg A`  \nOutput:  \n![Demo Cyclic Dependency Detection](./demo/huans_second_drawing_AFTER.svg)\n\nCommand: `digraph svg C`  \nOutput:  \n![Demo Cyclic Dependency Detection](./demo/huans_second_drawing_AFTER_C.svg)\n\nCommand: `digraph svg D`  \nOutput:  \n![Demo Cyclic Dependency Detection](./demo/huans_second_drawing_AFTER_D.svg)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkunalsheth%2Fgrpc-visualizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkunalsheth%2Fgrpc-visualizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkunalsheth%2Fgrpc-visualizer/lists"}