option-berthGuide

Leave work where the next session finds it

A worktree keeps work records: the commands the engine ran, the rounds handed to an agent, and how each one ended. It is what the next session reads to take over.

The record

One worktree can hold several workplaces, each keeping its entries in order. A workplace is a named stream of work; the current one receives new entries, and list marks it with ●.

work records under this checkout
oberth workplace list
oberth workplace new api-refactor
oberth workplace show --limit 20

Selectors match in order: exact name, full id, id prefix, name prefix; several matches return ambiguous rather than picking one. --worktree defaults to the current directory and resolves to the checkout root, so different spellings of one checkout are the same record.

What gets recorded

  • oberth start writes the run into the current workplace. A detached run is closed by the daemon when it records that run's exit.
  • oberth agent stream writes one entry per round: turn.started opens it, and turn.completed closes it with the outcome the provider reported.
  • oberth workplace record writes what the engine cannot see: an agent's own attempts, the client's interactive shell, a native agent. Reporting the same --id again updates the entry, so a piece of work's start and end may arrive in any order.

How an entry ends

An entry is running, completed, failed or interrupted. An entry with no observed end stays running and is never treated as success. A run stopped by oberth or by the user is interrupted, whatever signal exit code it left behind. Each workplace keeps at most 500 entries and drops the oldest beyond that.

a recorded block
{"id":"…","workplace":"…","seq":1,"kind":"shell","source":"engine",
 "input":"npm test","status":"completed","run_id":"…","pid":1234,
 "log_path":"…","exit_code":0,"started_at":"…","ended_at":"…"}

It is not runtime truth

Edit this page

Type to search every chapter and section.