{"id":19773188,"url":"https://github.com/mbarbin/eio-rpc","last_synced_at":"2025-05-13T00:35:15.025Z","repository":{"id":216893721,"uuid":"742591857","full_name":"mbarbin/eio-rpc","owner":"mbarbin","description":"A collection of opinionated libraries designed to build RPC clients and servers with eio","archived":false,"fork":false,"pushed_at":"2025-03-14T14:33:15.000Z","size":252,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T05:11:08.669Z","etag":null,"topics":["eio","grpc","ocaml","protocol-buffers","rpc"],"latest_commit_sha":null,"homepage":"https://mbarbin.github.io/eio-rpc/","language":"OCaml","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/mbarbin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","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":"2024-01-12T20:25:40.000Z","updated_at":"2025-03-14T11:16:14.000Z","dependencies_parsed_at":"2024-04-30T14:19:17.998Z","dependency_job_id":"27f4af49-47ad-4568-bdaa-b5a7dc65cf81","html_url":"https://github.com/mbarbin/eio-rpc","commit_stats":null,"previous_names":["mbarbin/eio-rpc"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbarbin%2Feio-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbarbin%2Feio-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbarbin%2Feio-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbarbin%2Feio-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbarbin","download_url":"https://codeload.github.com/mbarbin/eio-rpc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253850531,"owners_count":21973662,"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":["eio","grpc","ocaml","protocol-buffers","rpc"],"created_at":"2024-11-12T05:08:54.760Z","updated_at":"2025-05-13T00:35:14.999Z","avatar_url":"https://github.com/mbarbin.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eio-rpc\n\n[![CI Status](https://github.com/mbarbin/eio-rpc/workflows/ci/badge.svg)](https://github.com/mbarbin/eio-rpc/actions/workflows/ci.yml)\n[![Coverage Status](https://coveralls.io/repos/github/mbarbin/eio-rpc/badge.svg?branch=main)](https://coveralls.io/github/mbarbin/eio-rpc?branch=main)\n\neio-rpc is a collection of opinionated libraries designed to build RPC clients and servers with `eio`.\n\nIt currently relies on the following dependencies:\n\n- Concurrency library: [eio](https://github.com/ocaml-multicore/eio)\n- RPC transport and runtime: [ocaml-grpc](https://github.com/dialohq/ocaml-grpc)\n- Serialization: [ocaml-protoc](https://github.com/mransan/ocaml-protoc)\n\n## Relationship to ocaml-grpc\n\n`ocaml-grpc` is a modular library that provides the building blocks for gRPC functionality. It supports various use cases and works with `lwt`, `async`, and `eio` clients/servers. It also supports various libraries implementing the protobuf serialization (`ocaml-protoc` and `ocaml_protoc_plugin`). As such, it offers a generic set of tools without recommending a specific choice. This opens the door for more specialized libraries, like `eio-rpc`, that focus on a particular combination of dependencies and offer a more streamlined interface.\n\n## Goals\n\nThe primary goal of eio-rpc is to provide a reference implementation and examples that demonstrate a specific (and opinionated) approach to structuring an application that involves a networked RPC interface and a CLI client.\n\nWhile the stability and usability of the overall interface are important, and I plan to use the libraries defined here in personal projects, I do not guarantee the choice of the underlying building blocks. These may change in future updates, potentially in breaking ways. As a result, I currently do not recommend this library for inclusion in a public opam package. However, by making this repo public, I can reference this code in discussions, issues, and PRs with other developers on GitHub.\n\n## Code Documentation\n\nThe code documentation of the latest release is built with `odoc` and published to `GitHub` pages [here](https://mbarbin.github.io/eio-rpc).\n\n## Build\n\nThis repo depends on unreleased packages that are published to a custom [opam-repository](https://github.com/mbarbin/opam-repository.git), which must be added to the opam switch used to build the project.\n\nFor example, if you use a local opam switch, this would look like this:\n\n```sh\ngit clone https://github.com/mbarbin/eio-rpc.git\ncd eio-rpc\nopam switch create . 5.2.0 --no-install\neval $(opam env)\nopam repo add mbarbin https://github.com/mbarbin/opam-repository.git\nopam install . --deps-only --with-test --with-doc\n```\n\nOnce this is setup, you can build with dune:\n\n```sh\ndune build @all @runtest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbarbin%2Feio-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbarbin%2Feio-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbarbin%2Feio-rpc/lists"}