The dev panel
While you develop, you want to see every call the app answered — which operation, how long, what it refused, which statements it ran. @fougere/calls keeps that list.
@fougere/calls watches what this process dispatches, and takes part in none of it:
npm install -D @fougere/calls
pnpm add -D @fougere/calls
bun add -d @fougere/calls
yarn add -D @fougere/calls
extensions: [calls({ max: 500, panel: true })],
It subscribes to app.observe — passive, and its own failure is swallowed — so it sees
what a link around calls cannot: a call refused before any handler (an unknown route, an
entity hosted elsewhere, a call arriving while the facade drains), and the route kind of
every call, so a local execution and a hop to another process read the same way. Beside
the calls it keeps a bounded ring of log lines, of errors, and — when
@fougere/adapter-sql is there — of the statements each call issued.
Nothing is stored and no port is opened unless panel says so. The ring is served as
rpc.calls, and the reader is fougere devtools
over /_fougere/call, like any other consumer. An app that never installed it answers
Unknown rpc operation 'calls'. It serves discover.