{"id":13461438,"url":"https://github.com/twitchtv/twirp","last_synced_at":"2025-05-14T09:06:19.329Z","repository":{"id":37335797,"uuid":"117710726","full_name":"twitchtv/twirp","owner":"twitchtv","description":"A simple RPC framework with protobuf service definitions","archived":false,"fork":false,"pushed_at":"2024-08-05T21:36:11.000Z","size":3914,"stargazers_count":7335,"open_issues_count":11,"forks_count":327,"subscribers_count":103,"default_branch":"main","last_synced_at":"2025-05-14T09:03:08.801Z","etag":null,"topics":["go","protobuf","rpc","twirp"],"latest_commit_sha":null,"homepage":"https://twitchtv.github.io/twirp/docs/intro.html","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twitchtv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2018-01-16T16:37:30.000Z","updated_at":"2025-05-13T23:30:58.000Z","dependencies_parsed_at":"2024-02-16T16:31:14.922Z","dependency_job_id":"f05a178e-5079-4533-97e3-968be23b0bd4","html_url":"https://github.com/twitchtv/twirp","commit_stats":{"total_commits":474,"total_committers":93,"mean_commits":5.096774193548387,"dds":0.770042194092827,"last_synced_commit":"206451d552e13701fa1111430aa81235029cb329"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitchtv%2Ftwirp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitchtv%2Ftwirp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitchtv%2Ftwirp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitchtv%2Ftwirp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitchtv","download_url":"https://codeload.github.com/twitchtv/twirp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110373,"owners_count":22016391,"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":["go","protobuf","rpc","twirp"],"created_at":"2024-07-31T11:00:38.904Z","updated_at":"2025-05-14T09:06:19.300Z","avatar_url":"https://github.com/twitchtv.png","language":"Go","funding_links":[],"categories":["RPC","Go","开源类库","Open source library","Repositories","Protocol Buffers","\u003ca name=\"Go\"\u003e\u003c/a\u003eGo","API and RPC"],"sub_categories":["RPC","Similar","Advanced and Specialized Tools"],"readme":"![Twirp Logo](./logo.png) [![Build Status](https://travis-ci.org/twitchtv/twirp.svg?branch=main)](https://travis-ci.org/twitchtv/twirp) [![Go Report Card](https://goreportcard.com/badge/github.com/twitchtv/twirp)](https://goreportcard.com/report/github.com/twitchtv/twirp) [![GoDoc](https://godoc.org/github.com/twitchtv/twirp?status.svg)](https://godoc.org/github.com/twitchtv/twirp)\n\n---\n\nTwirp is a framework for service-to-service communication emphasizing simplicity\nand minimalism. It generates routing and serialization from API definition files\nand lets you focus on your application's logic instead of thinking about\nfolderol like HTTP methods and paths and JSON.\n\nTwirp is similar to [gRPC](http://www.grpc.io/), but without the custom\nHTTP server and transport implementations: it runs on the standard library's\nextremely-well-tested-and-high-performance `net/http` Server. It can run on HTTP\n1.1, not just http/2, and supports JSON serialization for easy debugging.\n\nAlong the way, you get autogenerated clients and a simple, smart framework for\npassing error messages. Nice!\n\nRead more about the motivation behind on the [announcement blog post](https://blog.twitch.tv/en/2018/01/16/twirp-a-sweet-new-rpc-framework-for-go-5f2febbf35f/).\n\n### Documentation\n\n * [Getting Started](https://twitchtv.github.io/twirp/docs/intro.html)\n * [Usage Example](https://twitchtv.github.io/twirp/docs/example.html)\n * [Errors](https://twitchtv.github.io/twirp/docs/errors.html)\n * More: https://twitchtv.github.io/twirp/\n\n### Implementations in other languages\n\nThis repo contains the generator and runtime library for the Go implementation.\n\nHere is a list of some third-party implementations in other languages.\n\n|    Language    | Clients | Servers | Repository |\n|----------------|---------|---------|------------|\n| **Crystal**    |    ✓    |    ✓    | [github.com/mloughran/twirp.cr](https://github.com/mloughran/twirp.cr)\n| **Dart**       |    ✓    |         | [github.com/apptreesoftware/protoc-gen-twirp_dart](https://github.com/apptreesoftware/protoc-gen-twirp_dart)\n| **Elixir**     |    ✓    |    ✓    | [github.com/keathley/twirp-elixir](https://github.com/keathley/twirp-elixir)\n| **Java**       |    ✓    |    ✓    | [github.com/fajran/protoc-gen-twirp_java_jaxrs](https://github.com/fajran/protoc-gen-twirp_java_jaxrs)\n| **Java**       |         |    ✓    | [github.com/devork/flit](https://github.com/devork/flit)\n| **Java**       |         |    ✓    | [github.com/github/flit](https://github.com/github/flit)\n| **JavaScript** |    ✓    |         | [github.com/thechriswalker/protoc-gen-twirp_js](https://github.com/thechriswalker/protoc-gen-twirp_js)\n| **JavaScript** |    ✓    |         | [github.com/Xe/twirp-codegens/cmd/protoc-gen-twirp_jsbrowser](https://github.com/Xe/twirp-codegens)\n| **JavaScript** |    ✓    |    ✓    | [github.com/tatethurston/TwirpScript](https://github.com/tatethurston/TwirpScript)\n| **Kotlin**     |    ✓    |         | [github.com/collectiveidea/twirp-kmm](https://github.com/collectiveidea/twirp-kmm)\n| **PHP**        |    ✓    |    ✓    | [github.com/twirphp/twirp](https://github.com/twirphp/twirp)\n| **Python3**    |    ✓    |    ✓    | [github.com/verloop/twirpy](https://github.com/verloop/twirpy)\n| **Ruby**       |    ✓    |    ✓    | [github.com/twitchtv/twirp-ruby](https://github.com/twitchtv/twirp-ruby)\n| **Rust**       |    ✓    |    ✓    | [github.com/sourcefrog/prost-twirp](https://github.com/sourcefrog/prost-twirp)\n| **Scala**      |    ✓    |    ✓    | [github.com/soundcloud/twinagle](https://github.com/soundcloud/twinagle)\n| **Swagger**    |    ✓    |    ✓    | [github.com/go-bridget/twirp-swagger-gen](https://github.com/go-bridget/twirp-swagger-gen)\n| **Swift**      |    ✓    |         | [github.com/CrazyHulk/protoc-gen-swiftwirp](https://github.com/CrazyHulk/protoc-gen-swiftwirp)\n| **Typescript** |    ✓    |    ✓    | [github.com/hopin-team/twirp-ts](https://github.com/hopin-team/twirp-ts)\n| **Typescript** |    ✓    |    ✓    | [github.com/tatethurston/TwirpScript](https://github.com/tatethurston/TwirpScript)\n| **Typescript** |    ✓    |    ✓    | [github.com/timostamm/protobuf-ts](https://github.com/timostamm/protobuf-ts)\n\n### Support and Community\n\nWe have a channel on the Gophers slack, [#twirp](https://gophers.slack.com/messages/twirp),\nwhich is the best place to get quick answers to your questions. You can join the\nGopher slack [here](https://invite.slack.golangbridge.org/).\n\n### Releases\n\nTwirp follows semantic versioning through git tags, and uses GitHub Releases for\nrelease notes and upgrade guides:\n[Twirp Releases](https://github.com/twitchtv/twirp/releases)\n\n### Contributing\n\nCheck out [CONTRIBUTING.md](./CONTRIBUTING.md) for notes on making contributions.\n\n### License\n\nThis library is licensed under the Apache 2.0 License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitchtv%2Ftwirp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwitchtv%2Ftwirp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitchtv%2Ftwirp/lists"}