Skip to content

Plugin manifest

A plugin lives in <config>/plugins/<id>/: its binary, its plugin.toml and its profile layer. The host reads the manifest before it starts the binary, so a disabled plugin’s unit keys still parse. The loader refuses any key this page does not list. A source plugin’s manifest:

id = "pulls"
kinds = ["source"]
protocol = 1
[source]
name = "Pulls"
slot = "pull"
[source.codec]
keys = ["{owner}/{repo}#{number}"]
urls = ["https://pulls.example/{owner}/{repo}/pull/{number}"]
[source.codec.fields]
number = '[1-9][0-9]*'
[[source.facts]]
name = "pull.state"
type = "string"
doc = "The pull request's state."
[[source.jobs]]
name = "ingest"
every = "5m"
KeyKindMeaning
idstringThe plugin’s id, a lowercase name of at most 32 letters, digits, - and _; a source plugin’s units carry it as their provider. Required.
kindslist of sourceThe kinds the plugin’s binary serves; each has a table of its name. Required.
protocolintegerThe plugin protocol version the binary speaks. Required.
sourcetableWhat a source plugin declares: its codec, its vocabulary, its jobs, commands and tools.
KeyKindMeaning
namestringHow a person reads the plugin’s service, such as “GitHub”. Required.
codectableHow the plugin’s unit keys and addresses are spelled. Required.
slotstringThe workflow fact slot of the plugin’s units, such as “pr”; every fact name starts with it. Required.
brief_subjectboolThe plugin’s units may have a brief, whose facts their workflows read.
roundsboolThe plugin’s units count automatic turns per unit, against turns.per_unit_per_day.
payloadstringThe template root of the plugin’s turn payload, such as “PR”, which only intents of the plugin read.
factsarray of tablesThe workflow facts the plugin reports.
effectsarray of tablesThe turn and draft effects the plugin applies through ApplyEffect.
eventsarray of tablesThe event kinds only the plugin’s units record.
rolesarray of tablesThe roles an intent of the plugin may take, each naming host mechanisms.
row_kindslist of stringsThe values of row.kind on the plugin’s rows.
deliveriesarray of tablesHow the plugin posts drafts.
draft_kindsarray of tablesThe kinds of the plugin’s drafts; the host derives a draft’s delivery from its kind.
default_deliverystringThe delivery of a draft whose kind names none; one of deliveries.
signalsarray of tablesThe link signals the plugin reports, read as task.link_signal..
predicatesarray of tablesThe predicates the plugin’s profile layer sets in predicates.toml, by name; the plugin asks the host whether one holds through Holds.
marksarray of tablesThe marks the plugin’s rounds write that a workflow may read with handled(); a name has no slash, space or control character.
kindslist of stringsThe task kind values the plugin’s units give their tasks.
situationsarray of tablesThe situations the plugin derives, in the order the cockpit ranks them.
stepslist of stringsThe core workflow steps that run on the plugin’s units, such as “turn.dismiss”.
language_factstringThe string fact of facts that tells the language a unit’s people write in, as a BCP 47 tag; the drafts of the unit are written in it. Empty: in the user’s.
members_factstringThe list fact of facts that holds the person keys of the members of a unit’s conversation, the people who can read a draft posted on it, the user included; a unit leaves it out while the plugin cannot tell. Empty: the plugin never tells.
jobsarray of tablesThe jobs the host runs on the plugin through Ingest, by name.
config_readslist of stringsThe configuration keys outside its own table the plugin reads, such as “sweep” or “items.heat”; Config returns them, checked against the configuration’s keys.
notifylist of rounds, gates, marks, tasks, turns, sessions, overrides, viewer, config, events, workspaces, agentsThe host topics whose changes the host notifies the plugin of.
uitableWhat clients show of the plugin; every label lives in its profile layer.
commandsarray of tablesThe commands the plugin binary serves in CLI mode, which run without the daemon.
toolsarray of tablesThe MCP tools the plugin serves through CallTool.
KeyKindMeaning
keyslist of stringsThe templates of a unit key, such as “{owner}/{repo}#{number}”; a key is valid when it matches one. Required.
urlslist of stringsThe templates of a unit’s web address; the first whose fields a key has is its address, and an address matching one names the key whose template has the same fields.
labelstringThe template of the unit as a person reads it; empty, or a field the key lacks, reads the key.
fieldstable of stringsThe pattern of a field, by name, as a Go regular expression.
fold_caseboolTwo keys that differ only in case name the same unit.
targetstringHow a command line names a unit, such as "".
targetsstringThe pattern a draft target this plugin posts to matches, as a Go regular expression; empty takes none.
KeyKindMeaning
namestringThe fact’s name, .. Required.
typeone of bool, int, string, list, duration, timestampThe fact’s type. Required.
docstringWhat the fact says, for the reference pages. Required.
slotslist of action, turn, nameWhere the fact is read besides the workflows.
dimboolThe fact is a profile dimension.
enumlist of stringsThe values the fact takes; empty takes any.
untrustedboolA third party’s text sets the fact, so no approval rule reads it.
time_varyingboolThe fact changes with time alone: the plugin reports it as a temporal value.
KeyKindMeaning
namestringThe effect’s name, .. Required.
applieslist of turn, draftWhat may carry it. Required.
docstringWhat the effect does. Required.
silentboolA draft effect that applies without the draft’s post, so a person may close the conversation without the message.
KeyKindMeaning
namestringThe event kind. Required.
docstringWhat happened. Required.
resolvesone of review, merged, closedThe link event the host’s resolver reads it as.
answers_asked_turnboolThe event answers the turn that asked for it, which my_review reconciles with.
verdictstable of stringsThe record verdict of each state an answering event’s data starts with (APPROVE, REQUEST_CHANGES or COMMENT); a state it lacks answers nothing.
KeyKindMeaning
namestringThe role’s name. Required.
docstringWhat the role’s turns do. Required.
round_kindstringThe sweep round its turns are, such as “review”.
reconcilestringThe host reconcile its turns run, such as “my_review”.
preparestringThe host prepare its turns run, such as “action:nudge.prepare”.
launchstringThe host launch its turns run, such as “probe”.
workspacestringThe workspace builtin its turns run in; empty is any.
contextstringWhat its turns are about.
policystringThe agent policy of its sessions.
drives_rowboolIts turns drive the row of the workspace they run in.
KeyKindMeaning
namestringThe delivery’s name, such as “comment”. Required.
postsboolA draft with this delivery reaches people, so it waits for approval.
KeyKindMeaning
namestringThe kind’s name, such as “nudge”. Required.
purposestringWhat a draft of the kind is for; empty is its name.
deliverystringHow it is posted, one of deliveries; empty is default_delivery.
KeyKindMeaning
namestringThe name. Required.
docstringWhat it means. Required.
KeyKindMeaning
namestringThe predicate’s name, its key in predicates.toml. Required.
docstringWhat the predicate decides. Required.
factslist of stringsThe facts of facts the plugin hands with each question, the only ones the predicate may read. Required.
KeyKindMeaning
namestringThe name. Required.
docstringWhat it means. Required.
KeyKindMeaning
namestringThe situation’s kind. Required.
docstringWhat the unit waits on. Required.
rankintegerIts order among the plugin’s situations, lowest first; 0 is its place among the declarations.
KeyKindMeaning
namestringThe job’s name, which Ingest receives. Required.
everydurationHow often the job runs, as a Go duration, unless every_from is set. Required.
every_fromstringA duration key of the configuration the interval comes from, such as “sweep.fast”, one of config_reads or under them; every is its default.
timeoutdurationA run’s limit, as a Go duration; empty is the host’s default.
retrydurationThe first wait after a failed run, as a Go duration, doubling up to every; empty backs off from every.
KeyKindMeaning
viewsarray of tablesThe plugin’s views.
facetsarray of tablesThe facets of the plugin’s rows, whose values a snapshot reports.
menubararray of tablesThe menu bar’s sections of the plugin.
keysarray of tablesThe plugin’s key bindings.
webstringA directory of the plugin the host serves under /plugins//, with no call to the plugin.
KeyKindMeaning
idstringThe view’s id, unique across plugins. Required.
rowsboolA list of rows filtered by a snapshot’s views; otherwise a custom view served by View.
orderintegerIts order among the views.
surfaceslist of web, tui, menubarWhere it shows.
KeyKindMeaning
idstringThe facet’s id. Required.
fieldstringWhat it reads: row., item. or .*.
groupboolRows may be grouped by it.
sortone of rank, text, timeHow its values sort.
ranklist of stringsIts values in order, with sort = rank.
bucketsarray of tablesThe age buckets of a time facet, youngest first; only with sort = time.
matchone of exact, suffix, prefix, teamHow a filter matches a value; empty is exact.
menuboolIt shows in the filter menu.
stripboolEach row’s strip is colored by its value, and its rank is the strip’s legend; at most one facet.
KeyKindMeaning
idstringThe bucket’s id. Required.
withindurationThe age its values are younger than, as a Go duration; negative for a value that far in the future. Required but on the last bucket, which then catches the rest.
KeyKindMeaning
idstringThe section’s id. Required.
viewstringThe view it shows. Required.
KeyKindMeaning
keystringThe key. Required.
actionstringThe action it runs. Required.
surfaceone of web, tui, menubarWhere it binds; empty is every surface.
KeyKindMeaning
namestringThe command’s name, after the plugin’s id on the command line. Required.
usagestringThe command’s arguments, as its help shows them.
KeyKindMeaning
namestringThe tool’s name; its description lives in the profile’s tools.toml. Required.
docstringWhat the tool does, for the reference pages. Required.
inputstringThe JSON schema of the tool’s arguments, an object. Required.
postsone of nowThe tool posts at once, recorded as a sent draft; empty posts nothing.
answersarray of tablesThe answers the tool returns, which tools.toml words.
KeyKindMeaning
namestringThe answer’s name. Required.
docstringWhen the tool answers it. Required.
fieldsarray of tablesThe fields its wording reads.
KeyKindMeaning
namestringThe field’s name, as the template reads it. Required.
numberboolThe field is a number; otherwise text.

This page is generated from pkg/plugin/manifest by make docs-ref.