Cross-provider control
Switch agents without rebuilding your remote workflow.
Use one mobile control surface for Claude Code, Codex, OpenCode and Pi while preserving what makes each provider different.

Denshin normalizes durable product primitives while every event keeps its provider and fidelity.
What changes in practice.
Common primitives
Conversation, work, runs, decisions, changes and provenance form the shared vocabulary.
No fake parity
A provider that does not expose a todo, decision or control does not receive a synthetic one.
Multiple adapter modes
Native events, transcripts and rollout data can coexist behind the same provider-free view model.
Raw escape hatch
Every supported agent still has the terminal behind it.