# protocol

## Role

`protocol` defines the JSONL message boundary between Pod clients and Pod servers.

## Boundaries

Owns:

- transport-neutral method/event/result types
- request/reply and broadcast event shapes
- protocol error categories shared by clients and servers

Does not own:

- Unix socket implementation details (`client`, `pod`)
- TUI rendering (`tui`)
- Worker history semantics (`llm-worker`)
- durable storage (`session-store`, `pod-store`)

## Design notes

The exact enum variants are code authority. The README should describe the boundary, not duplicate every message shape.

Protocol events can inform UI and orchestration, but durable state changes still need to flow through Pod/session/metadata records.

## See also

- [`../../docs/design/pod-session-state.md`](../../docs/design/pod-session-state.md)
- [`../../docs/design/context-history.md`](../../docs/design/context-history.md)
