mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-08 22:38:01 -06:00
35 lines
1.1 KiB
Markdown
35 lines
1.1 KiB
Markdown
# UnShell
|
|
|
|
UnShell is a tree-addressed RPC and data-exchange protocol designed for a hierarchy of endpoints. It provides a lightweight way to route calls, streams, and faults through a tree-structured network of nodes.
|
|
|
|
## Features
|
|
|
|
- **Tree-Based Routing**: Path-based addressing with longest-prefix matching.
|
|
- **RPC and Streaming**: Supports simple request-response (Call) and bidirectional streaming (Data).
|
|
- **Hierarchical Control**: Authority-restricted downward calls and upstream-only faults.
|
|
- **Introspection**: Mandatory discovery mechanism for endpoints and leaves.
|
|
- **no_std Compatible**: Core protocol implementation is designed for constrained environments.
|
|
|
|
## Architecture
|
|
|
|
The protocol is organized into:
|
|
- `unshell`: Core protocol logic, framing, and routing.
|
|
- `ush-treetest`: A testbed implementation for validating the protocol.
|
|
- `ush-obfuscate`: Utilities for code obfuscation.
|
|
- `base62`: Encoding utilities.
|
|
|
|
## Getting Started
|
|
|
|
### Build
|
|
```bash
|
|
cargo build
|
|
```
|
|
|
|
### Run Tests
|
|
```bash
|
|
cargo test
|
|
```
|
|
|
|
## Protocol Specification
|
|
For detailed information on the wire format and behavioral invariants, please refer to `PROTOCOL.md`.
|