kollabor-rpc
kollabor-rpc is the lightweight RPC transport foundation for Kollabor daemon
and attach-mode state access.
It provides request/response models, error types, a method-dispatch server, a client, and Unix-socket transport helpers. The current package is intentionally small and stdlib-only.
Current Role
- Represent RPC requests and responses with stable IDs.
- Dispatch named methods to async handlers.
- Provide client helpers for request/response calls.
- Wrap common RPC errors such as timeout, missing method, and handler failure.
- Provide Unix socket connection helpers with a larger buffer limit.
Architecture
| Module | Responsibility |
|---|---|
models.py |
RpcRequest, RpcResponse, request ID helpers |
errors.py |
RPC exception hierarchy |
server.py |
handler registration and dispatch |
client.py |
request client abstraction |
transport.py |
Unix transport helpers and buffer settings |
Usage
from kollabor_rpc import RpcServer
server = RpcServer()
async def ping(params):
return {"ok": True, "echo": params.get("echo")}
server.register("ping", ping)
reply = await server.handle_wire({
"request_id": "req_1",
"method": "ping",
"params": {"echo": "hello"},
})
Known Gaps
- This package is still a transport foundation; higher-level StateService method contracts live outside the package.
- Wire-format compatibility should be documented alongside the hub/attach socket protocol.
- Current tests focus on integration through hub sockets; package-local unit coverage should grow as the API stabilizes.
Roadmap
Phase 1: Contract docs
- Document the exact frame format used by attach clients and hub sockets.
- Add examples for both direct dispatch and socket-backed clients.
- Clarify which errors are transport failures versus handler failures.
Phase 2: StateService integration
- Keep RPC generic, but document the StateService method namespace that uses it.
- Add contract tests for high-value state methods.
- Add compatibility checks for attached streaming and request/reply flows.
Phase 3: Operational hardening
- Add timeout/cancellation guidance for callers.
- Improve observability for slow handlers and failed frames.
- Keep the package stdlib-only unless a transport dependency becomes essential.
Development
Targeted validation examples:
python -m py_compile packages/kollabor-rpc/src/kollabor_rpc/*.py
python -m pytest tests/test_hub_rpc_integration.py -q
Dependencies
None. This package is intentionally stdlib-only.
License
MIT
Metadata
Release files for kollabor-rpc 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kollabor_rpc-0.9.0.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kollabor_rpc-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.5 kB
Release files / kollabor_rpc-0.9.0.tar.gz
| Download URL | kollabor_rpc-0.9.0.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5342563a8cb96af044bdfa56c56da65d22f03b69b8a2aa5fb4df3b4bd43c0283
|
|
BLAKE2b-256 checksum How to use checksums |
a5d65d3c0d3091ad246604e3f203d40cbc4b0c1d473d3df26bfb2465c0e10e94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / kollabor_rpc-0.9.0-py3-none-any.whl
| Download URL | kollabor_rpc-0.9.0-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba3aff74e74364c0ee646ea91873b5f978b0875047f4a072e8d6494902eeadc3
|
|
BLAKE2b-256 checksum How to use checksums |
693ebe618374a932b4dd8d6fd827c5a13aba2064e0ba11326a03f70fb764518b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|