# rgpot-core

Core Rust library for [rgpot](https://github.com/OmniPotentRPC/rgpot):
RPC-based distributed potential energy surface calculations.

## Overview

`rgpot-core` follows the [metatensor](https://docs.metatensor.org/) architecture
pattern: a Rust core that defines fundamental types, exposed via a stable C ABI
(auto-generated by [cbindgen](https://github.com/mozilla/cbindgen)), with
hand-written C++ RAII wrappers on top.

Data exchange uses the [DLPack](https://github.com/dmlc/dlpack) tensor protocol
for device-agnostic interoperability (CPU, CUDA, ROCm).

## Features

| Feature | Description |
|---------|-------------|
| *(default)* | Core types, DLPack tensor helpers, callback-based potential dispatch |
| `rpc` | Cap'n Proto RPC client and server for distributed calculations |
| `cache` | *(planned)* Result caching layer |

## Quick Start

```toml
[dependencies]
rgpot-core = "0.1"
```

Enable the RPC feature:

```toml
[dependencies]
rgpot-core = { version = "0.1", features = ["rpc"] }
```

## Documentation

Full documentation is available at [rgpot.rgoswami.me](https://rgpot.rgoswami.me).

## License

MIT -- see [LICENSE](https://github.com/OmniPotentRPC/rgpot/blob/main/LICENSE)
for details.
