# aviso

Web Push for rastrillo apps: subscriptions a signed-in person enrols
from their browsers, one VAPID key per app, and a sender that fans a
payload out to those devices. An addon — `amadan.net/rastrillo/aviso`
depends on rastrillo, never the reverse.

    go get amadan.net/rastrillo/aviso
    cat "$(go list -m -f '{{.Dir}}' amadan.net/rastrillo/aviso)/SKILL.md"

`SKILL.md` is the authoring doc: how to wire it, send, and write the
browser and worker halves. `docs/installable.md` is the recipe for
making the app installable, which iOS requires before it will deliver
push. `example/` is the smallest app that wires every seam.

## What it is not

It does not decide who is told what — recipient selection and payload
meaning are the app's. It does not cache, work offline, or own the
service worker's lifecycle. It does not retry, queue, or report
delivery; a push service's acceptance is where its knowledge ends.

Design: `docs/superpowers/specs/2026-09-07-aviso-web-push-design.md`,
extracted from Eleven messenger's push transport. Gate: `make ci`.
