{"id":20905098,"url":"https://github.com/panda-official/driftprotocol","last_synced_at":"2025-05-13T05:31:01.344Z","repository":{"id":39492205,"uuid":"506975984","full_name":"panda-official/DriftProtocol","owner":"panda-official","description":"Protobuf Libraries to encode/decode messages in Drift infrastructure","archived":false,"fork":false,"pushed_at":"2023-11-24T15:05:49.000Z","size":250,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-26T00:37:24.632Z","etag":null,"topics":["ai","drift","edge","protobuf"],"latest_commit_sha":null,"homepage":"https://driftprotocol.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panda-official.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.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":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-24T10:52:43.000Z","updated_at":"2024-07-23T12:23:37.000Z","dependencies_parsed_at":"2023-02-01T06:16:04.534Z","dependency_job_id":"bcb343d6-039b-4041-b909-590beab4dbc4","html_url":"https://github.com/panda-official/DriftProtocol","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panda-official%2FDriftProtocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panda-official%2FDriftProtocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panda-official%2FDriftProtocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panda-official%2FDriftProtocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panda-official","download_url":"https://codeload.github.com/panda-official/DriftProtocol/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253882838,"owners_count":21978554,"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":["ai","drift","edge","protobuf"],"created_at":"2024-11-18T13:21:53.862Z","updated_at":"2025-05-13T05:31:00.993Z","avatar_url":"https://github.com/panda-official.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Drift Protocol\n\nThe Drift Protocol is a set of libraries that\nuse [Protocol Buffers](https://developers.google.com/protocol-buffers/docs/overview) (Protobuf) to encode messages in\nthe [PANDA|Drift infrastructure](https://driftpythonclient.readthedocs.io/en/latest/docs/panda_drift/). The libraries\nprovide pre-generated Protobuf messages so that users do not have to install the protobuf compiler and generate them\nthemselves.\n\n## Implementations\n\n* [For C++](cpp/README.md)\n* [For Python](python/README.md)\n\n## Example\n\nThe Drift Protocol can be used to create microservice applications. An example of such an application is shown in the\naccompanying diagram:\n\n![Drift Protocol Example](docs/img/example.drawio.svg)\n\nThe Trigger service publishes a trigger as a [Drift Package](docs/api/common.md#driftpackage) with ID = 1630062869443 and\na [Trigger Interval Message](docs/api/triggering.md#intervaltriggermessage), which contains a time interval [t0, t1], to\nthe  `trigger` MQTT topic.\n\nThe Timeswipe service subscribes to the `trigger` topic and receives a trigger package. Then it retrieves data of 48000\nsamples per second from a vibration sensor for the interval [t0, t1] by using a Time Swipe device, compresses, serializes\nthe data and sends it to MQTT topic `drift/sensor` as a [Drift Package](docs/api/common.md#driftpackage) with\na [Data Payload](docs/api/common.md#datapayload) inside. It contains a\nserialized [Wavelet Buffer](https://github.com/panda-official/WaveletBuffer) in the `data` field. The ID of the packages\nis the same ID=1630062869443, so we see that the trigger and the data are connected.\n\nThe [Drift Core](https://driftpythonclient.readthedocs.io/en/latest/docs/panda_drift/) services subscribe to all MQTT\ntopics which have `drift/` prefix, parse [Drift Packages](docs/api/common.md#driftpackage) and stores them in the metric\nand blob storages. After that, you can use [Drift Python Client](https://github.com/panda-official/DriftPythonClient) to\nrequest data from the storage.\n\n## Why Protobuf?\n\nWe use Protobuf to encode messages in Drift Protocol because it is a very efficient and flexible serialization format,\nespecially for binary data. It is also very easy to use and has a lot of implementations for different programming languages.\n\n## Related Projects\n\n* [WaveletBuffer](https://github.com/panda-official/WaveletBuffer) - A universal C++ compression library based on\n  wavelet transformation\n* [Drift Python Client](https://github.com/panda-official/DriftPythonClient) - Python Client to access data of\n  PANDA|Drift\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanda-official%2Fdriftprotocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanda-official%2Fdriftprotocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanda-official%2Fdriftprotocol/lists"}