Skip to content

Engine evaluation protocol

Requires @openlatch/client 0.8.0 or later

Use this page to know which protocol contract the client’s engine answers from client 0.8.0, and what a request row carries.

The engine is the one the daemon decides with. Another process reaches it through an internal command of the client that no help output lists. The OpenLatch platform is its caller: you do not run it yourself.

The engine answers contract 2, and only contract 2.

  • The --contract option stays, and 2 is its only value and its default.
  • Any other value is refused before anything is read: the command exits with code 2, and the message names the value.
  • Contract 1, the previous protocol, is refused the same way. A row that still carries an input field is a contract 1 row: it is refused with OL-1240 and a message naming contract 1, never guessed.

The engine announces its contract and contract version before it reads anything, and a caller refuses any other value before it sends a bundle.

A row’s action is the v3 action: the data of a v3 hook event, the same model the client sends to the platform.

The row carries no input field: the engine reads the typed fields of the action.

Two rows have no hook event of their own. A spend row carries a tool action named spend with its amount, and a model row carries an llm_call action with its prompt.

--describe reports the current revision only: the toolbox version it announces and the toolbox it lists are this revision’s, revision 5.

The engine still reads a bundle built for the previous revision, revision 4, so a machine keeps deciding with the bundle it holds until it fetches one of the current revision.