Exec & Eval
The first word in a fence info string is the language. The remaining words form a middleware chain read left-to-right. Standard renderers only read the first word, so the modifiers stay invisible everywhere else.
```bash silent timeout=30s exec
git diff --stat
```Built-in modifiers
exec— run the block as a subprocess and render stdout.eval— run JavaScript/TypeScript in-process as an Effection operation.silent— execute but suppress rendered output.persist— keep resources created by an eval block alive for the component invocation.timeout=30s— cancel a long-running block.daemon— start a long-running subprocess tied to the component invocation.
LLM sampling is not a fence modifier — it happens through the <Sample> component installed by provider middleware.
Eval blocks share bindings
eval blocks run in a shared binding environment for the current component. Top-level bindings export automatically to later blocks, and bare {name} interpolation inside any executable block reads from them.
```ts eval
const port = yield* findFreePort();
const baseUrl = `http://127.0.0.1:${port}`;
```
```bash daemon exec
./server --port {port}
```Rendering from eval
output("...")renders text into the document from an eval block.renderChildren()andrender(markdown)render nested content intentionally.
Daemons
daemon exec starts a long-lived process, returns control immediately, and is torn down by structured concurrency when the component invocation completes — no manual cleanup. Combined with readiness polling, this is how provider components run local model servers.
Next: LLM providers →