Skip to content

Audit Log & Notifications ​

The panel keeps an audit log of administrative decisions — approving a plugin's relay hooks, switching auto-approve, hosting and removing a hosting, installing, updating and uninstalling a plugin — and of what plugins' lifecycle hooks report through the audit effect. Notifications are messages for the relay's administrators: a hook's notify-admins effect, an update waiting for approval (with why auto-approve did not cover it), a rule pack updated with Lamaste. Both live in state.db and hold metadata only — never a request or response body or a secret.

All endpoints are admin only.

GET /api/audit ​

Newest first. Query: plugin, action (exact, or a prefix ending in . such as hooks.), before (an entry id, to page back), limit (1–200, default 50).

json
{
  "entries": [
    {
      "id": 42,
      "at": "2026-10-15T12:00:00.000Z",
      "actor": "admin",
      "action": "hooks.approved",
      "plugin": "fx",
      "details": { "digest": "…", "version": "1.0.0", "for": "installed", "certSerial": "0A1B" }
    }
  ]
}
ActorWho
adminan administrator certificate (certSerial tells two apart)
agent:<label>an agent certificate
plugin:<route>a plugin's hook, through the audit effect (hook.<event>)
auto-approvea plugin's auto-approve
lamastethe panel itself

Actions written by Lamaste: plugin.installed, plugin.uninstalled, plugin.hosted, plugin.unhosted, plugin.updated, plugin.update.reverted, plugin.update.awaiting-approval, plugin.update.discarded, hooks.approved, hooks.auto-approve.enabled|disabled, hooks.auto-approve.withheld, hooks.rules-updated, hooks.effects-dropped, and for an agent half Lamaste installs:

ActionWhen
plugin.agent-half.installedThe agent reported the pinned version installed and its unit active — agentLabel, package, version, integrity, phase, retainedDataReused
plugin.agent-half.activatedA failed update switched the agent back to the version before — version, from
plugin.agent-half.removedRemoved from the agent — version, purge, phase (uninstall or rollback)
plugin.agent-half.purgedRetained data purged on the agent — route, package
plugin.agent-half.retained-data.forgottenThe relay's record of retained data dropped without touching the agent
hooks.auto-approve.withheldAuto-approve did not cover an update because its agent half changes what runs as root — reasons

Details are capped at 4 KiB (strings at 300 characters, three levels deep). Entries are kept 180 days, at most 50 000.

GET /api/notifications ​

Query: unread=true, before, limit. Answers { notifications: [{ id, at, source, level, message, read, readAt }], unread }. level is info, warning or critical; source is lamaste or plugin:<route>. Messages are one line of plain text (500 characters) — the panel renders them as text. Kept 30 days, at most 1 000.

POST /api/notifications/read ​

{ "ids": [1, 2] } or { "all": true } → { ok, changed }. Read state is shared by all administrators.

Panel and CLI ​

The panel's Audit page shows the notifications and the log with plugin and action filters. lamaste-server audit [--plugin <name>] [--action <action|prefix.>] [--limit <n>] prints the log.

Released under the PolyForm Noncommercial License 1.0.0