{"id":21658248,"url":"https://github.com/machinebox/remoto","last_synced_at":"2025-12-25T05:47:03.947Z","repository":{"id":57492450,"uuid":"133805025","full_name":"machinebox/remoto","owner":"machinebox","description":"Ultra-simple RPC ecosystem designed for right now.","archived":false,"fork":false,"pushed_at":"2023-04-24T17:52:42.000Z","size":11760,"stargazers_count":303,"open_issues_count":13,"forks_count":13,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-06-20T03:47:23.473Z","etag":null,"topics":["apis","golang","microservices","mobile","rpc","web"],"latest_commit_sha":null,"homepage":"https://remotoproject.com/","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/machinebox.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":"2018-05-17T11:40:56.000Z","updated_at":"2024-03-10T01:50:05.000Z","dependencies_parsed_at":"2024-06-20T03:02:27.405Z","dependency_job_id":"1bb75e2f-8392-4983-b259-dd6529103493","html_url":"https://github.com/machinebox/remoto","commit_stats":null,"previous_names":["matryer/remoto"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinebox%2Fremoto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinebox%2Fremoto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinebox%2Fremoto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machinebox%2Fremoto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/machinebox","download_url":"https://codeload.github.com/machinebox/remoto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226304502,"owners_count":17603606,"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":["apis","golang","microservices","mobile","rpc","web"],"created_at":"2024-11-25T09:28:56.959Z","updated_at":"2025-12-25T05:47:03.941Z","avatar_url":"https://github.com/machinebox.png","language":"Go","readme":"![Remoto banner](misc/remoto-banner-fog-by-chris-ryer.png)\n\n# Remoto\n\nUltra-simple, fast, complete RPC ecosystem designed for right now.\n\n* Simple service definitions written in Go (interfaces and structs)\n* Generates servers and clients that makes implementing/consuming easy\n* Generates human-readable code\n* Supports batch requests out of the box\n* Lots of [templates](templates) to use today\n* Modify templates or write your own\n\n## In this document\n\n* [Introduction](#introduction) - Start learning about Remoto in the introduction\n* [Remoto Definition Files](#remoto-definition-files) - An overview of the Remoto definition files\n* [Remoto command](#remoto-command) - The `remoto` command line tool\n* [remotohttp](#remotohttp) - Templates for Remoto powered HTTP servers and clients\n\n# Introduction\n\nRemoto is an RPC ecosystem and code generation tool. A powerful set of templates and\nsupporting code allows you to quickly spin up RPC services, and consume them with hand crafted\nclient libraries by experts in each particular language.\n\n## Who is Remoto for?\n\nRemoto is for teams who want to:\n\n* Deliver mobile and web RPC services\n* Automate SDK and client library generation\n* Stick with simple and familiar technology\n\n# Remoto definition files\n\nDefinition files are Go source with `.remoto.go` file extension.\n\nAn example definition looks like this:\n\n```go\npackage project\n\n// Greeter provides greeting services.\ntype Greeter interface {\n\t// Greet generates a greeting.\n\tGreet(GreetRequest) GreetResponse\n}\n\n// GreetRequest is the request for Greeter.GreetRequest.\ntype GreetRequest struct {\n\tName string\n}\n\n// GreetResponse is the response for Greeter.GreetRequest.\ntype GreetResponse struct {\n\tGreeting string\n}\n```\n\n* `package project` - package name can group services\n* `type ServiceName interface` - describes an RPC service\n* `Greet(GreetRequest) GreetResponse` - service method with request and response objects\n* `type GreetRequest struct` - describes the request data\n* `type GreetResponse struct` - describes the response data\n\n## Rules\n\n* Each service is an `interface`\n* Each method is an endpoint\n* Methods must take a request object as its only argument\n* Methods must return the response object as the result\n* Only a subset of Go types are supported: `string`, `float64`, `int`, `bool`, and `struct` types\n* Any arrays (slices) of the supported types are also allowed (e.g. `[]string`, `[]bool`, etc.)\n* Comments describe the services, methods and types\n* Do not import packages (apart from official Remoto ones), instead your definition files should be self contained\n\n## Special types\n\n* Learn more about specially handled types in [remototypes](remototypes).\n\n## Tips\n\n* Avoid importing common types - describe all the required types in a single `.remoto.go` file\n\n# Remoto command\n\nThe `remoto` command can be built into your development pipeline to generate source code from\ndefinition files.\n\n```\nusage:\n\tremoto sub-command\n```\n\n## Generate\n\nThe generate command generates source code from a given template.\n\n```\nusage:\n\tremoto generate definition template -o output-file\n```\n\n* `definition` - Path to the definition file\n* `template` - Path to the template to render\n* `output-file` - Where to save the output (folders will be created and files will be overwritten without warning)\n\n# remotohttp\n\nAs well as code generation, Remoto ships with a complete HTTP client/server implementation which you can generate from your definition files.\n\nFor more information, see the [remotohttp documentation](go/remotohttp).\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachinebox%2Fremoto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmachinebox%2Fremoto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachinebox%2Fremoto/lists"}