---
title: Events
summary: Every event a module may emit, grouped by module, with the payload fields it carries.
audience: builders
owner: docs
status: stable
generated: scripts/gen-docs-reference
---

# Events

> Generated by `scripts/gen-docs-reference` from each `module.json`'s `watches` and the `emit` calls in the module's source. Do not edit this page: edit the code, then run `npm run docs:ref`.

565 event types. A module may emit only what its manifest declares under `watches.emits`; anything else throws. Events land in vyred's event log, where watchers, surfaces and other modules read them. Fields are the payload keys the source passes to `emit`; "sometimes" marks keys only some emits carry.

See [tools and events](../build/tools-and-events.md) for how to listen.

## agents

| Event | Fields |
| --- | --- |
| `summon.finished` | `result`, `status` |
| `summon.queued` | `text` |
| `summon.started` | not found in the source (the type is built at run time) |
| `summon.thread` | `thread` |

## appearance

| Event | Fields |
| --- | --- |
| `appearance.changed` | `scheme`, `theme`, `version` |

## appmods

| Event | Fields |
| --- | --- |
| `appmods.domain-changed` | `host`, `on`; sometimes `app` |
| `appmods.installed` | `name`, `version`; sometimes `deployment`, `source` |
| `appmods.removed` | `name`; sometimes `deployment`, `source` |
| `appmods.restarted` | `name`, `why` |
| `appmods.started` | `name` |
| `appmods.stopped` | `name`; sometimes `deployment`, `source` |
| `documents.declined` | not found in the source (the type is built at run time) |
| `documents.form-completed` | not found in the source (the type is built at run time) |
| `documents.signed` | not found in the source (the type is built at run time) |

Listens for: `vault.item-changed`

## approvals

| Event | Fields |
| --- | --- |
| `approvals.changed` | `count` |

## apps

| Event | Fields |
| --- | --- |
| `apps.acted` | `action`, `app` |
| `apps.sent` | `action`, `app` |

## artifacts

| Event | Fields |
| --- | --- |
| `artifact-links.changed` | `on`, `path`, `port` |
| `artifact.archived` | built in a variable before the emit; see the source |
| `artifact.created` | built in a variable before the emit; see the source |
| `artifact.deleted` | built in a variable before the emit; see the source |
| `artifact.moved` | built in a variable before the emit; see the source |
| `artifact.restored` | built in a variable before the emit; see the source |
| `artifact.shared` | built in a variable before the emit; see the source |
| `artifact.unshared` | built in a variable before the emit; see the source |
| `artifact.updated` | built in a variable before the emit; see the source |
| `thread.artifact` | built in a variable before the emit; see the source |

Listens for: `floor.wrote`, `thread.deleted`

## ask

| Event | Fields |
| --- | --- |
| `ask.answered-many` | `id`, `thread` |
| `thread.questions` | `id`, `questions`, `state`, `title`; sometimes `answers` |

## assistant

| Event | Fields |
| --- | --- |
| `assistant.access-narrowed` | `screens`, `tools` |
| `assistant.briefed` | `day`, `text` |
| `assistant.rolled` | `day`, `seeded`, `thread` |
| `push.proactive` | built in a variable before the emit; see the source |

## attachments

| Event | Fields |
| --- | --- |
| `attachment.added` | `bytes`, `id`, `mime`, `name`, `thread` |

## brand

| Event | Fields |
| --- | --- |
| `brand.changed` | `version` |

## bridges

| Event | Fields |
| --- | --- |
| `bridge.revoked` | `at`, `bridge`, `by_space`, `destination`, `kind`, `source` |
| `kit.installed` | not found in the source (the type is built at run time) |
| `projection.accepted` | not found in the source (the type is built at run time) |
| `projection.delivered` | not found in the source (the type is built at run time) |
| `projection.proposed` | not found in the source (the type is built at run time) |
| `projection.revoked` | not found in the source (the type is built at run time) |
| `record.copied` | not found in the source (the type is built at run time) |
| `reference.accepted` | not found in the source (the type is built at run time) |
| `reference.proposed` | not found in the source (the type is built at run time) |
| `reference.resolved` | not found in the source (the type is built at run time) |
| `reference.revoked` | not found in the source (the type is built at run time) |
| `task.continued` | not found in the source (the type is built at run time) |
| `view.accepted` | not found in the source (the type is built at run time) |
| `view.proposed` | not found in the source (the type is built at run time) |
| `view.read` | not found in the source (the type is built at run time) |
| `view.revoked` | not found in the source (the type is built at run time) |

## capsule

| Event | Fields |
| --- | --- |
| `capsule.hotkey` | `message`, `ok` |
| `capsule.requested` | `action` |

## chrome

| Event | Fields |
| --- | --- |
| `chrome.acted` | `action`, `app`, `ok`, `summary`; sometimes `agent`, `call`, `thread`, `why` |
| `chrome.connected` | `browser`, `version` |
| `chrome.disconnected` | none |
| `chrome.finished` | `agent`, `ok`; sometimes `stopped`, `thread` |
| `chrome.interjected` | `agent`, `from`, `text` |
| `chrome.paused` | `agent` |
| `chrome.plan` | built in a variable before the emit; see the source |
| `chrome.replaced` | none |
| `chrome.resumed` | `agent`; sometimes `answer` |
| `chrome.signin-asked` | `app`, `kind`, `message`, `tab` |
| `chrome.signin-done` | `app`, `tab` |
| `chrome.site-learned` | `origin`, `rev` |
| `chrome.step` | `agent`, `id`, `state`, `status`; sometimes `thread`, `why` |
| `chrome.stopped` | `agent`, `by` |
| `chrome.voice` | `agent`, `final`, `text`; sometimes `run` |
| `chrome.waiting` | `agent`, `question` |

## chrome

| Event | Fields |
| --- | --- |
| `chrome.acted` | `action`, `agent`, `app`, `ok`; sometimes `why` |

## comms

| Event | Fields |
| --- | --- |
| `comms.held` | `count`, `id`, `via` |
| `comms.sent` | `id`, `sent`, `via`; sometimes `failed`, `provider` |

## computers

| Event | Fields |
| --- | --- |
| `computer.checked-out` | `agent`, `screen`, `thread` |
| `computer.created` | `agent` |
| `computer.fill-began` | `agent`, `fill`, `origin` |
| `computer.fill-ended` | `agent`, `fill`, `why`; sometimes `target` |
| `computer.frozen` | `agent` |
| `computer.handed-back` | built in a variable before the emit; see the source |
| `computer.idle-warning` | `agent`, `at`, `surface` |
| `computer.joined` | `agent`, `node`, `stableId` |
| `computer.left` | `agent` |
| `computer.member-added` | `agent`, `computer`, `generation` |
| `computer.member-removed` | `agent`, `computer` |
| `computer.member-rotated` | `agent`, `computer`, `generation` |
| `computer.paused` | `agent` |
| `computer.released` | `agent`, `why` |
| `computer.resumed` | `agent` |
| `computer.shielded` | `agent`, `reason` |
| `computer.stopped` | `agent`; sometimes `died` |
| `computer.taken-over` | `agent`, `surface`, `thread` |
| `computer.thawed` | `agent` |
| `computer.unshielded` | `agent`, `reason` |
| `device.renamed` | `id`, `kind`, `name` |

## connectors

| Event | Fields |
| --- | --- |
| `connectors.connect-failed` | not found in the source (the type is built at run time) |
| `connectors.connected` | not found in the source (the type is built at run time) |
| `connectors.connection-checked` | `id`, `light` |
| `connectors.connection-created` | `id` |
| `connectors.connection-deleted` | `id` |
| `connectors.connection-proposed` | `label`, `proposal` |
| `connectors.connection-received` | `bytes`, `delivery`, `id` |
| `connectors.connection-updated` | `id` |
| `connectors.disconnected` | not found in the source (the type is built at run time) |
| `connectors.scope-changed` | not found in the source (the type is built at run time) |
| `connectors.site-needs-browser` | `host`, `id`, `reason`, `rung`, `site` |
| `connectors.site-needs-signin` | `host`, `id`, `rung`, `site`; sometimes `agent` |
| `connectors.site-ran` | `class`, `id`, `op`, `rung` |
| `connectors.site-stopped` | `host`, `id`, `reason`, `site` |

## context

| Event | Fields |
| --- | --- |
| `context.changed` | built in a variable before the emit; see the source |

## design

| Event | Fields |
| --- | --- |
| `design.changed` | none; sometimes `css`, `removed`, `screen`, `version` |
| `design.css-disabled` | `reason`, `scope` |
| `design.proposed` | `by`, `id`; sometimes `css`, `screen` |

## documents

| Event | Fields |
| --- | --- |
| `documents.copy-sent` | `days` |
| `documents.generated` | `format`, `path`, `record`, `template`, `template_version` |
| `documents.reminded` | `submission` |
| `documents.sent` | `submission`, `template_id` |

## files

| Event | Fields |
| --- | --- |
| `drive.exposed` | `findings`, `unsafe` |
| `files.received` | `bytes`, `name`, `path` |
| `files.sent` | `bytes`, `name`, `to` |

## gate

| Event | Fields |
| --- | --- |
| `gate.failed` | `error`, `id`, `via` |
| `gate.held` | none; sometimes `agent`, `description`, `id`, `input`, `kind`, `project`, `run`, `summary`, `thread`, `to`, `via` |
| `gate.rejected` | `by`, `id`, `kind`, `reason`, `via` |
| `gate.released` | `agent`, `by`, `edited`, `id`, `kind`, `project`, `thread`, `to`, `via`; sometimes `said` |
| `gate.revised` | `agent`, `by`, `id`, `project`, `thread`, `to`, `via` |
| `gate.settled` | `by`, `id`, `kind`, `outcome`, `via` |

## github

| Event | Fields |
| --- | --- |
| `github.added` | `login`, `name` |
| `github.cleanup-needed` | `branch`, `commits`, `dirty`, `path`, `project`, `session` |
| `github.connect-failed` | `error`, `id` |
| `github.connected` | `id`, `login`, `name` |
| `github.local-init` | `branch`, `project` |
| `github.removed` | `name` |
| `github.repo-created` | `account`, `full_name`, `visibility` |
| `github.token-invalid` | `name` |
| `github.undone` | `project`, `session`, `undone` |

## glass

| Event | Fields |
| --- | --- |
| `file.created` | `by`, `kind`, `path`, `size`, `target` |
| `file.moved` | `by`, `from`, `size`, `target`, `to` |
| `file.trashed` | `by`, `path`, `size`, `target`, `to` |
| `file.uploaded` | `by`, `path`, `size`, `target` |
| `glass.closed` | `seconds`, `session`, `surface`, `target` |
| `glass.opened` | `session`, `surface`, `target` |
| `glass.released` | `held_ms`, `surface`, `target`, `why` |
| `glass.taken` | `private`, `surface`, `target` |

## goals

| Event | Fields |
| --- | --- |
| `goal.accepted` | `goal` |
| `goal.created` | `goal` |
| `goal.done` | `goal` |
| `goal.milestone` | `goal`, `index`, `text` |
| `goal.proposed` | `goal` |

## google

| Event | Fields |
| --- | --- |
| `google.added` | `name` |
| `google.connect-failed` | `error`, `id` |
| `google.connected` | `email`, `id`, `name` |
| `google.drafted` | `account` |
| `google.removed` | `name` |
| `google.scheduled` | `account`, `op` |
| `google.sent` | `account`, `what` |

## hands

| Event | Fields |
| --- | --- |
| `hands.acted` | `acted`, `app`, `kind`, `selector`, `verified`; sometimes `action`, `held`, `why` |
| `hands.paused` | none |
| `hands.resumed` | `app`; sometimes `by` |
| `hands.stopped` | `app`, `by` |

## hands-desktop

| Event | Fields |
| --- | --- |
| `desktop.acted` | `action`, `agent`, `ok`, `summary`; sometimes `app`, `call`, `thread`, `why` |

## harness

| Event | Fields |
| --- | --- |
| `file.touched` | `path`, `session`, `tool` |
| `thread.started` | `cwd`, `session`, `source` |
| `thread.stopped` | `reason`, `session`, `source` |
| `tool.held` | `decision`, `lesson`, `rule`, `session`, `tool` |
| `turn.completed` | `session` |

## hooks

| Event | Fields |
| --- | --- |
| `hook.closed` | `route` |
| `hook.opened` | `route`, `scheme` |
| `hook.received` | `at`, `bytes`, `id`, `route` |

## import

| Event | Fields |
| --- | --- |
| `import.progress` | built in a variable before the emit; see the source |

## learn

| Event | Fields |
| --- | --- |
| `distill.finished` | `job`, `kind`, `lesson`, `ok`, `skill` |
| `lesson.allowed` | `allowed`, `asked`, `lesson`, `level`, `propose` |
| `lesson.broken` | `lesson`, `level`, `session`, `stage` |
| `lesson.caught` | `lesson`, `session`, `stage`; sometimes `attempt`, `tool` |
| `lesson.dormant` | `lesson`, `level` |
| `lesson.escalated` | `from`, `lesson`, `to` |
| `lesson.learned` | `checked`, `lesson`, `level`, `rule` |
| `lesson.proposed` | `checked`, `lesson`, `rule` |
| `lesson.retired` | `lesson`; sometimes `declined`, `replaced` |
| `lesson.tampered` | none |
| `skill.installed` | `scope`, `skill` |
| `skill.proposed` | `scope`, `sessions`, `skill` |
| `skill.retired` | `skill` |

## link

| Event | Fields |
| --- | --- |
| `ask.answered` | not found in the source (the type is built at run time) |
| `ask.raised` | built in a variable before the emit; see the source |
| `companion.paired` | `approved`, `companion`, `device`, `fingerprint`, `nonce` |
| `companion.refused` | `device`, `reason` |
| `companion.removed` | `companion`, `device`, `why` |
| `companion.requested` | `device`, `fingerprint`, `name`, `reason`, `request` |
| `device.renamed` | `id`, `kind`, `name` |
| `lease.borrowed` | not found in the source (the type is built at run time) |
| `link.connected` | `box` |
| `link.lost` | `box`, `error` |
| `link.mac-online` | `name`, `peer` |
| `link.pair-requested` | `expires`, `id`, `kind`, `login`, `name` |
| `link.paired` | `peer`; sometimes `box`, `kind`, `login`, `name` |
| `link.signed-in` | `box`, `expires` |
| `link.signed-out` | none |
| `link.sleeping` | built in a variable before the emit; see the source |
| `link.unpaired` | none; sometimes `box`, `name`, `peer` |
| `link.woke` | built in a variable before the emit; see the source |
| `thread.contended` | built in a variable before the emit; see the source |
| `thread.finished` | built in a variable before the emit; see the source |
| `thread.limit` | not found in the source (the type is built at run time) |
| `thread.moved` | not found in the source (the type is built at run time) |
| `thread.queued` | built in a variable before the emit; see the source |
| `thread.sent` | built in a variable before the emit; see the source |
| `thread.stopped` | built in a variable before the emit; see the source |
| `thread.text` | built in a variable before the emit; see the source |

## mail

| Event | Fields |
| --- | --- |
| `mail.held` | `account`, `id`, `via` |
| `mail.mapped` | `account` |
| `mail.needs-credential` | `account`, `item` |
| `mail.sent` | `account` |

## mcp

| Event | Fields |
| --- | --- |
| `mcp.added` | `auth`, `name`, `transport` |
| `mcp.called` | `agent`, `ms`, `ok`, `server`, `tool`; sometimes `released` |
| `mcp.failed` | `error`, `name` |
| `mcp.held` | `agent`, `id`, `kind`, `server`, `tool` |
| `mcp.refreshed` | `name`, `tools` |
| `mcp.removed` | `name` |
| `mcp.started` | `ms`, `name`, `tools`, `transport` |
| `mcp.stopped` | `name`, `reason` |
| `mcp.updated` | `fields`, `name` |

## mcpconn

| Event | Fields |
| --- | --- |
| `mcpconn.connected` | `id`, `name`, `where` |
| `mcpconn.did` | `conn`, `name`, `ok`, `says`, `tool` |
| `mcpconn.revoked` | `id`, `name` |

## memory

| Event | Fields |
| --- | --- |
| `memory.answered` | `abstained`, `id`, `limited` |
| `memory.corrected` | `action`, `addresses`, `prior_confidence`, `prior_rule`, `prior_source`, `rel`, `scope` |
| `memory.curated` | `edges`, `ms`, `nodes`, `updated` |
| `memory.fixed` | `action`, `id`, `kind`, `source` |
| `memory.forgot` | `from`, `id`; sometimes `project` |
| `memory.graph-grew` | `edges`, `new`, `nodes`, `updated` |
| `memory.merged` | `id`, `scope` |
| `memory.profile-changed` | `facts` |
| `memory.remembered` | `facts`, `id` |
| `memory.sealed` | `kept` |
| `memory.site-learned` | `counts`, `key` |
| `memory.split` | none; sometimes `callers`, `effect`, `id`, `scope` |
| `memory.suggested` | `id`; sometimes `state` |
| `memory.thinking` | `id`, `stage` |
| `memory.unlock-asked` | `server` |
| `memory.updated` | `by`, `thread`; sometimes `correction`, `fix` |
| `memory.written` | `from`, `id`, `kind`, `project`; sometimes `restored` |

## microsoft

| Event | Fields |
| --- | --- |
| `microsoft.added` | `name` |
| `microsoft.removed` | `name` |

## models

| Event | Fields |
| --- | --- |
| `models.changed` | `added`, `count` |
| `models.evals-changed` | `model`, `state` |
| `models.new` | `id`, `model`, `provider` |

## names

| Event | Fields |
| --- | --- |
| `name.claimed` | `name` |
| `name.moved` | `at`, `name` |
| `name.released` | `name` |

## onboard

| Event | Fields |
| --- | --- |
| `onboard.claude-changed` | `signedIn` |
| `onboard.finished` | none |
| `onboard.stepped` | `state`, `step` |

## outside

| Event | Fields |
| --- | --- |
| `outside.granted` | `id`, `kind`, `resource`; sometimes `write` |
| `outside.held` | `held`, `id`, `name`, `tool` |
| `outside.refused` | `reason`, `source`; sometimes `id` |
| `outside.registered` | `id`, `kind`, `name` |
| `outside.revoked` | `by`, `id`, `name` |
| `outside.used` | `id`, `name`, `outcome`, `resource`, `tool` |

## planner

| Event | Fields |
| --- | --- |
| `planner.acked` | `action`, `by`, `due`, `firing`, `item`, `key`; sometimes `unrung`, `until` |
| `planner.added` | `item`, `kind`, `title`; sometimes `added_by`, `at` |
| `planner.changed` | `fields`, `item`, `kind` |
| `planner.escalated` | `after_ms`, `doer`, `task`, `title`, `to` |
| `planner.fired` | `actions`, `due`, `firing`, `item`, `key`, `kind`, `missed`, `ring`, `title`; sometimes `account`, `added_by`, `start` |
| `planner.removed` | `item`, `kind` |
| `planner.schedule` | `reason` |
| `planner.task-run` | `item`, `ok`, `result`; sometimes `thread` |

## pluginagent

| Event | Fields |
| --- | --- |
| `pluginagent.asked` | `computer`, `id` |
| `pluginagent.declined` | none |
| `pluginagent.granted` | `agent`, `computer` |
| `pluginagent.revoked` | `agent` |

## presence

| Event | Fields |
| --- | --- |
| `presence.enrolled` | `id`, `kind`, `name` |
| `presence.proved` | `caller`, `method`, `tool`; sometimes `strength` |
| `presence.refused` | none; sometimes `caller`, `device`, `method`, `tool`, `why` |
| `presence.removed` | `id` |
| `presence.session-replaced` | `device`, `ended`, `id` |
| `presence.signed-in` | `id`, `node` |
| `presence.signed-out` | none; sometimes `device`, `id` |

## previews

| Event | Fields |
| --- | --- |
| `preview.opened` | `id`, `project`, `thread`, `title` |
| `preview.removed` | `id`, `project`, `thread` |
| `preview.state` | `id`, `project`, `state`, `thread`, `title`; sometimes `access`, `error` |
| `thread.operator` | `ask`, `computer`, `line`, `run`, `state`, `steps`, `title` |
| `thread.preview` | `access`, `id`, `mode`, `source`, `state`, `thumb`, `title` |
| `thread.signin` | `computer`, `id`, `site`, `state`, `why` |

## projects

| Event | Fields |
| --- | --- |
| `project.changed` | `project`; sometimes `archived`, `fields`, `instructions`, `name` |
| `project.created` | `home`, `name`, `project`, `threads` |
| `thread.picked` | `project`, `thread` |
| `thread.unpicked` | `project`, `thread` |

## publish

| Event | Fields |
| --- | --- |
| `deployment.approved` | not found in the source (the type is built at run time) |
| `deployment.built` | not found in the source (the type is built at run time) |
| `deployment.decided` | `deployment`, `outcome`, `space`, `task` |
| `deployment.held` | `deployment`, `space`, `task` |
| `deployment.job-ran` | `code`, `deployment`, `ok`, `seconds`, `space` |
| `deployment.previewed` | not found in the source (the type is built at run time) |
| `deployment.published` | not found in the source (the type is built at run time) |
| `deployment.restarted` | `deployment`, `space`, `why` |
| `deployment.retired` | not found in the source (the type is built at run time) |
| `deployment.rolled-back` | not found in the source (the type is built at run time) |

## push

| Event | Fields |
| --- | --- |
| `push.capped` | `day`, `kind`, `tag` |
| `push.delivered` | `device`, `receipt` |
| `push.seen` | `standalone`, `surface`; sometimes `device` |
| `push.subscribed` | `device`, `label`, `service` |

## recall

| Event | Fields |
| --- | --- |
| `recall.embedded` | `done`, `total` |
| `recall.scrubbed` | `classes`, `names`, `titles`, `turns`, `vectors` |
| `session.indexed` | `from`, `rewritten`, `session`, `to` |
| `session.state` | `busy`, `session` |
| `session.turn` | `session`; sometimes `replay` |

## relay

| Event | Fields |
| --- | --- |
| `device.joined` | not found in the source (the type is built at run time) |
| `device.moved` | `id`, `path`; sometimes `rtt` |
| `device.paired` | `id`, `kind`, `name`, `via`; sometimes `build`, `fingerprint`, `gate`, `release` |
| `device.removed` | `id`, `why` |
| `device.renamed` | `id`, `kind`, `name` |
| `device.trust-asked` | `fingerprint`, `id`, `name` |
| `pairing-window.closed` | `reason`, `window` |
| `pairing-window.opened` | `window` |
| `pairing-window.renewed` | `window` |
| `pairing.abandoned` | `device` |
| `pairing.pending` | `device`, `fingerprint`, `gate`, `name`, `via` |
| `pairing.rejected` | `device`, `window` |
| `pairing.requested` | `device`, `fingerprint`, `name`, `window` |
| `relay.code-asked` | built in a variable before the emit; see the source |
| `relay.connected` | built in a variable before the emit; see the source |
| `relay.disconnected` | built in a variable before the emit; see the source |
| `relay.invite-redeemed` | `fingerprint`, `name`, `offer`, `pub` |
| `relay.paired` | `device`, `fingerprint`, `name` |
| `relay.signin-asked` | built in a variable before the emit; see the source |
| `relay.tunnel-connected` | built in a variable before the emit; see the source |
| `relay.tunnel-disconnected` | built in a variable before the emit; see the source |
| `setup.contested` | none |
| `setup.ended` | `why` |
| `setup.paired` | `device` |
| `tailnet.revoke-failed` | not found in the source (the type is built at run time) |
| `tailnet.tried` | not found in the source (the type is built at run time) |

## runner

| Event | Fields |
| --- | --- |
| `runner.checkpoint` | not found in the source (the type is built at run time) |
| `runner.deleted` | not found in the source (the type is built at run time) |
| `runner.fenced` | not found in the source (the type is built at run time) |
| `runner.locked` | not found in the source (the type is built at run time) |
| `runner.moved` | not found in the source (the type is built at run time) |
| `runner.resumed` | `conflicts`, `files`, `lines`, `session`, `thread`, `turn`; sometimes `held`, `heldNames`, `line` |
| `runner.seal-failed` | not found in the source (the type is built at run time) |
| `runner.sealed` | not found in the source (the type is built at run time) |
| `runner.started` | not found in the source (the type is built at run time) |
| `runner.stopped` | not found in the source (the type is built at run time) |

## sessions

| Event | Fields |
| --- | --- |
| `account.changed` | `account`, `provider`, `signed_in`, `why` |
| `mode.defaulted` | `mode`, `project` |
| `model.changed` | `model`, `scope` |
| `prompt.changed` | `by`, `mode`, `scope`, `version` |
| `slot.queued` | `key`, `kind`, `owner`, `position`, `project`, `waiting` |
| `slot.released` | `id`, `key`, `kind`, `owner`, `project` |
| `slot.taken` | `held`, `id`, `key`, `kind`, `owner`, `project` |
| `usage.paused` | built in a variable before the emit; see the source |
| `usage.resumed` | `auth`, `by` |

## settings

| Event | Fields |
| --- | --- |
| `settings.changed` | `apply`, `by`, `key`, `level`, `rev`; sometimes `change`, `project`, `session` |
| `settings.loosened` | `by`, `change`, `key`, `label`, `level`, `said` |

## sidebar

| Event | Fields |
| --- | --- |
| `sidebar.changed` | `scope`; sometimes `key`, `op` |

## sight

| Event | Fields |
| --- | --- |
| `sight.stepped` | built in a variable before the emit; see the source |

## spaces

| Event | Fields |
| --- | --- |
| `compute.member-accepted` | not found in the source (the type is built at run time) |
| `compute.member-declined` | not found in the source (the type is built at run time) |
| `compute.space-allowed` | not found in the source (the type is built at run time) |
| `compute.space-stopped` | not found in the source (the type is built at run time) |
| `identity.alias-added` | `at`, `domain`, `name` |
| `identity.code-replaced` | `at`, `name`, `seq` |
| `identity.created` | `at`, `id`, `name` |
| `identity.device-removed` | `at`, `eid`, `name` |
| `identity.entry-added` | `at`, `name`; sometimes `eid`, `kind`, `seq` |
| `identity.entry-removed` | `at`, `name`; sometimes `eid`, `kind`, `seq` |
| `identity.recovered` | `at`, `how`, `name`, `seq` |
| `identity.warning` | `at`, `code`, `name`, `why` |
| `invite.accepted` | not found in the source (the type is built at run time) |
| `invite.created` | not found in the source (the type is built at run time) |
| `invite.expired` | not found in the source (the type is built at run time) |
| `invite.revoked` | not found in the source (the type is built at run time) |
| `member.added` | not found in the source (the type is built at run time) |
| `member.expired` | not found in the source (the type is built at run time) |
| `member.extended` | not found in the source (the type is built at run time) |
| `member.removed` | not found in the source (the type is built at run time) |
| `member.role-changed` | not found in the source (the type is built at run time) |
| `ownership.transferred` | not found in the source (the type is built at run time) |
| `space.create-cancelled` | not found in the source (the type is built at run time) |
| `space.create-done` | not found in the source (the type is built at run time) |
| `space.create-step` | not found in the source (the type is built at run time) |
| `space.device-enrolment-set` | `device`, `spaces` |
| `space.device-lent` | `device`, `lent`, `space` |
| `space.device-removed` | `device`, `space` |
| `space.device-restored` | `device`, `space` |
| `space.pairing-state` | not found in the source (the type is built at run time) |
| `space.setup-moved` | `space` |
| `space.vps-created` | not found in the source (the type is built at run time) |
| `space.vps-destroyed` | not found in the source (the type is built at run time) |
| `space.warning` | `code`, `message`, `spaceId` |

## spend

| Event | Fields |
| --- | --- |
| `spend.capped` | `action`, `cap`, `day`, `line`, `provider`, `spent`; sometimes `agent`, `purpose`, `thread` |
| `spend.raised` | `cap`, `provider`, `was` |

## suggest

| Event | Fields |
| --- | --- |
| `suggest.ready` | none |

## sync

| Event | Fields |
| --- | --- |
| `sync.deleted` | `bytes`, `files`, `machine`; sometimes `planHash` |
| `sync.progress` | `machine`, `path`; sometimes `bytes`, `done`, `quarantined`, `total` |
| `sync.revoked` | `machine` |
| `sync.sending` | `ok`, `path`; sometimes `error`, `quarantined` |
| `sync.sent` | `excluded`, `failed`, `of`, `quarantined`, `sent`, `skipped` |

Listens for: `link.unpaired`

## system

| Event | Fields |
| --- | --- |
| `device.renamed` | `id`, `kind`, `name` |
| `system.started` | `pid` |

## team

| Event | Fields |
| --- | --- |
| `summon.cancelled` | `project`, `request`, `teammate` |
| `summon.finished` | `project`, `reply_to`, `request`, `result`, `status`, `teammate` |
| `summon.queued` | `from_kind`, `priority`, `project`, `reply_to`, `request`, `role`, `teammate`, `text` |
| `summon.started` | `project`, `reply_to`, `request`, `teammate` |
| `summon.thread` | `project`, `reply_to`, `request`, `teammate`, `thread` |
| `team.role-changed` | `filler`, `project`, `role` |
| `teammate.charter-changed` | `agent`, `by`, `note`, `previous`, `project`, `version` |
| `teammate.created` | `agent`, `project`, `role`; sometimes `revived` |
| `teammate.default-changed` | `enabled`, `project` |
| `teammate.duty-changed` | `agent`, `change`, `id`, `project` |
| `teammate.retired` | `agent`, `project`, `reason`, `role`, `undone` |

## term

| Event | Fields |
| --- | --- |
| `term.closed` | `reason`, `term` |
| `term.command` | `author`, `command`, `session`, `surface`, `term`, `via` |
| `term.opened` | `cwd`, `session`, `term` |

## threads

| Event | Fields |
| --- | --- |
| `ask.answered` | `ask`, `by`, `decision`, `summary`, `tool`; sometimes `answers`, `device`, `scope` |
| `ask.raised` | `agent`, `ask`, `destination`, `holder`, `kind`, `reason`, `summary`, `thread_name`, `tool`, `tool_use_id` |
| `effort.switched` | `effort`, `live` |
| `lease.changed` | `holder`, `previous`; sometimes `took` |
| `mode.changed` | `label`, `mode` |
| `model.switched` | `live`, `model`; sometimes `reported` |
| `thinking.switched` | `on` |
| `thread.archived` | `agent`, `project` |
| `thread.chat` | `chat`, `cwd`, `session` |
| `thread.contended` | `holder`, `session` |
| `thread.continued` | `from_machine`, `from_thread`, `provider`, `source`, `thread`, `turns` |
| `thread.deleted` | `agent`, `project`, `thread` |
| `thread.edit-undone` | `path`, `restored` |
| `thread.finished` | `ok`, `via` |
| `thread.limit` | built in a variable before the emit; see the source |
| `thread.mentioned` | `mentions`, `uuid` |
| `thread.placing` | not found in the source (the type is built at run time) |
| `thread.plan` | built in a variable before the emit; see the source |
| `thread.provider` | `account`, `from`, `model`, `reason`, `to`; sometimes `once`, `text` |
| `thread.queued` | `queued`, `surface`, `text`, `uuid`; sometimes `author`, `edited`, `images`, `kind`, `queued_at`, `request`, `step` |
| `thread.remembered` | `file`, `scope` |
| `thread.renamed` | `name` |
| `thread.rewound` | `restore`, `uuid`; sometimes `at`, `files` |
| `thread.rolled` | `from`, `quiet`, `reason`, `seed_chars`, `seed_tail`, `thread`, `to`; sometimes `share`, `source`, `used`, `window` |
| `thread.sandbox` | `sandboxed`; sometimes `confined_by`, `folder`, `provider`, `reason` |
| `thread.sent` | `surface`, `text`; sometimes `author`, `images`, `kind`, `queued`, `queued_at`, `request`, `step`, `uuid`, `via` |
| `thread.shell` | `code`, `command`, `output` |
| `thread.started` | built in a variable before the emit; see the source |
| `thread.state` | `state`; sometimes `error`, `turn` |
| `thread.status` | `status`; sometimes `error`, `stopping`, `turn` |
| `thread.steered` | `step`, `uuid`; sometimes `queued_at`, `restored`, `text` |
| `thread.stopped` | `code`, `reason` |
| `thread.task` | built in a variable before the emit; see the source |
| `thread.text` | none; sometimes `before`, `block`, `delta`, `done`, `has`, `message`, `notice`, `text`, `thread` |
| `thread.thinking` | `block`, `delta`, `message` |
| `thread.tool` | `call`, `id`, `phase`, `status` |
| `thread.turn` | `text`, `turn`, `uuid`; sometimes `steered` |
| `thread.unarchived` | `agent`, `project` |
| `thread.unqueued` | `queued`, `reason`, `surface`, `uuid` |
| `thread.usage` | `cost_usd`, `tokens`, `total_cost_usd`; sometimes `context` |
| `thread.watched` | `by`, `note`, `notify`, `reason`, `watch`; sometimes `summary` |
| `turn.said` | `at`, `id`, `surface`, `text_hash` |

## tips

| Event | Fields |
| --- | --- |
| `tips.updated` | `count`, `from`, `module`, `to` |

## undo

| Event | Fields |
| --- | --- |
| `undo.done` | `id` |
| `undo.failed` | `id` |
| `undo.recorded` | `actor_kind`, `id`, `tool` |

## update

| Event | Fields |
| --- | --- |
| `update.available` | `channel`, `current`, `version` |
| `update.requested` | `version` |

## vault

| Event | Fields |
| --- | --- |
| `grant.requested` | none; sometimes `agent`, `item`, `module`, `name`, `origin`, `project`, `watcher` |
| `pass.accept-requested` | `id` |
| `pass.accepted` | `items`, `mode`, `owner`, `pass` |
| `pass.created` | `holder`, `items`, `mode`, `pass` |
| `pass.requested` | `holder`, `items`, `mode`, `pass` |
| `pass.revoked` | `holder`, `pass`, `rotate` |
| `person.offboarded` | `person`, `revoked`, `rotate` |
| `person.requested` | `id` |
| `vault.agent-carried` | `carried`, `rows` |
| `vault.agent-granted` | `agent`, `item`, `origin` |
| `vault.agent-revoked` | `agent`, `item`, `origin` |
| `vault.card-changed` | `fingerprint`, `name`, `was` |
| `vault.connected` | `item`, `module`, `need`, `provider` |
| `vault.connection-added` | `account`, `id`, `provider`, `source` |
| `vault.connection-changed` | `fields`, `id` |
| `vault.connection-removed` | `id` |
| `vault.copied` | `clearsAt`, `field`, `name`, `surface` |
| `vault.device-joined` | `fingerprint`, `name`, `role` |
| `vault.device-paired` | `device`, `name` |
| `vault.device-revoked` | `device`, `name` |
| `vault.emergency-added` | `items`, `person`, `wait_ms` |
| `vault.emergency-denied` | `person` |
| `vault.emergency-released` | `person` |
| `vault.emergency-removed` | `person` |
| `vault.emergency-requested` | `opens`, `person` |
| `vault.filled` | `name`; sometimes `agent`, `app`, `device`, `origin`, `surface`, `what` |
| `vault.granted` | none; sometimes `description`, `input`, `internal`, `module`, `name`, `project`, `run`, `watcher` |
| `vault.item-added` | `kind`, `name` |
| `vault.item-changed` | `kind`, `name`; sometimes `stale` |
| `vault.item-deleted` | `name` |
| `vault.key-rotated` | `kv`, `vault` |
| `vault.kit-printed` | `by` |
| `vault.lease-ended` | `ended`, `task` |
| `vault.lease-lent` | `agent`, `connections`, `kit`, `task`, `version` |
| `vault.linked` | `name`, `to` |
| `vault.locked` | none; sometimes `ended`, `sessions`, `surface`, `vault`, `why` |
| `vault.mcp-pass-ended` | `id`, `name` |
| `vault.mcp-pass-made` | `id`, `items`, `name` |
| `vault.mcp-refused` | `reason`, `source`; sometimes `pass` |
| `vault.member-added` | `member`, `role`, `vault` |
| `vault.member-removed` | `member`, `rotate`, `vault` |
| `vault.member-role` | `member`, `role`, `vault` |
| `vault.person-verified` | `fingerprint`, `name` |
| `vault.refused` | `action`, `name`, `who`, `why` |
| `vault.released` | `name`; sometimes `holder`, `module`, `pass`, `watcher` |
| `vault.restored` | `added`, `grants`, `identity`, `kept`, `mode`, `passes` |
| `vault.reveal-asked` | `item`, `name`, `pass` |
| `vault.revealed` | `field`, `name`, `surface` |
| `vault.revealed-to-pass` | `item`, `name`, `pass` |
| `vault.revoked` | `module`, `name`; sometimes `project`, `watcher` |
| `vault.scope-converted` | `agents`, `item`, `projects`; sometimes `note` |
| `vault.secretkey-changed` | `acct`, `why` |
| `vault.shared-created` | `vault` |
| `vault.shared-joined` | `role`, `vault` |
| `vault.ssh-approved` | `expires`, `host`, `name` |
| `vault.sync-conflicted` | `name`, `vault` |
| `vault.unlinked` | `name`, `to` |
| `vault.unlocked` | none; sometimes `sessions`, `surface`, `vault` |
| `vault.used` | `item`, `thread`, `via` |

## vitals

| Event | Fields |
| --- | --- |
| `vitals.sample` | `at`, `battery`, `cpu`, `device`, `disk`, `gpu`, `netRx`, `netTx`, `ram`, `scope` |
| `vitals.trouble` | `device`, `metric`, `minutes`, `scope`, `value` |

## waiting

| Event | Fields |
| --- | --- |
| `waiting.changed` | `by_kind`, `count` |

## watchers

| Event | Fields |
| --- | --- |
| `watcher.created` | `name`, `project`, `schedule` |
| `watcher.deleted` | `name` |
| `watcher.failed` | `error`, `failures`, `name`, `paused` |
| `watcher.fired` | `items`, `name`, `seen`, `trigger` |
| `watcher.paused` | `name`, `why` |
| `watcher.resumed` | `name` |
| `watcher.schedule-moved` | `watchers`, `zone_before`, `zone_now` |
| `watcher.woke` | `items`, `name`, `thread` |

## wink

| Event | Fields |
| --- | --- |
| `storage.paired` | built in a variable before the emit; see the source |
| `storage.removed` | `drain`, `final` |
| `storage.unreachable` | `reason` |
| `wink.code-ack` | not found in the source (the type is built at run time) |
| `wink.code-closed` | not found in the source (the type is built at run time) |
| `wink.code-done` | not found in the source (the type is built at run time) |
| `wink.code-opened` | not found in the source (the type is built at run time) |
| `wink.code-replaced` | not found in the source (the type is built at run time) |
| `wink.code-unavailable` | not found in the source (the type is built at run time) |
| `wink.code-wrong` | not found in the source (the type is built at run time) |
| `wink.confirmed` | `offer` |
| `wink.declined` | `offer`, `why` |
| `wink.device-needs-repair` | `device` |
| `wink.enrol-asked` | `device` |
| `wink.enrolled` | `device`, `ok` |
| `wink.expired` | `offer` |
| `wink.found` | `offer`; sometimes `flow` |
| `wink.joined` | `flow`; sometimes `device`, `grant`, `kind`, `offer`, `role` |
| `wink.network-changed` | `space`, `state` |
| `wink.offer-changed` | `device`, `offer`, `on`; sometimes `side`, `space` |
| `wink.offered` | `expires`, `flow`, `offer`, `via`; sometimes `role` |
| `wink.pair-answered` | `yes`; sometimes `kind` |
| `wink.pair-asked` | `choices`, `device`, `name`, `until`; sometimes `any`, `kind`, `signin` |
| `wink.pair-confirm` | `pairing`, `words` |
| `wink.pair-done` | `kind`, `pairing`; sometimes `device`, `target` |
| `wink.pair-failed` | `pairing`, `reason` |
| `wink.pair-waiting` | `kind`, `pairing`; sometimes `target` |
| `wink.relay-applied` | `device`; sometimes `url` |
| `wink.removed` | none; sometimes `device`, `grant` |
| `wink.server-adopted` | `owner` |
| `wink.server-paired` | `device` |
| `wink.server-release` | `device`, `state`; sometimes `message` |
| `wink.server-released` | none |
| `wink.server-reset` | `at`, `card`, `devices` |
| `wink.shared` | `device`, `grant` |
| `wink.signin-asked` | `until` |

Listens for: `device.paired`, `device.removed`, `name.claimed`, `relay.code-asked`, `relay.connected`, `relay.invite-redeemed`, `relay.signin-asked`
