Generated Protobuf and gRPC C# classes for the ARES Datamodel
The ARES-datamodel repository hosts the protobuf defintions and their generated artifacts (as well as a few tools) that make up the ARES data model. Its main role is to centralize the data definitions and share them across the various ARES services.
By having a single source of truth for Protobuf/gRPC definitions and auto-generated code, this repo helps ensure consistency across systems, enable type safety, and reduce manual serialization logic.
Key points:
- Schema definitions are maintained in
.protofiles (in theprotos/folder). - C# client/server stubs and data classes are auto-generated from those
.protofiles. - Python artifacts or related tooling are also present (in
python/), supporting cross-language usage. - The repository does not (typically) contain handwritten business logic; instead it focuses on the data interface layer.
| Path | Description |
|---|---|
| protos/ | Core .proto files that define ARES message types and gRPC services |
| dotnet/ | Generated C# source files and .NET project configuration |
| python/ | Python stubs, build scripts, or utilities for cross-language support |
This structure separates source definitions (protos/) from language-specific builds (dotnet/, python/), ensuring clarity and reproducibility when regenerating code.
If you're only interested in utilizing the existing proto definitions and not making changes to the datamodel, packages are readily available to support development in both C# and Python.
ARES-Datamodel can be installed in your C# project using the Nuget package manager. Simply navigate to your nuget package manager in your project and with your source set to nuget.org, search for ARES-Datamodel. Details for this package can be found here.
ARES-Datamodel is available for install via pip.
pip install ares-datamodelThose looking to make changes to the datamodel will have to generate their own language specific protobuf messages for testing. This can be done using the setup and generation steps below.
Make sure you have the following tools installed:
- Protobuf Compiler (
protoc) - .NET SDK
- (Optional) gRPC C# Plugin
- (Optional) Python 3.8+ if using Python bindings
Confirm installations with:
protoc --version
dotnet --versionWhen .proto definitions are updated, you can regenerate the corresponding language specific proto files.
New C# specific proto files can be generated using the dotnet pack command. Ensure your active directory is the dotnet directory, and run the following command:
dotnet pack -c Release --output ./nupkg /p:Version=x.x.xThis outputs a local nuget package that can be used for testing changes.
Python specific proto files can be generated by running a python build command. Ensure your active directory is the python directory, and run the following command:
python -m buildThis outputs two files, a .tar.gz file and a .whl file. Either of these can be used to install your package from the locally generated copy using pip
pip install .\dist\ares_datamodel-0.10.0b2.tar.gzAlternatively, you can install an editable version of the library using pip's -e argument.
pip install -e \path\to\ares-datamodel\pythonThis project follows Semantic Versioning (SemVer), with tags like v0.13.2-beta.1.
Each release represents a stable snapshot of the Protobuf definitions and generated artifacts. Consumers should reference a specific release tag to ensure schema compatibility.
| Change Type | Example | Impact |
|---|---|---|
| Patch | v1.0.1 → v1.0.2 |
Minor, non-breaking fixes |
| Minor | v1.0.0 → v1.1.0 |
Additive, backward-compatible changes |
| Major | v1.0.0 → v2.0.0 |
Breaking schema or service changes |
Contributions are welcome! To propose schema or code generation updates:
- Fork the repository
- Create a branch (feature/new-message or fix/typo)
- Update or add .proto definitions
- Regenerate code and ensure it builds
- Submit a Pull Request describing:
- The purpose of the change
- Whether it introduces breaking changes
- Migration or downstream impact
Please maintain consistent naming and field numbering to preserve backward compatibility.
This project, as well as the rest of the ARES software, is licensed under the MIT License.
The ARES Datamodel has been cleared for release under clearance number AFRL-2025-5329.
For questions, bug reports, or schema proposals please open an issue in this repository with a detailed description of your problem, and how to reproduce it if applicable.