How arisros/tmprl works
tmprl is a keyboard-driven terminal client for inspecting and operating Temporal workflows. A user’s key input enters the TUI event loop and application reducer; the app uses core models and the Temporal client to load workflow lists or histories, inspect payloads, and perform operations, then renders results in panes. The README documents search, saved views, schedules, mutations, codec decoding, splits, and tabs. The graph follows those documented capabilities and the crate layout; wiring within unsampled app and client code is shown only at the documented crate boundaries.
Main entry points: mod.rs App reducer · query.rs Workflow browsing · history.rs History browsing · main.rs TUI entry
Components 25
Terminal interface
- TUI entry
crates/tmprl-tui/src/main.rs - Input loop
crates/tmprl-tui/src/event.rs - Terminal rendering
crates/tmprl-tui/src/ui/mod.rs
Application state
- App reducer
crates/tmprl-tui/src/app/mod.rs - Workflow browsing
crates/tmprl-tui/src/app/query.rs - History browsing
crates/tmprl-tui/src/app/history.rs - Find workflows
crates/tmprl-tui/src/app/find.rs - Workflow actions
crates/tmprl-tui/src/app/mutate.rs - Payload inspection
crates/tmprl-tui/src/app/payload.rs
Workflow domain
- Visibility queries
crates/tmprl-core/src/query.rs - On-screen search
crates/tmprl-core/src/search.rs - History model
crates/tmprl-core/src/history.rs - Timeline model
crates/tmprl-core/src/timeline.rs - Schedule model
crates/tmprl-core/src/schedule.rs
Temporal access
- Connection
crates/tmprl-client/src/conn.rs - Workflow RPCs
crates/tmprl-client/src/ops/workflow.rs - History RPCs
crates/tmprl-client/src/ops/history.rs - Schedule RPCs
crates/tmprl-client/src/ops/schedule.rs - Mutation RPCs
crates/tmprl-client/src/ops/mutate.rs - Payload codec
crates/tmprl-client/src/ops/codec.rs
Window layout
- Splits and tabs
crates/tmprl-ui/src/tree.rs - Window model
crates/tmprl-ui/src/lib.rs
Other components
- Operator
- Temporal service
- Codec server
Connections 30
- Operator → Input loop: presses keys
- TUI entry → Connection: connects
- TUI entry → App reducer: starts app
- TUI entry → Input loop: runs loop
- Input loop → App reducer: dispatches input
- App reducer → Terminal rendering: renders state
- App reducer → Splits and tabs: arranges panes
- Splits and tabs → Window model: uses model
- App reducer → Workflow browsing: dispatches commands
- App reducer → History browsing: dispatches commands
- App reducer → Find workflows: dispatches commands
- App reducer → Workflow actions: dispatches commands
- App reducer → Payload inspection: dispatches commands
- Workflow browsing → Visibility queries: builds queries
- Workflow browsing → Workflow RPCs: loads workflows
- Workflow browsing → Schedule RPCs: loads schedules
- Find workflows → Workflow RPCs: looks up workflows
- Find workflows → Visibility queries: forms ID query
- History browsing → History RPCs: loads history
- History browsing → History model: uses model
- History browsing → Timeline model: builds timeline
- Workflow actions → Mutation RPCs: sends actions
- Payload inspection → Payload codec: decodes payloads
- Connection → Temporal service: connects
- Workflow RPCs → Temporal service: sends RPCs
- History RPCs → Temporal service: reads history
- Schedule RPCs → Temporal service: manages schedules
- Mutation RPCs → Temporal service: mutates workflows
- Payload codec → Codec server: requests decoding
- Operator → On-screen search: searches visible rows