{"id":44332407,"url":"https://github.com/bringauto/fleet-protocol","last_synced_at":"2026-02-11T10:09:58.074Z","repository":{"id":49388220,"uuid":"451535037","full_name":"bringauto/fleet-protocol","owner":"bringauto","description":"BringAuto Fleet Protocol - simple yet reliable communication for internet-connection-unstable environments","archived":false,"fork":false,"pushed_at":"2025-04-17T12:33:05.000Z","size":478,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-18T01:52:29.160Z","etag":null,"topics":["c","communication","cpp","fleet-protocol","protobuf","reliable-protocol"],"latest_commit_sha":null,"homepage":"","language":"C#","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/bringauto.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,"zenodo":null}},"created_at":"2022-01-24T16:08:22.000Z","updated_at":"2025-04-17T12:31:25.000Z","dependencies_parsed_at":"2024-07-12T08:25:29.791Z","dependency_job_id":"cdf70e85-5595-4872-86f8-1804f30d84dc","html_url":"https://github.com/bringauto/fleet-protocol","commit_stats":null,"previous_names":["bringauto/fleet-protocol"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/bringauto/fleet-protocol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Ffleet-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Ffleet-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Ffleet-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Ffleet-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bringauto","download_url":"https://codeload.github.com/bringauto/fleet-protocol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Ffleet-protocol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29331748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["c","communication","cpp","fleet-protocol","protobuf","reliable-protocol"],"created_at":"2026-02-11T10:09:57.205Z","updated_at":"2026-02-11T10:09:58.065Z","avatar_url":"https://github.com/bringauto.png","language":"C#","readme":"# Fleet Protocol\n\n**Connect any device from anywhere to everywhere!**\n\n![Fleet Protocol](./doc/img/FleetProtocolImg.webp)\n\n## General\n\nFleet Protocol is a **modular** communication technology developed by BringAuto to allow for **simple and reliable** communication between\ndevices deployed in an **internet-connection-unstable** environment and cloud infrastructure.\n\nProtocol consists of three parts:\n\n- Internal Client (Remote) - part of a device which communicates with a Module Gateway\n- Module Gateway (Remote):\n  - internal server - communicates with internal clients\n  - aggregator - aggregates status messages, gathers and aggragates messages in case of connection outage, ...\n  - external client - communicates with an External Server\n- External Server (Cloud) - deployed as part of the cloud infrastructure. It provides status messages and can be used to control devices by command messages.\n\n## Communication protocol\n\n[ProtoBuf] (see [Protobuf version]) is used to serialize and deserialize messages. The message format\nspecification can be found in the protobuf folder.\n\nEach message must be prefixed with a four bytes long (uint32_t data type) header, which holds\ninformation about the size of the Protobuf message.\n\nCheck the Fleet Protocol v2 documentation to learn more about the system architecture:\n\n- [Summary] - overall high-level summary\n- [Fleet Protocol Requirements]\n- [Internal Client]\n- [Module Gateway]\n- [External Server]\n- [Modules] - list of implemented modules\n- [Message Structure]\n- [Internal Client design]\n- [Module Gateway design]\n- [External Server design]\n\nImplementation of each respective component:\n\n- [Module Gateway impl]\n- [External Server impl]\n- Internal Client\n  - [Internal Client C++ impl] - C++ implementation, only on Posix, no libraries used\n  - [Internal Client Python3 impl]\n  - [Internal Client Arduino impl] - basic implementation for Arduino 32bit boards\n- Modules\n  - [Mission Module] - Autonomy Control module\n  - [IO Module] - Input/Output devices\n  - [Example Module]\n\nAll supported modules can be listed by [fleet-protocol-module] topic.\n\n## HTTP Interface\n\nThe Fleet Protocol HTTP API represents the protocol in the form of an HTTP API.\n\nA Fleet Protocol Module can use the HTTP API to provide its statuses and retrieve commands\nthrough a simple and understandable REST API for easy integration with other services.\n\nFleet Protocol HTTP API is a standalone project and is not part of the Fleet Protocol v2 core specification.\n\n- [HTTP API]\n- [HTTP API C++ Client]\n- [HTTP API Python3 Client]\n- [HTTP API Wait Mechanism]\n\n\n\n## Protocol messages\n\nMessages are described by ProtoBuf v3.\n\nIf a message field is not mandatory, then it's marked as OPTIONAL by \"OPTIONAL\"\nas the last comment in documentation for the given field.\nOptional fields have defaults as described in the [ProtoBuf] v3 doc.\n\n### Python protobuf files\n\nTo use the compiled python protobuf files in a project, install the module in `protobuf/compiled/python`.\nFor example: add this project as a submodule and add `file:fleet-protocol/protobuf/compiled/python` to `requirements.txt`. Then it can be imported as `fleet_protocol_protobuf_files`.\n\n## Repo structure\n\nThis repository contains a basic C API and CMake project to easily\nimplement Fleet Protocol Modules.\n\n### Examples\n\nSamples of fleet-protocol features usage.\n\nUse CMake option `BRINGAUTO_SAMPLES=ON` to configure them.\n\n### Lib\n\nHeader files of interfaces\n\n### Protobuf\n\nCompiled and non-compiled protobuf files\n\n## Usage\n\n### Requirements\n\n- [CMlib](https://github.com/cmakelib/cmakelib)\n\n### Installation\n\nTo install the library, first configure the project with the CMake option BRINGAUTO_INSTALL=ON and BRINGAUTO_PACKAGE=ON, and then install it.\n\n```bash\nmkdir _build \u0026\u0026 cd _build\ncmake -DBRINGAUTO_INSTALL=ON -DBRINGAUTO_PACKAGE=ON ..\nmake install\n```\n\n### Package\n\nTo create a package, configure the project with CMake option BRINGAUTO_PACKAGE=ON and then create it using `cpack`.\n\n```bash\nmkdir _build \u0026\u0026 cd _build\ncmake -DBRINGAUTO_INSTALL=ON -DBRINGAUTO_PACKAGE=ON ..\ncpack\n```\n\n### Using library in CMake projects\n\nOnce the library is installed, it can be used in other projects by adding the following lines to the `CMakeLists.txt`\nfile:\n\n```cmake\nFIND_PACKAGE(fleet-protocol-interface REQUIRED)\nTARGET_LINK_LIBRARIES(\u003ctarget\u003e PUBLIC fleet-protocol-interface::fleet-protocol-interface)\n```\n\nThis will link all interfaces. If you want to only link a specific interface, chose from the interfaces listed below:\n\n- fleet-protocol-interface::common-headers-interface\n- fleet-protocol-interface::internal-client-interface\n- fleet-protocol-interface::module-gateway-interface\n- fleet-protocol-interface::module-maintainer-external-server-interface\n- fleet-protocol-interface::module-maintainer-module-gateway-interface\n- fleet-protocol-interface::protobuf-cpp-interface\n\n\u003e Note that `protobuf-cpp-interface` also needs `protobuf::libprotobuf` to be linked to the target\n\n[ProtoBuf]: https://developers.google.com/protocol-buffers\n[Protobuf version]: https://github.com/protocolbuffers/protobuf/releases/tag/v3.21.12\n[Summary]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/summary\n[Fleet Protocol Requirements]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/protocol-requirements\n[Internal Client]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/internal-client\n[Module Gateway]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/module-gateway\n[External Server]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/external-server\n[Modules]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/modules\n[Message Structure]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/message-structure\n[Internal Client design]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/internal-client-design\n[Module Gateway design]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/module-gateway-design\n[External Server design]: https://ref.bringautofleet.com/r/protocol/v2/2.0.1/external-server-design\n[HTTP API]: https://github.com/bringauto/fleet-protocol-http-api\n[HTTP API Wait Mechanism]: https://ref.bringautofleet.com/r/protocol/http-api/1.0.0/wait-mechanism\n[HTTP API C++ Client]: https://github.com/bringauto/fleet-protocol-http-client-cxx\n[HTTP API Python3 Client]: https://github.com/bringauto/fleet-protocol-http-client-python\n[fleet-protocol-module]: https://github.com/topics/fleet-protocol-module\n[Module Gateway impl]: https://github.com/bringauto/module-gateway\n[External Server impl]: https://github.com/bringauto/external-server\n[Internal Client C++ impl]: https://github.com/bringauto/internal-client-cpp\n[Internal Client Python3 impl]: https://github.com/bringauto/internal-client-python\n[Internal Client Arduino impl]: https://github.com/bringauto/internal-client-arduino\n[Mission Module]: https://github.com/bringauto/mission-module\n[IO Module]: https://github.com/bringauto/io-module\n[Example Module]: https://github.com/bringauto/example-module\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Ffleet-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbringauto%2Ffleet-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Ffleet-protocol/lists"}