wirldocs
The wirl npm package is not published yet, so the npx wirl … commands on these pages will not run today. Until it ships, connect your agent to the hosted endpoint: the first command in the Quickstart.

Logs

What is captured#

Everything your server prints with console.log, console.info, console.warn, console.error and console.debug, and every uncaught exception, for every request: a page load, a webhook, a schedule run. Nothing to install and nothing to declare. The scaffold's server prints one line per request so a fresh app is never silent.

Lines are kept for seven days, grouped by the request that printed them, with what wirl knew about the request: who made it, whether a webhook was verified, which schedule run it was, the status the app answered, and the deployment version that was live.

Deployments made before logging existed have no lines; deploy again and they start.

Reading them#

npx wirl logs                 the last hour, newest first
npx wirl logs --errors        only requests that failed or printed at error level
npx wirl logs --since 24h     further back: 15m, 1h, 24h, 7d
npx wirl logs --follow        keep watching: every two seconds, the newest invocations since the last look, at most five pages of them
npx wirl logs --ray <id>      the one request behind a cf-ray header
npx wirl logs --run <id>      the one schedule run
npx wirl logs --search text   requests with a line containing the text
npx wirl logs --cursor <n>    the page before a 'More before this' line

Each request is one block:

05:57:04  POST /boom   Anyone   500 · exception · 0 ms   v3   ray a3c5df0f3a665163
  log    probe: handling POST /boom
  error  probe: boom on purpose
         at Object.fetch (worker.mjs:7:13)

A coding agent reads the same thing through the wirl_logs MCP tool, and should, before changing code, whenever a deploy misbehaves or a schedule or webhook failed.

On the dashboard, the app's Logs page shows the same list with filters, and its Overview shows the last errors. Both are for people who can deploy the app: a line can contain whatever the app chose to print.

What not to log#

A secret, a whole request body, or a person's data you would not want sitting in a seven-day-old line. A line per request is free; a line per loop iteration is not, and the plan's monthly allowance is shared by every app in the installation.