# Engine.show
URL: https://lsd.tools/docs/api-engine-show
Updated: 2026-07-17

## Parameters

| name | type | default | description |
|---|---|---|---|
| `mode` | `str` | `"auto"` | `"window"` opens a front-end window (needs a presenter), `"text"` prints each view's console rendering, `"auto"` picks a window when a front-end is loaded else text |
| `title` | `str \| None` | `None` | the window title hosting the views (defaults to `"LSD"`) |
| `block` | `bool` | `True` | whether the window call blocks until closed |

## Example

```python
from lsdtools import Engine, views

engine = Engine()
engine.add(views.chart(kind="histogram", title="Grades"))
engine.add(views.table(title="Assays"))
engine.show()          # one window hosting both, or console text when headless
```

## Notes

`show` is the exact symmetry partner of [`run_all`](/docs/api-engine-run-all): **run executes the
entities, show presents the views.** It presents every [`View`](/docs/api-view) attached with
[`add`](/docs/api-engine-add) — a single window hosting them all when a front-end is loaded, else each
view's titled text rendering (so the same script runs headless). With no views attached it logs and
returns `None`.

A single view can also present itself directly through its own [`View.show()`](/docs/api-view);
`Engine.show` is the whole-project version.

## See also

**API:** [add](/docs/api-engine-add) · [run_all](/docs/api-engine-run-all) · [View](/docs/api-view) · [watch](/docs/api-view-watch)

**Guides:** [How a package fits together](/docs/start-architecture) · [Rendering & payloads](/docs/tools-rendering)
