Logs, errors and worker effort
Where Empryo shows errors, model calls and compactions, what the reasoning effort next to each worker's model means, and where the error log file lives.
Copy & share
On this page9 sections
Empryo keeps three logs while it runs: errors, model calls and compactions. One viewer shows all three in the terminal UI and in the desktop app. Next to every worker's model you also see the reasoning effort its requests actually carry, so you can tell at a glance which helper ran on what.
Effort next to the modelLink to this section
Wherever a worker's model is shown, its reasoning effort is shown beside it as model · effort. The effort is the level the request actually carried after every default was applied: an explicit effort on the task, then the agent definition, then the router lane, then your config, then the model's own default. When the model has no effort control, or no level was sent, nothing is shown.
| Surface | Where you see it |
|---|---|
| Terminal UI | Subagent rows under a dispatch, and the /subagents panels for live and background agents. Narrow terminals drop the effort before they drop the model. |
| Desktop app | The subagents drawer, agent detail, inline dispatch cards, the events tab, engine runs and the nodes of an orchestration graph |
| Headless | The role · model · effort progress line printed to stderr when each subagent starts, and the effort field on background-status, agent-activity and model-call events with --events |
To change a worker's effort, set effort in its agent definition, on the task router lane, or with --effort for a headless run.
The model-call logLink to this section
Every model call Empryo makes is recorded with the model, the lane that made it, the effort, when it started, how long it took, tokens in and out (including cache reads and writes) and whether it succeeded. The lane says who made the call:
| Lane | Who made the call |
|---|---|
main | A tab's own turn |
subagent | A blocking dispatch or explore worker |
background | A detached background agent |
council | A council seat |
advisor | An advisor consult |
orchestration | A node in an orchestration graph |
review | The reviewer |
goal-review | The goal-loop reviewer |
marionette | The Marionette pre-pass |
web-search | The web-search worker |
compaction | A compaction summary |
namer | The tab and session namer |
desloppify | The post-dispatch desloppify pass |
verify | The post-dispatch verifier |
embed | An embedding call |
typesafe | A TypeSafe classifier or pilot call |
link | A consult started through agent_link |
routine | A routine pre-pass |
other | Anything not named above |
The same lane and effort are written to the usage ledger rows behind /usage, so spend can be broken down by who made the calls.
The log viewerLink to this section
Terminal UILink to this section
/errors/logs does the same. The viewer has three tabs: Errors, Model calls and Compactions. Press Tab or a digit to switch.
| Key | Action |
|---|---|
/ | Search the current tab. Enter or Esc leaves the search box |
f | Move to the next filter |
← → | Change the selected filter's value |
x | Clear the search and every filter |
Enter | Open the selected row in a detail view. Esc goes back |
Ctrl+Y | Copy the selected row, or the open detail |
r | Model calls tab only: start or stop recording |
Esc | Close |
Each tab has its own filters. Errors filter by source. Model calls filter by lane, model, effort, state and tab. Compactions filter by kind.
Model calls are recorded only while recording is on. It is off when Empryo starts and stopping it clears what was recorded, so leave it off unless you are looking into something. Errors and compactions are always recorded. /compact logs opens the same viewer on the Compactions tab.
Desktop appLink to this section
The Logs view lives in the context pane, with the same three sections: Errors, Model calls and Compactions. Each section has a search box, filters and a detail view per row. Open it from the command palette, by typing /errors or /logs in the composer, or by clicking the error indicator in the status bar.
Errors that used to be hiddenLink to this section
Failures inside Empryo that used to be swallowed are now reported: the code index and its language servers, tools, sessions, memory and the desktop app's main process all report unexpected failures to the same place. In the terminal UI they appear on the Errors tab, in the desktop app in the Logs view, and in headless runs on stderr.
Some of these are settings you wrote that are not in effect, such as a project config.json that cannot be parsed. Those are reported once per breakage and again only after the file is fixed and breaks again, not on every turn that reads it.
The durable error logLink to this section
Everything the Errors tab shows is also appended to a file, so a report about a freeze or a crash always has something to attach:
| System | Path |
|---|---|
| macOS and Linux | ~/.empryo/logs/errors.jsonl |
| Windows | %LOCALAPPDATA%\Empryo\logs\errors.jsonl |
One JSON object per line, with a timestamp, the surface that wrote it (tui, headless, desktop-bridge, hearth), the source and the message. The desktop app redacts keys and bearer tokens from provider errors before they are written. The file rotates to errors.jsonl.1 at 2 MB, a line that repeats within a second is written once, and a single session writes at most 2,000 lines.
Other debug toolsLink to this section
/diagnose runs a health check of the language servers, code parsing and semantic indexing for the current project. In the desktop app it has two tabs, Health and Setup, and an Export debug bundle button that collects logs and crash reports into your Downloads folder. The same export is in the command palette.
The desktop app also has a live-logs console that streams the app's own log as it runs. It exists only when the app is launched with --debug, --logs or EMPRYO_DEBUG=1, and with any of those it opens on the boot screen. A normal launch has no console and pays nothing for it.
RelatedLink to this section
- Model events is the older per-model summary view (
/model-events). - Cost tracking shows running totals and
/usage. - Troubleshooting lists where crash reports are written.