# scarab-protocol
IPC protocol definitions and shared-memory layout for the
[Scarab](https://github.com/raibid-labs/scarab) terminal emulator.
> **Status: pre-1.0.** Wire format and shared-memory layout may change
> between 0.x minor versions.
## What this crate provides
- `#[repr(C)]` shared-memory structs (`SharedState`, ring buffer, grid cells).
- `DaemonMessage` / `ClientMessage` enums for the Unix-domain-socket control
channel between the daemon and the Bevy client.
- Wire types reused by `scarab-plugin-api` (e.g. `ModalItem`, `OverlayStyle`,
`NavFocusableAction`).
## Constraints
- Layout is `#[repr(C)]` and must remain `no_std` compatible so the
shared-memory mapping has stable, predictable layout across builds.
- Uses `bytemuck::{Pod, Zeroable}` for safe zero-copy transmutation.
## Features
| `bevy` | off | Derives `bevy_ecs::Resource`/`Event` on selected types. |
## License
Dual-licensed under either:
- Apache License, Version 2.0 ([LICENSE-APACHE](../../LICENSE-APACHE))
- MIT License ([LICENSE-MIT](../../LICENSE-MIT))
at your option.