Explicit commands
Only Go functions you register are callable. Inputs are decoded strictly into your types, and a TypeScript client is generated from them.
The page is untrusted. It gets exactly the authority you grant, for the window it runs in, at the origin it runs at. Nothing more.

example/notes is a Markdown notes app whose window may read one folder and write Markdown files in it. Its Try to break it panel attacks the app from the page, and the audit log shows each attempt refused, with the rule that refused it.
git clone https://github.com/klarlabs-studio/vitra && cd vitra
make notes