lilo-rm-core
Core protocol types for the Runtime Matters daemon.
lilo-rm-core owns the public JSON line contract shared by rtm clients and rtmd:
- spawn, status, nudge, kill, doctor, MCP bridge, and version request types
- runtime lifecycle and event types
- transport helpers for newline delimited JSON
The current runtime protocol version is 0.3. VersionInfo advertises this
protocol version and these stable capability names:
| Capability | Contract |
|---|---|
structured_protocol_errors |
Error responses expose stable machine readable codes. |
headless_stdio_log_paths |
Headless spawn responses include stdout and stderr log paths. |
status_session_set_filter |
Status requests accept a set of session ids. |
status_updated_since_filter |
Status requests accept an updated time lower bound. |
typed_nudge_outcomes |
Nudge responses expose typed delivery outcomes. |
validate_target_preflight |
ValidateTarget checks a target string without spawning. |
events_cursor |
Events support durable cursor replay. |
tmux_pane_snapshot |
Tmux targets support on demand pane snapshot capture. |
Tmux Pane Snapshot Contract
RuntimeRpc::Capture returns a one shot PaneSnapshot for a tmux backed
target. It is a terminal pane snapshot, not process stdout or stderr. Content
may include prompts, user input, ANSI escapes, and redraw artifacts. The daemon
preserves ANSI bytes and does not interpret truncation.
The default scrollback_lines value is 1000. Tmux caps useful history by the
target pane's history-limit. pane_history_lines is the raw tmux
#{history_size} value at capture time, which counts scrollback history rather
than the visible pane. History already dropped before capture cannot be
detected.
Doctor JSON Contract
RuntimeResponse::Doctor returns DoctorResponse. In protocol version 0.3,
session-matters may treat these JSON field names and value kinds as stable:
version.version,version.git_sha,version.protocol_version, andversion.capabilitiessocket_pathanduptime_secssqlite.applied,sqlite.total,sqlite.applied_descriptions, andsqlite.pending_descriptionslifecycles.forking,lifecycles.running,lifecycles.exited, andlifecycles.lostwatchers.process_exit_watchersandwatchers.shim_socketslaunchers[].runtime,launchers[].command, andlaunchers[].errortmux.available,tmux.version, andtmux.errorlog_availability[].session_idandlog_availability[].log_availabilitylast_probe_sweeprecent_lost[].session_id,recent_lost[].evidence, andrecent_lost[].occurred_at
Diagnostic values such as versions, git shas, paths, uptime, process counts,
watcher counts, launcher commands, tmux details, and timestamps vary by build
and host. Use version.protocol_version plus version.capabilities for
contract negotiation.
The daemon, CLI, platform, launcher, and store crates remain private implementation details.