-
Notifications
You must be signed in to change notification settings - Fork 0
Development
Steven Enamakel edited this page Jul 5, 2026
·
1 revision
This page captures the local workflow for TinyChannels contributors.
Run from the repository root:
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo build --all-targets
cargo testUse cargo fmt before committing Rust changes.
Keep docs source-grounded:
- public API docs should match the exports in
src/lib.rs - architecture notes should match
docs/spec/README.md - module docs should describe the actual module boundary
- provider docs should distinguish implemented providers from planned setup UI definitions
Keep Markdown files at 500 lines or fewer. Split large topics into focused pages and link them from the relevant index.
- Read the existing provider module closest to the target platform.
- Choose the right surface: legacy
Channel, normalizedChannelAdapter, or relay connector. - Keep secrets in host-owned config or
SecretRef; do not store secret values inside normalized channel types. - Normalize inbound payloads into
ChannelInboundEnvelope. - Build outbound sends as
ChannelOutboundIntent. - Preserve platform ids in
MessageReceipt. - Advertise only supported capabilities.
- Add tests for auth metadata, serialization, idempotency, threading, delivery, and provider-specific edge cases.
If a provider needs a new OpenHuman runtime service:
- Add a small object-safe trait or DTO under
src/host/. - Add an optional accessor to
ChannelHost. - Add a bit to
HostCapabilitiesif providers need to branch on it. - Keep provider behavior graceful when the capability is absent.
- Add tests with
NoopHostand a focused fake host implementation.
Relay changes should include focused tests for:
- descriptor JSON stability
- frame serialization and deserialization
- forged relay-trust field stripping
- auth token/signature verification
- outbound intent to relay action projection
- reconnect and timeout behavior for transport changes
The wiki/ directory is a separate Git repository tracked by the parent as a
submodule. Commit wiki page changes inside wiki/, then stage the parent
gitlink update and .gitmodules changes in the root repository.
Useful commands:
git -C wiki status
git -C wiki add .
git -C wiki commit -m "Document TinyChannels wiki"
git add .gitmodules wiki
git statusChannel and messaging contracts for OpenHuman.
Getting started
Concepts
Modules
Contributing