@kontextmind/kxm 0.7.95 → 0.7.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.kxm/README.md +39 -9
- package/CHANGELOG.md +1 -1
- package/README.md +147 -257
- package/SECURITY.md +21 -12
- package/docs/README.md +133 -54
- package/docs/adr/ADR-0002-browser-automation-steel-doks.md +24 -18
- package/docs/adr/ADR-0003-sqlite-only-store.md +100 -0
- package/docs/adr/ADR-0004-edge-identity-authentik.md +99 -0
- package/docs/adr/README.md +33 -0
- package/docs/concepts/architecture.md +262 -0
- package/docs/concepts/data-and-storage.md +194 -0
- package/docs/concepts/trust-model.md +152 -0
- package/docs/contracts/README.md +22 -14
- package/docs/contracts/effects-and-recovery.md +3 -0
- package/docs/contracts/migration.md +2 -2
- package/docs/contracts/routing.md +6 -5
- package/docs/contributing/assignment-runner.md +388 -0
- package/docs/contributing/ci-and-release.md +231 -0
- package/docs/contributing/development.md +362 -0
- package/docs/contributing/harness-routing-internals.md +192 -0
- package/docs/{packages.md → contributing/packages.md} +13 -15
- package/docs/{skills → contributing}/repo-work-delivery.md +20 -21
- package/docs/contributing/test-matrix.md +208 -0
- package/docs/{tui-components.md → contributing/tui-components.md} +30 -22
- package/docs/contributing/writing-docs.md +340 -0
- package/docs/glossary.md +471 -0
- package/docs/guides/agent-skills.md +137 -0
- package/docs/guides/browser-automation.md +160 -0
- package/docs/guides/context-and-memory.md +352 -0
- package/docs/guides/continuous-improvement.md +228 -0
- package/docs/guides/governed-skills.md +173 -0
- package/docs/guides/nous-providers.md +186 -0
- package/docs/guides/peer-messaging.md +304 -0
- package/docs/guides/pi-workers.md +219 -0
- package/docs/guides/provenance-gates.md +313 -0
- package/docs/guides/webhook-workflows.md +364 -0
- package/docs/kb/how-credentials-retrieved-safely.md +38 -12
- package/docs/kb/how-to-capture-and-annotate-section.md +15 -13
- package/docs/kb/how-to-connect-playwright-to-steel.md +16 -11
- package/docs/kb/how-to-recover-expired-session-or-orphan.md +26 -16
- package/docs/kb/how-to-resume-after-mfa.md +19 -11
- package/docs/kb/how-to-take-over-session.md +17 -13
- package/docs/kb/why-authentication-disappeared.md +22 -14
- package/docs/kb/why-automation-opened-different-browser.md +23 -14
- package/docs/kb/why-session-viewer-cannot-control.md +13 -12
- package/docs/operations/backup-and-restore.md +248 -0
- package/docs/operations/deploy.md +307 -0
- package/docs/operations/monitoring.md +209 -0
- package/docs/operations/runtime-sync.md +192 -0
- package/docs/operations/troubleshooting.md +265 -0
- package/docs/operations/upgrade.md +124 -0
- package/docs/prompts/browser-annotate-feedback.md +7 -7
- package/docs/prompts/browser-diagnose-recover.md +11 -10
- package/docs/prompts/browser-explore.md +7 -7
- package/docs/prompts/browser-repro-fix.md +7 -7
- package/docs/prompts/browser-start.md +12 -11
- package/docs/prompts/browser-takeover.md +8 -8
- package/docs/{cli-reference.md → reference/cli-reference.md} +83 -41
- package/docs/{config-reference.md → reference/config-reference.md} +159 -148
- package/docs/reference/configuration.md +299 -0
- package/docs/reference/harness-routing.md +508 -0
- package/docs/reference/http-api.md +203 -0
- package/docs/reference/tools.md +370 -0
- package/docs/{workflow-guide.md → reference/workflow-catalog.md} +92 -153
- package/docs/reference/workflow-definitions.md +286 -0
- package/docs/start/first-workflow.md +287 -0
- package/docs/start/install.md +146 -0
- package/docs/start/quickstart-claude-code.md +405 -0
- package/docs/start/quickstart-pi.md +213 -0
- package/docs/templates/README.md +78 -73
- package/docs/templates/adr.md +13 -13
- package/docs/templates/architecture.md +55 -71
- package/docs/templates/bug-fix.md +13 -16
- package/docs/templates/feature.md +14 -19
- package/docs/templates/handoff.md +44 -46
- package/docs/templates/postmortem.md +30 -43
- package/docs/templates/research.md +15 -20
- package/docs/templates/review.md +49 -50
- package/docs/templates/runbook.md +38 -30
- package/docs/templates/test-plan.md +16 -23
- package/docs/templates/test-report.md +14 -17
- package/examples/README.md +9 -5
- package/examples/provenance-workflow.json +1 -1
- package/examples/webhook-workflows/jira-development.json +59 -0
- package/examples/webhook-workflows/jira-issue-updated.json +12 -0
- package/package.json +1 -1
- package/packages/core/tui/README.md +1 -1
- package/plugins/kxm/.claude-plugin/plugin.json +1 -1
- package/plugins/kxm/README.md +31 -32
- package/plugins/kxm/dist/cli.js +5 -5
- package/plugins/kxm/dist/mcp-server.js +1 -1
- package/plugins/kxm/dist/runtime.js +1 -1
- package/plugins/kxm/package.json +1 -1
- package/plugins/kxm/skills/kxm/references/protocol.md +3 -1
- package/plugins/kxm/skills/kxm-browser-auth/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-browser-diagnostics/SKILL.md +5 -5
- package/plugins/kxm/skills/kxm-browser-explore/SKILL.md +2 -2
- package/plugins/kxm/skills/kxm-browser-session/SKILL.md +10 -13
- package/plugins/kxm/skills/kxm-browser-takeover/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-browser-verify/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-context-memory/SKILL.md +13 -4
- package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +3 -1
- package/plugins/kxm/skills/kxm-mind-setup/SKILL.md +2 -1
- package/plugins/kxm/skills/kxm-project-setup/SKILL.md +31 -54
- package/plugins/kxm/skills/kxm-projects/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-protocol/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +15 -7
- package/plugins/kxm/skills/kxm-runs/SKILL.md +11 -5
- package/plugins/kxm/skills/kxm-session/SKILL.md +1 -1
- package/plugins/kxm/skills/kxm-tasks/SKILL.md +9 -7
- package/plugins/kxm/skills/kxm-workflow/SKILL.md +10 -2
- package/plugins/kxm/src/cli/system.ts +1 -1
- package/plugins/kxm/src/cli.ts +3 -3
- package/plugins/kxm/src/init-guide-setup.ts +1 -1
- package/plugins/kxm/src/mcp-server.ts +1 -1
- package/plugins/kxm/src/modes.ts +1 -1
- package/schemas/README.md +1 -1
- package/docs/agent-communication-envelopes-and-gates.md +0 -553
- package/docs/agent-skills.md +0 -198
- package/docs/architecture.md +0 -245
- package/docs/assignment-runner.md +0 -264
- package/docs/browser-automation.md +0 -139
- package/docs/configuration.md +0 -437
- package/docs/continuous-improvement.md +0 -226
- package/docs/getting-started.md +0 -277
- package/docs/harness-routing.md +0 -616
- package/docs/kb/qa-authentik-authentication.md +0 -97
- package/docs/kb/qa-extension-install-and-hub-bootstrap.md +0 -85
- package/docs/kb/qa-hub-on-a-public-host.md +0 -48
- package/docs/kb/qa-sqlite-vs-duckdb.md +0 -35
- package/docs/kb/qa-what-the-hub-stores.md +0 -64
- package/docs/kxm-handbook.md +0 -1181
- package/docs/operations.md +0 -510
- package/docs/operator-pi-packages.md +0 -67
- package/docs/provenance-gates.md +0 -295
- package/docs/skills.md +0 -47
- package/docs/test-matrix.md +0 -132
- package/docs/troubleshooting.md +0 -322
- package/docs/webhook-workflows.md +0 -240
package/docs/glossary.md
ADDED
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
# Glossary
|
|
2
|
+
|
|
3
|
+
This page defines the words KXM uses in its docs, CLI help and tools, and separates the ones that are easy to confuse, such as a hub workflow run and a Runtime run. [Canonical terminology](contracts/terminology.md) remains the normative source for the Runtime, workflow and evidence terms used in specifications; this glossary adds the hub, credential and operator terms and says how each applies today.
|
|
4
|
+
|
|
5
|
+
Terms are grouped by topic and sorted alphabetically within each group. Every term has its own anchor, so other pages can link to it directly, for example `glossary.md#hub`.
|
|
6
|
+
|
|
7
|
+
- **Product and components:** [Claude Code plugin](#claude-code-plugin) · [Dashboard](#dashboard) · [Harness](#harness) · [Home Runtime](#home-runtime) · [Hub](#hub) · [Hub binding](#hub-binding) · [KontextMind](#kontextmind) · [KXM](#kxm) · [Loopback](#loopback) · [Native harness](#native-harness) · [Pi extension](#pi-extension) · [Runtime](#runtime) · [Runtime supervisor](#runtime-supervisor) · [Studio](#studio) · [User state root](#user-state-root) · [Workspace](#workspace)
|
|
8
|
+
- **Projects, identities and credentials:** [Admin token](#admin-token) · [Agent](#agent) · [Agent key](#agent-key) · [Coordinator](#coordinator) · [Peer](#peer) · [Project](#project) · [Project ID](#project-id) · [Project token](#project-token) · [Session token](#session-token) · [Signal secret](#signal-secret) · [Tenant](#tenant) · [Worker](#worker) · [Workflow start secret](#workflow-start-secret)
|
|
9
|
+
- **Messages:** [Channel mode](#channel-mode) · [Correlation ID](#correlation-id) · [Delivery mode](#delivery-mode) · [Fanout](#fanout) · [Idempotency key](#idempotency-key) · [Message](#message) · [Pull mode](#pull-mode) · [Reply](#reply) · [Request](#request)
|
|
10
|
+
- **Hub workflows:** [Audit escalation](#audit-escalation) · [Checkpoint](#checkpoint) · [Delivery ID](#delivery-id) · [Journal](#journal) · [Retrospective](#retrospective) · [Signal](#signal) · [Stage](#stage) · [Wait](#wait) · [Webhook workflow definition](#webhook-workflow-definition) · [Workflow run](#workflow-run)
|
|
11
|
+
- **Runtime runs:** [Assignment](#assignment) · [Attempt](#attempt) · [`blocked_uncertain`](#blocked_uncertain) · [Configuration revision](#configuration-revision) · [Drive](#drive) · [Drive receipt](#drive-receipt) · [Handoff](#handoff) · [Outbox](#outbox) · [Run](#run) · [Step](#step) · [Sync event](#sync-event) · [Workflow](#workflow)
|
|
12
|
+
- **Evidence and provenance:** [Degradation](#degradation) · [Effect](#effect) · [Evidence](#evidence) · [Evidence policy](#evidence-policy) · [Evidence reference](#evidence-reference) · [Fencing token](#fencing-token) · [Gate](#gate) · [Lease](#lease) · [Peer-reply evidence](#peer-reply-evidence) · [Producer](#producer) · [Quorum](#quorum) · [Receipt](#receipt) · [Required evidence](#required-evidence)
|
|
13
|
+
- **Context, memory and learning:** [Authority](#authority) · [Candidate](#candidate) · [Coded-repeat candidate](#coded-repeat-candidate) · [Context item](#context-item) · [Context packet](#context-packet) · [Dispatch context](#dispatch-context) · [Episode](#episode) · [Governed skill](#governed-skill) · [Improvement report](#improvement-report) · [Memory](#memory) · [Memory revision](#memory-revision) · [Promotion](#promotion) · [Promotion readiness](#promotion-readiness) · [Recall](#recall) · [Skill](#skill) · [Temporal state](#temporal-state) · [Wiki](#wiki)
|
|
14
|
+
- **Configuration and routing:** [Admission](#admission) · [Agent definition](#agent-definition) · [Cost basis](#cost-basis) · [Expansion](#expansion) · [Role](#role) · [Roster](#roster) · [Route](#route) · [Session](#session) · [Session isolation](#session-isolation) · [Trust diff](#trust-diff)
|
|
15
|
+
- [Words to avoid](#words-to-avoid)
|
|
16
|
+
|
|
17
|
+
## Product and components
|
|
18
|
+
|
|
19
|
+
### Claude Code plugin
|
|
20
|
+
|
|
21
|
+
The `kxm@kxm` plugin for Claude Code. It adds an MCP server with the `kxm_*` tools, optional [channel mode](#channel-mode), a read-only SessionStart hook that briefs Claude in a KXM project, and the [suite skills](#skill). See the [plugin README](../plugins/kxm/README.md).
|
|
22
|
+
|
|
23
|
+
### Dashboard
|
|
24
|
+
|
|
25
|
+
`kxm dash`: live terminal screens for agents, tasks, workflows, plans, inbox, processes and spend. Its operations stream carries metadata only, never message bodies. The spend screen is always empty today; `kxm routing report` shows route costs.
|
|
26
|
+
|
|
27
|
+
### Harness
|
|
28
|
+
|
|
29
|
+
The coding-agent program an [agent](#agent) runs in. KXM knows `pi` (the default), `claude`, `codex`, `grok`, `agy`, `kimi` and `deepseek`, and refuses unknown ones. A harness runs only the models it hosts. `kxm harness list` shows which are installed and logged in. Compare [worker](#worker).
|
|
30
|
+
|
|
31
|
+
### Home Runtime
|
|
32
|
+
|
|
33
|
+
The [Runtime](#runtime) that accepted a [run](#run), recorded as its `homeRuntimeId` (an `rtm_` ID). It owns that run for the run's whole life.
|
|
34
|
+
|
|
35
|
+
### Hub
|
|
36
|
+
|
|
37
|
+
The service that authenticates [agents](#agent), stores [messages](#message) and [workflow runs](#workflow-run) in SQLite, and pushes events over server-sent events (SSE). `kxm hub start` runs it on `127.0.0.1:7331` by default, with its database at `.kxm/state/kxm.db` in the directory it starts in. It routes work and tracks workflow runs, but never runs a model, executes a Runtime [run](#run), or merges agent contexts. Compare [Runtime](#runtime).
|
|
38
|
+
|
|
39
|
+
### Hub binding
|
|
40
|
+
|
|
41
|
+
The record that `kxm hub bind <url>` writes to `hub-binding.json` in the [user state root](#user-state-root), naming the hub this machine uses. `kxm hub view` checks it, and the Runtime syncs to it. Binding a remote hub requires a credential.
|
|
42
|
+
|
|
43
|
+
### KontextMind
|
|
44
|
+
|
|
45
|
+
The organization that builds KXM, and the name of a separate knowledge plane that the [mind-plane skills](#skill) target. Do not use it as a name for KXM itself.
|
|
46
|
+
|
|
47
|
+
### KXM
|
|
48
|
+
|
|
49
|
+
The product: the `kxm` CLI, the [hub](#hub), the [Runtime](#runtime), the [Pi extension](#pi-extension), the [Claude Code plugin](#claude-code-plugin) and the Agent Skills, published together as `@kontextmind/kxm`. Write it in capitals.
|
|
50
|
+
|
|
51
|
+
### Loopback
|
|
52
|
+
|
|
53
|
+
The `127.0.0.1` interface. The hub and the Runtime supervisor listen there by default, and the hub refuses to listen on any other address without a token. Serving a hub to other machines needs TLS and an authenticating proxy; see [Deploy KXM](operations/deploy.md).
|
|
54
|
+
|
|
55
|
+
### Native harness
|
|
56
|
+
|
|
57
|
+
A model vendor's own [harness](#harness), such as `claude` for Anthropic models or `codex` for OpenAI models. The rule is to run a vendor's model in its native harness, not through Pi. The Pi native-vendor brake enforces it at dispatch and when a long-lived [worker](#worker) starts, and [admission](#admission) is a second layer. A few cases are still operator policy; see [where the code is looser than the rules](reference/harness-routing.md#where-the-code-is-looser-than-the-rules).
|
|
58
|
+
|
|
59
|
+
### Pi extension
|
|
60
|
+
|
|
61
|
+
The KXM extension that Pi loads from the `@kontextmind/kxm` package. It registers the same `kxm_*` tools as the Claude Code plugin plus the `/kxm` command, connects to the hub, and starts a local hub in the background when none is running (`hub.autoStart: background`).
|
|
62
|
+
|
|
63
|
+
### Runtime
|
|
64
|
+
|
|
65
|
+
The per-user, per-machine KXM service that owns [runs](#run). It executes workflow steps, keeps an append-only event store per project, and sends [sync events](#sync-event) to the hub through an [outbox](#outbox). It keeps working while the hub is down, and its state lives in the [user state root](#user-state-root), not in the repository. Compare [hub](#hub).
|
|
66
|
+
|
|
67
|
+
### Runtime supervisor
|
|
68
|
+
|
|
69
|
+
The background process that hosts the [Runtime](#runtime) on a `127.0.0.1` port behind a bearer token. `kxm run` starts it when needed, and `kxm runtime start`, `status` and `stop` manage it.
|
|
70
|
+
|
|
71
|
+
### Studio
|
|
72
|
+
|
|
73
|
+
`kxm studio`: Web Studio utilities that lay out a workflow as a graph, stepper or swimlanes (`kxm studio layout`) and serve that view on your machine (`kxm studio serve`, port 4242).
|
|
74
|
+
|
|
75
|
+
### User state root
|
|
76
|
+
|
|
77
|
+
The per-user directory for machine state: `hub-env.json` (the hub's saved credentials), `hub-binding.json`, and the Runtime's `runtime/` stores. It is `KXM_STATE_HOME` when set, otherwise `~/Library/Application Support/KXM` on macOS, `${XDG_STATE_HOME:-~/.local/state}/kxm` on Linux, or `%LOCALAPPDATA%\KXM` on Windows.
|
|
78
|
+
|
|
79
|
+
### Workspace
|
|
80
|
+
|
|
81
|
+
The `.kxm/` directory at the project root. It holds the tracked project definition (`project.yaml`, `agents/`, `workflows/`, `gates.yaml` and more) plus the local `state/`, `logs/` and `backups/` directories that you keep out of Git. `--workspace` points a command at another one. It is not the [project](#project), and not a Git worktree.
|
|
82
|
+
|
|
83
|
+
## Projects, identities and credentials
|
|
84
|
+
|
|
85
|
+
### Admin token
|
|
86
|
+
|
|
87
|
+
The hub operator's credential (`KXM_AUTH_TOKEN` when you run `kxm hub start`). The hub generates one on first start and saves it in `hub-env.json` in the [user state root](#user-state-root). It opens the admin routes, and the hub also accepts it for any project without its own token, so never give it to an agent.
|
|
88
|
+
|
|
89
|
+
### Agent
|
|
90
|
+
|
|
91
|
+
A registered identity in one hub [project](#project), with a purpose and a name that is unique among the project's live agents. Pi sessions, Claude Code sessions and [workers](#worker) all register as agents. When a Claude Code session's name is taken, it registers as `<name>-<pid>`. Compare [worker](#worker).
|
|
92
|
+
|
|
93
|
+
### Agent key
|
|
94
|
+
|
|
95
|
+
A per-agent secret the hub issues when an agent registers, and replaces each time it registers again. Clients send it with the agent ID (`x-kxm-agent-id` and `x-kxm-agent-key`) on every operation that acts as that agent.
|
|
96
|
+
|
|
97
|
+
### Coordinator
|
|
98
|
+
|
|
99
|
+
The agent a [workflow run](#workflow-run) is assigned to. It follows the stages, gathers evidence and records [checkpoints](#checkpoint), and it can never count as a [producer](#producer) for its own run. A `kxm.workflow.v1` [workflow](#workflow) names its coordinator agent in `coordinator:`.
|
|
100
|
+
|
|
101
|
+
### Peer
|
|
102
|
+
|
|
103
|
+
Another [agent](#agent) in the same [project](#project). `kxm_list` and `kxm peer list` show peers with their presence: online, stale or offline.
|
|
104
|
+
|
|
105
|
+
### Project
|
|
106
|
+
|
|
107
|
+
The authentication and discovery namespace on the hub. An agent names it with `KXM_PROJECT` (otherwise the `package.json` name, then the directory name), and its key in the hub's `KXM_PROJECT_TOKENS` holds its token. Agents see only peers in the same project. Compare [project ID](#project-id).
|
|
108
|
+
|
|
109
|
+
### Project ID
|
|
110
|
+
|
|
111
|
+
The stable `prj_` identifier in `.kxm/project.yaml`. The [Runtime](#runtime) and hub sync use it. It is not the hub [project](#project) name, even though both describe the same body of work.
|
|
112
|
+
|
|
113
|
+
### Project token
|
|
114
|
+
|
|
115
|
+
The credential that the agents of one [project](#project) use. The operator sets it in the hub's `KXM_PROJECT_TOKENS` JSON map, and agents receive it as `KXM_AUTH_TOKEN` or the plugin's `auth_token`. Setting `KXM_PROJECT_TOKENS` replaces the hub's saved map, so list every project each time.
|
|
116
|
+
|
|
117
|
+
### Session token
|
|
118
|
+
|
|
119
|
+
A local token that carries a tool policy and expires after 24 hours. It lives in your KXM user configuration directory or in `KXM_SESSION_TOKEN`. When one is present, the MCP and Pi tools refuse calls it does not allow, and refuse every call once it is malformed or expired. It is an unsigned local policy, not a hub credential. `kxm session brief` creates one when none is valid; `kxm session token --clear` removes the file.
|
|
120
|
+
|
|
121
|
+
### Signal secret
|
|
122
|
+
|
|
123
|
+
The HMAC-SHA256 secret that signs a [signal](#signal) for a running workflow. A definition sets it with `signalSecret` or `signalSecretEnv`, and falls back to the [workflow start secret](#workflow-start-secret) when it sets neither; use a separate one. `kxm gate signal` and `kxm gate github watch` read it from `KXM_WORKFLOW_SIGNAL_SECRET`.
|
|
124
|
+
|
|
125
|
+
### Tenant
|
|
126
|
+
|
|
127
|
+
One hosted KXM deployment for one customer: a hub and a Runtime on one host behind an authenticating proxy. `kxm tenant status` reads both as one labeled view. The hub itself has no tenant concept; separate hosts provide the separation. See [Deploy KXM](operations/deploy.md).
|
|
128
|
+
|
|
129
|
+
### Worker
|
|
130
|
+
|
|
131
|
+
A long-lived Pi process that `kxm agent worker` starts and restarts, with model fallbacks, a tool allowlist and optional [session isolation](#session-isolation). A worker is a process; the [agent](#agent) is the identity it registers. See [Run supervised Pi workers](guides/pi-workers.md).
|
|
132
|
+
|
|
133
|
+
### Workflow start secret
|
|
134
|
+
|
|
135
|
+
The HMAC-SHA256 secret that signs a webhook delivery that starts a [workflow run](#workflow-run). A [webhook workflow definition](#webhook-workflow-definition) names it with `secret` or `secretEnv`, and `kxm workflow start` reads it from `KXM_WORKFLOW_SECRET`.
|
|
136
|
+
|
|
137
|
+
## Messages
|
|
138
|
+
|
|
139
|
+
### Channel mode
|
|
140
|
+
|
|
141
|
+
Pushed delivery in Claude Code: the plugin injects each peer request into the running session as a channel event, and Claude answers with `kxm_reply`. It needs a Claude Code launch with the plugin's channel enabled. Compare [pull mode](#pull-mode).
|
|
142
|
+
|
|
143
|
+
### Correlation ID
|
|
144
|
+
|
|
145
|
+
A sender-chosen label that groups related messages. When a message carries `workflowContext`, the hub binds the correlation ID to the run. Like an [idempotency key](#idempotency-key), it is not evidence.
|
|
146
|
+
|
|
147
|
+
### Delivery mode
|
|
148
|
+
|
|
149
|
+
A priority hint for how the recipient takes up a request: `steer` for an active blocker, `followUp` (the default), or `nextTurn`. The Pi extension orders its queue of inbound requests by mode.
|
|
150
|
+
|
|
151
|
+
### Fanout
|
|
152
|
+
|
|
153
|
+
One request sent independently to one to three peers, with `kxm_fanout` or `kxm peer fanout`. When the local wait ends first, it returns pending entries with durable message IDs to check later; they are not failures.
|
|
154
|
+
|
|
155
|
+
### Idempotency key
|
|
156
|
+
|
|
157
|
+
A sender-chosen key that makes a retried send return the original message instead of creating a duplicate; reusing it for a different request is refused. It is a transport feature and proves nothing about who answered.
|
|
158
|
+
|
|
159
|
+
### Message
|
|
160
|
+
|
|
161
|
+
<a id="message-request-reply"></a>The durable hub record of one [request](#request) and its [reply](#reply). Its state moves `queued → delivered → replied`, or ends `cancelled` (by the sender) or `expired` (past its time to live). A queued message is pushed again whenever its recipient reconnects, until the recipient acknowledges it; an acknowledged (delivered) message is not replayed. See [Message peer agents](guides/peer-messaging.md).
|
|
162
|
+
|
|
163
|
+
### Pull mode
|
|
164
|
+
|
|
165
|
+
The default in Claude Code: Claude lists open requests with `kxm_inbox` and answers each with `kxm_reply`. Nothing arrives on its own. Compare [channel mode](#channel-mode).
|
|
166
|
+
|
|
167
|
+
### Reply
|
|
168
|
+
|
|
169
|
+
The recipient's final answer to a request, sent with `kxm_reply` or `kxm peer reply`, or settled automatically by the Pi extension. A reply settles the [message](#message).
|
|
170
|
+
|
|
171
|
+
### Request
|
|
172
|
+
|
|
173
|
+
What a sender creates with `kxm_send`, `kxm_fanout` or `kxm peer send`: one focused ask for one peer, stored as a [message](#message).
|
|
174
|
+
|
|
175
|
+
## Hub workflows
|
|
176
|
+
|
|
177
|
+
### Audit escalation
|
|
178
|
+
|
|
179
|
+
What a stage does when it has failed as many times as its `autoResumeLimit` allows: instead of retrying, the run waits for an operator ruling. A signal or `kxm role resume` gives the ruling.
|
|
180
|
+
|
|
181
|
+
### Checkpoint
|
|
182
|
+
|
|
183
|
+
The coordinator's recorded result for the active [stage](#stage): `passed`, `warning` or `failed`, with the stage's [required evidence](#required-evidence). A warning or failure uses up an attempt; the stage passes only when a checkpoint passes.
|
|
184
|
+
|
|
185
|
+
### Delivery ID
|
|
186
|
+
|
|
187
|
+
The identifier a webhook sender puts in `X-GitHub-Delivery`, `X-Atlassian-Webhook-Identifier` or `x-kxm-delivery-id`. The hub requires one and deduplicates on it: a repeated start delivery returns the existing run.
|
|
188
|
+
|
|
189
|
+
### Journal
|
|
190
|
+
|
|
191
|
+
A [workflow run](#workflow-run)'s structured record of what agents learned, in ten categories: `plan`, `decision`, `contradiction`, `error`, `lesson`, `observation`, `hypothesis`, `experiment`, `state-change` and `skill-candidate`. Lessons and skill candidates need evidence. An entry can name its `stageId`, and the hub derives the attempt. The hub also journals errors on its own. See [Continuous improvement](guides/continuous-improvement.md).
|
|
192
|
+
|
|
193
|
+
### Retrospective
|
|
194
|
+
|
|
195
|
+
A proposed-only summary of a finished workflow run, in Markdown and JSON. The hub exports one when a run ends, and `kxm workflow export` exports one on demand. It proposes improvements; it never applies them.
|
|
196
|
+
|
|
197
|
+
### Signal
|
|
198
|
+
|
|
199
|
+
A signed external result, such as CI passing, posted to the hub for a waiting [stage](#stage). It checkpoints the stage and creates a fresh message that resumes the [coordinator](#coordinator). `kxm gate signal` and `kxm gate github watch` send signals.
|
|
200
|
+
|
|
201
|
+
### Stage
|
|
202
|
+
|
|
203
|
+
One ordered unit of a [webhook workflow definition](#webhook-workflow-definition), with `requiredEvidence`, optional [evidence policies](#evidence-policy) and `maxAttempts`. A stage passes only through a [checkpoint](#checkpoint). Compare [step](#step).
|
|
204
|
+
|
|
205
|
+
### Wait
|
|
206
|
+
|
|
207
|
+
A durable pause on the active stage, entered with `kxm_workflow_wait`, that lasts until a signed [signal](#signal) arrives or the deadline passes (24 hours by default, 30 days at most). The coordinator can end its turn while it waits, and an expired wait fails the run.
|
|
208
|
+
|
|
209
|
+
### Webhook workflow definition
|
|
210
|
+
|
|
211
|
+
A JSON definition with ordered [stages](#stage). The hub loads definitions from the JSON array in `KXM_WEBHOOK_WORKFLOWS_FILE`, and a signed webhook or `kxm workflow start` starts a run of one. Compare [workflow](#workflow), the `kxm.workflow.v1` YAML the Runtime runs. See [Workflow definition reference](reference/workflow-definitions.md).
|
|
212
|
+
|
|
213
|
+
### Workflow run
|
|
214
|
+
|
|
215
|
+
A durable hub run of a [webhook workflow definition](#webhook-workflow-definition), assigned to a [coordinator](#coordinator). Inspect it with `kxm workflow list` and `kxm workflow get`, or the `kxm_workflow_*` tools. Compare [run](#run): Runtime runs use the same `run_` ID format, so check which command created an ID.
|
|
216
|
+
|
|
217
|
+
## Runtime runs
|
|
218
|
+
|
|
219
|
+
### Assignment
|
|
220
|
+
|
|
221
|
+
One unit of work inside the active [step](#step), such as one agent's part in a panel. Its ID stays the same across recovery.
|
|
222
|
+
|
|
223
|
+
### Attempt
|
|
224
|
+
|
|
225
|
+
One try at something that can be retried: one entry into a [stage](#stage) or [step](#step), bounded by `maxAttempts`, or one physical execution of an [assignment](#assignment). Evidence from an earlier attempt does not satisfy a later one unless the workflow allows reuse.
|
|
226
|
+
|
|
227
|
+
### `blocked_uncertain`
|
|
228
|
+
|
|
229
|
+
A Runtime state for a run whose [effect](#effect) KXM cannot prove happened or did not happen. KXM will not replay it automatically; an operator decides with `kxm gate signal --recovery-action` and one of `retry`, `unblock`, `fail` or `cancel`.
|
|
230
|
+
|
|
231
|
+
### Configuration revision
|
|
232
|
+
|
|
233
|
+
The content hash of the validated `.kxm/` bundle a [run](#run) uses, printed as `config sha256:…` when `kxm run` creates the run. See [memory revision](#memory-revision) for what happens when it changes.
|
|
234
|
+
|
|
235
|
+
### Drive
|
|
236
|
+
|
|
237
|
+
Advancing a [run](#run): `kxm runs drive <runId>` asks the Runtime to execute steps until the run settles or hands off. `--simulated` uses a model-free producer; without it, the Runtime calls live harnesses on [admitted](#admission) routes.
|
|
238
|
+
|
|
239
|
+
### Drive receipt
|
|
240
|
+
|
|
241
|
+
The record that closes each [drive](#drive) (`kxm.drive-receipt.v1`): how the run settled, or why it handed off, with a hash of the event sequence it covered. `kxm runs status` verifies it and reports `receipt verified`. Not the same as an effect [receipt](#receipt).
|
|
242
|
+
|
|
243
|
+
### Handoff
|
|
244
|
+
|
|
245
|
+
A drive that stops without settling the run, because the run needs something this Runtime cannot do yet, such as an unsupported step kind or limit. The run stays open. A handoff found during the drive is recorded in the [drive receipt](#drive-receipt); one found when the drive opens, such as an unsupported limit, is refused with HTTP 409 `run_handoff_required` and writes no receipt.
|
|
246
|
+
|
|
247
|
+
### Outbox
|
|
248
|
+
|
|
249
|
+
The Runtime table that receives a sync-safe copy of each event in the same transaction as the event itself. The supervisor posts outbox rows to the hub and parks any row the hub durably refuses until `kxm runtime sync-retry`. See [Runtime sync](operations/runtime-sync.md).
|
|
250
|
+
|
|
251
|
+
### Run
|
|
252
|
+
|
|
253
|
+
One execution of a [workflow](#workflow), owned by one [home Runtime](#home-runtime) and pinned to the revisions it was accepted with. `kxm run` creates it, and `kxm runs` inspects, drives and cancels it. Compare [workflow run](#workflow-run).
|
|
254
|
+
|
|
255
|
+
### Step
|
|
256
|
+
|
|
257
|
+
One top-level state of a [workflow](#workflow): an `agent`, `moa` (a panel of agents), `gate`, `approval` or `wait` step, with `on:` transitions to the next step or to a terminal status. Only one step is active at a time. Today the Runtime dispatches `approval` and `wait` steps to an agent like any other step; it does not wait for a person or a signal. Compare [stage](#stage).
|
|
258
|
+
|
|
259
|
+
### Sync event
|
|
260
|
+
|
|
261
|
+
A bounded, redacted summary of a Runtime event that the Runtime sends the hub (`kxm.sync-event.v1`). It carries allowlisted metadata, not local payloads, and the hub accepts each project, run and sequence once.
|
|
262
|
+
|
|
263
|
+
### Workflow
|
|
264
|
+
|
|
265
|
+
A `kxm.workflow.v1` YAML file in `.kxm/workflows/`, whose file name is its ID. It declares a [coordinator](#coordinator), limits, and ordered [steps](#step) with transitions between them, and `kxm run` runs it in the [Runtime](#runtime). Compare [webhook workflow definition](#webhook-workflow-definition).
|
|
266
|
+
|
|
267
|
+
## Evidence and provenance
|
|
268
|
+
|
|
269
|
+
### Degradation
|
|
270
|
+
|
|
271
|
+
An admin-only, recorded decision (`kxm gate degrade`) to accept fewer [producers](#producer) than a policy's minimum, down to the floor the policy declares, for one stage attempt.
|
|
272
|
+
|
|
273
|
+
### Effect
|
|
274
|
+
|
|
275
|
+
A read or a change that a tool, gate or adapter causes outside the event log. The Runtime classifies every effect for recovery. Today, Runtime effects come from gate steps.
|
|
276
|
+
|
|
277
|
+
### Evidence
|
|
278
|
+
|
|
279
|
+
What a checkpoint supplies to satisfy [required evidence](#required-evidence). In a hub workflow, evidence is keyed strings whose keys must match exactly after normalization; extra keys never stand in for a missing one. Caller-written text proves nothing on its own; see [evidence reference](#evidence-reference).
|
|
280
|
+
|
|
281
|
+
### Evidence policy
|
|
282
|
+
|
|
283
|
+
A stage rule, under `evidencePolicies`, that one requirement is met only by [peer-reply evidence](#peer-reply-evidence): at least `minProducers` distinct replies from `eligibleAgents`, with an optional [degradation](#degradation) floor.
|
|
284
|
+
|
|
285
|
+
### Evidence reference
|
|
286
|
+
|
|
287
|
+
A durable identifier cited as proof, such as a message ID in a checkpoint's `evidenceRefs`, which the hub then verifies. Compare [evidence](#evidence), which the caller writes.
|
|
288
|
+
|
|
289
|
+
### Fencing token
|
|
290
|
+
|
|
291
|
+
The number a [lease](#lease) carries. It rises only when another holder takes the lease over, and the hub refuses a commit that presents a superseded token.
|
|
292
|
+
|
|
293
|
+
### Gate
|
|
294
|
+
|
|
295
|
+
Always qualify this word:
|
|
296
|
+
|
|
297
|
+
- **gate command**: a `kxm gate …` command, such as `kxm gate validate` or `kxm gate github watch`;
|
|
298
|
+
- **evidence gate**: a stage's required evidence and evidence policies, checked at each checkpoint;
|
|
299
|
+
- **gate step**: a Runtime `kind: gate` step that runs a command from `.kxm/gates.yaml` and records hashed results;
|
|
300
|
+
- **witness gate**: the `npm run verify` check that the developer [assignment runner](contributing/assignment-runner.md) runs.
|
|
301
|
+
|
|
302
|
+
### Lease
|
|
303
|
+
|
|
304
|
+
A time-bounded grant from the hub on a shared resource, carrying a [fencing token](#fencing-token), for work that more than one Runtime could change. A lease lasts from 5 seconds to 10 minutes.
|
|
305
|
+
|
|
306
|
+
### Peer-reply evidence
|
|
307
|
+
|
|
308
|
+
A reply to a request that the coordinator sent with exact `workflowContext`: the run, stage, requirement and attempt. The hub stamps that context when the request is sent and checks it again at the checkpoint, so only replies the hub routed can count.
|
|
309
|
+
|
|
310
|
+
### Producer
|
|
311
|
+
|
|
312
|
+
This word has two meanings. In provenance, a producer is the peer agent whose hub-recorded reply counts toward a requirement; the [coordinator](#coordinator) never counts. In the [Runtime](#runtime), a producer is the component that answers an attempt: the model-free simulated producer or a live one-shot harness. Runtime producers must return a structured outcome, so prose never passes a step.
|
|
313
|
+
|
|
314
|
+
### Quorum
|
|
315
|
+
|
|
316
|
+
The number of distinct eligible [producers](#producer) that an [evidence policy](#evidence-policy) requires. A quorum proves which identities answered through the hub under one project credential. It does not prove that the answers are correct, independent or approved.
|
|
317
|
+
|
|
318
|
+
### Receipt
|
|
319
|
+
|
|
320
|
+
A durable external identifier that proves an [effect](#effect)'s outcome, such as a Git ref, a pull request ID or a deployment ID. Compare [drive receipt](#drive-receipt).
|
|
321
|
+
|
|
322
|
+
### Required evidence
|
|
323
|
+
|
|
324
|
+
The evidence a [stage](#stage) (hub) or [step](#step) (Runtime) declares under `requiredEvidence`. A checkpoint cannot pass until every entry is satisfied.
|
|
325
|
+
|
|
326
|
+
## Context, memory and learning
|
|
327
|
+
|
|
328
|
+
### Authority
|
|
329
|
+
|
|
330
|
+
How much weight a [context item](#context-item) carries: `policy`, `instruction`, `evidence` or `hypothesis`. An item's origin caps it (the authority grant floor): human and workflow origins can reach `policy`, Git `instruction`, and peer, tool, external and derived content only `evidence`. An agent's state proposal counts as peer origin, and a derived item never gains authority.
|
|
331
|
+
|
|
332
|
+
### Candidate
|
|
333
|
+
|
|
334
|
+
A proposed change, such as a memory note, a [governed skill](#governed-skill) or a [coded-repeat candidate](#coded-repeat-candidate), stored with its evidence. A candidate is never active until a person promotes or merges it.
|
|
335
|
+
|
|
336
|
+
### Coded-repeat candidate
|
|
337
|
+
|
|
338
|
+
A step that `kxm improve` found repeating: the same workflow step, role and prompt, with the same objective decided in at least two runs, accepted in at least 75% of its decided attempts, and writing no repository. The candidate proposes replacing the model turn with a coded gate step or a governed skill, and is written to `.kxm/candidates/` for review. It changes nothing by itself.
|
|
339
|
+
|
|
340
|
+
### Context item
|
|
341
|
+
|
|
342
|
+
One durable record the context system can select: evidence, state, an episode, knowledge or a skill, with a scope, a confidence and an [authority](#authority). A context item can never carry permissions or tool grants.
|
|
343
|
+
|
|
344
|
+
### Context packet
|
|
345
|
+
|
|
346
|
+
A token-budgeted set of [context items](#context-item) for one role and task, built by `kxm context get` or `kxm_context`. Selection is deterministic (no model, clock or randomness), ranked by relevance to the task, and filled first-fit to the budget. The packet has `currentState`, `knowledge`, `evidence`, `episodes`, `skills` and `contradictions` sections; superseded and rejected records are left out.
|
|
347
|
+
|
|
348
|
+
### Dispatch context
|
|
349
|
+
|
|
350
|
+
The project [memory](#memory) and verified promoted skills that the Runtime gives an agent it dispatches, rendered in the prompt under "Environment & Memory" and "Active Skills". Only content committed at the pinned revision is delivered. Otherwise the packet records a `dispatch_context_*` gap and the step runs without it.
|
|
351
|
+
|
|
352
|
+
### Episode
|
|
353
|
+
|
|
354
|
+
A [context item](#context-item) drawn from workflow journals (errors, lessons, observations and experiments) so that later work can learn from earlier runs. Read episodes with `kxm context episode` or `kxm_episode`.
|
|
355
|
+
|
|
356
|
+
### Governed skill
|
|
357
|
+
|
|
358
|
+
A skill candidate managed by `kxm skills`. `create` submits it, `evaluate` records static-review, sandbox, functional and safety results, and `promote` or `reject` decides it; a failed functional or safety evaluation quarantines it. Promotion needs every evaluation passed and a promoter who is not the author. Promoted skills are hash-pinned and served as context. Evaluations are recorded results; KXM does not run them.
|
|
359
|
+
|
|
360
|
+
### Improvement report
|
|
361
|
+
|
|
362
|
+
Two reports share this name. `kxm_improvement_report` summarizes a project's workflow journals by improvement area, with ranked cross-run signals. `kxm improve report` reads Runtime routing records and telemetry and writes [coded-repeat candidates](#coded-repeat-candidate).
|
|
363
|
+
|
|
364
|
+
### Memory
|
|
365
|
+
|
|
366
|
+
Git-authored project facts in `.kxm/memory/`. `kxm memory brief` prints them, `kxm memory note` records a candidate that a pull request promotes, and `kxm memory sync` projects them into whichever of `AGENTS.md`, `CLAUDE.md` and `GEMINI.md` the project already has. Reserve the word for this; other context records are [context items](#context-item).
|
|
367
|
+
|
|
368
|
+
### Memory revision
|
|
369
|
+
|
|
370
|
+
A hash of the project's memory and promoted skills, pinned with the [configuration revision](#configuration-revision) when a run is accepted. If either changes before the run's plan is pinned, the Runtime refuses to prepare it (`run_revision_drift`); after that, changed memory is withheld from [dispatch context](#dispatch-context).
|
|
371
|
+
|
|
372
|
+
### Promotion
|
|
373
|
+
|
|
374
|
+
An authorized decision that makes something current. For [temporal state](#temporal-state), an operator runs `kxm context promote` with the admin token, and the promoter cannot be the author; agents only propose, with `kxm_promote`. For a [governed skill](#governed-skill), it is `kxm skills promote`, and for [memory](#memory), a merged pull request. Compare [promotion readiness](#promotion-readiness).
|
|
375
|
+
|
|
376
|
+
### Promotion readiness
|
|
377
|
+
|
|
378
|
+
Whether a [candidate](#candidate) is ready for a person to review, under `improvement.promotionPolicy`: `manual_pr` (the default), `critic_quorum` or `auto_threshold`. Readiness never authorizes anything; every policy ends in a reviewed Git change.
|
|
379
|
+
|
|
380
|
+
### Recall
|
|
381
|
+
|
|
382
|
+
A metadata-only search of context records by text (`kxm context recall` or `kxm_recall`), with a relevance score for each item and no summaries.
|
|
383
|
+
|
|
384
|
+
### Skill
|
|
385
|
+
|
|
386
|
+
Always qualify this word:
|
|
387
|
+
|
|
388
|
+
- **suite skill**: one of the bundled `kxm-*` Agent Skills that teach a harness the `kxm` commands and tools;
|
|
389
|
+
- **browser skill**: a bundled `kxm-browser-*` skill for browser automation;
|
|
390
|
+
- **mind-plane skill**: a bundled skill, such as `kxm-mind`, for the separate [KontextMind](#kontextmind) knowledge plane;
|
|
391
|
+
- **governed skill**: a candidate managed by `kxm skills`; see [governed skill](#governed-skill);
|
|
392
|
+
- **repo-local skill**: a skill kept in a repository's own `.agents/skills/` directory.
|
|
393
|
+
|
|
394
|
+
### Temporal state
|
|
395
|
+
|
|
396
|
+
Project facts stored as state keys with a `proposed → current → superseded` lifecycle and historical queries (`--as-of`). State informs work but never grants a capability.
|
|
397
|
+
|
|
398
|
+
### Wiki
|
|
399
|
+
|
|
400
|
+
Markdown pages compiled from a project's context records by `kxm context wiki-compile` (a dry run unless you pass `--out`), with state, decisions, contradictions and history linked to their evidence. `kxm context wiki-lint` checks the result.
|
|
401
|
+
|
|
402
|
+
## Configuration and routing
|
|
403
|
+
|
|
404
|
+
### Admission
|
|
405
|
+
|
|
406
|
+
The decision that a [route](#route) may run live. `kxm routes admit` lists it under `admitted` in `.kxm/routes.yaml`, and `kxm routes disable` blocks it. A live [drive](#drive) refuses an unadmitted route with `producer_route_not_admitted`.
|
|
407
|
+
|
|
408
|
+
### Agent definition
|
|
409
|
+
|
|
410
|
+
A `kxm.agent.v1` file in `.kxm/agents/` that states an agent's purpose and its ceilings for tools, repositories and network. `kxm init` creates `coordinator` and `implementer`.
|
|
411
|
+
|
|
412
|
+
### Cost basis
|
|
413
|
+
|
|
414
|
+
How the cost of one Runtime attempt is known: `metered`, `unmetered` (a subscription login) or `unknown`. Settlement requires a basis. Today's producers record `unmetered` for subscription logins and `unknown` otherwise, and a list-price estimate never becomes a metered cost.
|
|
415
|
+
|
|
416
|
+
### Expansion
|
|
417
|
+
|
|
418
|
+
A [trust diff](#trust-diff) change that widens what agents may do, such as a new workflow or write access to a repository. A person reviews and commits each one.
|
|
419
|
+
|
|
420
|
+
### Role
|
|
421
|
+
|
|
422
|
+
A `kxm.role.v1` definition in `.kxm/roles/`, managed with `kxm role`, that describes a seat such as `planner`, `writer` or `verifier` and its model roster. When a role file exists, a Runtime step that uses the role may run only routes in its roster.
|
|
423
|
+
|
|
424
|
+
### Roster
|
|
425
|
+
|
|
426
|
+
A list of allowed models. It means either a [role](#role)'s roster, or the developer roster `.kxm/roster.yaml` that the [assignment runner](contributing/assignment-runner.md) trusts to choose writers and critics. Neither one admits a route; see [admission](#admission).
|
|
427
|
+
|
|
428
|
+
### Route
|
|
429
|
+
|
|
430
|
+
A model selector, such as `xai/grok-4.6` or `openrouter/qwen/qwen3-coder-plus`, that a step can run on. The harness that runs it comes from the agent or the project default. See [Harness routing](reference/harness-routing.md).
|
|
431
|
+
|
|
432
|
+
### Session
|
|
433
|
+
|
|
434
|
+
Always qualify this word:
|
|
435
|
+
|
|
436
|
+
- **session manifest**: the plan `kxm session start` writes; it launches nothing;
|
|
437
|
+
- **Pi session**: one Pi model conversation, stored on disk;
|
|
438
|
+
- **Claude session**: one running Claude Code conversation;
|
|
439
|
+
- **session brief**: the summary of recent work that `kxm session brief` prints, read from the hub's `kxm.db` and this machine's Runtime stores, with a `source` of `legacy`, `runtime` or `both`;
|
|
440
|
+
- **session token**: see [session token](#session-token);
|
|
441
|
+
- **session isolation**: see [session isolation](#session-isolation).
|
|
442
|
+
|
|
443
|
+
### Session isolation
|
|
444
|
+
|
|
445
|
+
A [worker](#worker) setting (`--session-isolation workflow`) that keeps one ordinary Pi session plus a separate Pi session for each [workflow run](#workflow-run), so work on one run never sees another run's model history. It separates model context, not processes or files, so it is not a sandbox.
|
|
446
|
+
|
|
447
|
+
### Trust diff
|
|
448
|
+
|
|
449
|
+
The structured permission diff that `kxm trust diff` prints between `.kxm/` in the working tree and a base Git revision. Each change is classified, and `kxm trust check` exits non-zero while any [expansion](#expansion) is present. It covers project, repository, agent, model, environment, workflow and gate-registry files, not `routes.yaml`, roles, the roster or prices.
|
|
450
|
+
|
|
451
|
+
## Words to avoid
|
|
452
|
+
|
|
453
|
+
| Instead of | Write |
|
|
454
|
+
|---|---|
|
|
455
|
+
| "server" or "broker" for the hub | hub |
|
|
456
|
+
| "bot" | agent (the identity) or worker (the process) |
|
|
457
|
+
| "task" for a peer message (`kxm task` is a separate feature) | request |
|
|
458
|
+
| "API key" | admin token, project token, agent key or session token |
|
|
459
|
+
| "log" for a run's structured record | journal |
|
|
460
|
+
| "memory" for context records | context item; memory means Git memory |
|
|
461
|
+
| "independent verification" for a quorum | peer-reply quorum, which proves routing provenance |
|
|
462
|
+
| "TUI" as a product name | dashboard (`kxm dash`) |
|
|
463
|
+
| Bare "run", "session", "gate", "skill" or "project" | The qualified term from this page |
|
|
464
|
+
| Model nicknames | The model ID, such as `xai/grok-4.6` |
|
|
465
|
+
|
|
466
|
+
## Related
|
|
467
|
+
|
|
468
|
+
- [Canonical terminology](contracts/terminology.md): the normative definitions
|
|
469
|
+
- [Architecture](concepts/architecture.md): how the components fit together
|
|
470
|
+
- [Trust model](concepts/trust-model.md): credentials and what each proves
|
|
471
|
+
- [Documentation index](README.md)
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Agent skills
|
|
2
|
+
|
|
3
|
+
KXM ships a suite of Agent Skills that teach a coding agent how to use the `kxm` CLI and the `kxm_*` tools safely: which command owns a task, which verbs exist, and which steps belong to a person. This page is for anyone running KXM from Claude Code, Pi or Codex, and for contributors who edit the skills. Skills document the CLI; they grant no permission, admit no writer and replace no trusted `.kxm/roster.yaml` policy.
|
|
4
|
+
|
|
5
|
+
Governed skills that your own runs produce are a separate lifecycle; see [Governed skills](governed-skills.md).
|
|
6
|
+
|
|
7
|
+
## Before you begin
|
|
8
|
+
|
|
9
|
+
- KXM installed in your harness: the Claude Code plugin or the Pi package. See [Install](../start/install.md).
|
|
10
|
+
- The `kxm` CLI on your `PATH`, because the skills teach CLI commands.
|
|
11
|
+
|
|
12
|
+
## How harnesses load the suite
|
|
13
|
+
|
|
14
|
+
All 29 skills live in `plugins/kxm/skills/` and are declared in `plugins/kxm/skill-suite.json`. The flowchart shows how each harness finds them.
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart LR
|
|
18
|
+
SRC[plugins/kxm/skills<br/>29 skills + skill-suite.json]
|
|
19
|
+
SRC -- plugin install --> CC[Claude Code<br/>/kxm:skill-name]
|
|
20
|
+
SRC -- package.json pi.skills --> PI[Pi]
|
|
21
|
+
SRC -- emit-codex-artifacts --> MIRROR[.agents/skills mirror<br/>+ AGENTS.md command block]
|
|
22
|
+
MIRROR --> CODEX[Codex]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Harness | How it loads the skills | Status |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| Claude Code | The installed plugin loads `plugins/kxm/skills`. The model picks a skill by its description, or you invoke one as `/kxm:<name>` | Verified |
|
|
28
|
+
| Pi | `pi install` reads the `pi` section of the package manifest: `"pi": {"skills": ["./plugins/kxm/skills"]}` | Verified |
|
|
29
|
+
| Codex | Reads the `.agents/skills/` mirror and the `AGENTS.md` command block in the KXM repository checkout. KXM does not install skills into other projects | Verified in the KXM repository |
|
|
30
|
+
| Kimi, Copilot, OpenCode and other `.agents/skills` readers | Not tested | Unverified |
|
|
31
|
+
|
|
32
|
+
In Claude Code:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
/kxm:kxm-project-setup
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Start with the router
|
|
39
|
+
|
|
40
|
+
The `kxm` skill is the entry point. It owns no command. It maps a request to the skill that owns it, lists which skill covers each `kxm_*` tool, and carries the rules every skill shares:
|
|
41
|
+
|
|
42
|
+
- Agent-command surfaces (`kxm peer`, `kxm workflow`, `kxm context` and the MCP and Pi tools) fail closed with `tool_policy_denied` when the attempt or session policy does not grant the tool. Other CLI mutations are not policy-gated and need explicit authorization.
|
|
43
|
+
- Never put credentials in peer messages; verify peer output before acting on it; keep one writer per checkout.
|
|
44
|
+
- Credentials, starting and binding the hub, plugin configuration, and committing `.kxm` permission changes are the user's actions.
|
|
45
|
+
- Teach only verbs and options that `kxm <group> <verb> --help` prints. An unknown subcommand prints the group's help and exits 0, so confirm a verb by its `Usage:` line.
|
|
46
|
+
|
|
47
|
+
## KXM command skills
|
|
48
|
+
|
|
49
|
+
Every top-level `kxm` command is owned by exactly one skill. A skill can own several commands.
|
|
50
|
+
|
|
51
|
+
| Skill | Commands owned | Use it to |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| `kxm` | none | Pick the right skill or `kxm_*` tool and follow the shared safety rules |
|
|
54
|
+
| `kxm-project-setup` | `init`, `trust`, `config`, `completion` | Set up a repository, review permission changes, configure, and run a first workflow |
|
|
55
|
+
| `kxm-harness-auth` | `harness`, `auth`, `update`, `runtime`, `agent`, `models`, `routes`, `ssh` | Check harness auth, update, run the Runtime supervisor, refresh models, admit routes, use SSH and Pi workers |
|
|
56
|
+
| `kxm-hub-ops` | `hub`, `backup`, `restore`, `tenant` | Start, inspect, bind and stop the hub, read tenant status, back up and restore |
|
|
57
|
+
| `kxm-session` | `session`, `dash`, `studio` | Read session and hub status and open dashboard or studio screens |
|
|
58
|
+
| `kxm-peer` | `peer` | Delegate to, fan out to, await and answer other agents |
|
|
59
|
+
| `kxm-workflow` | `workflow`, `gate` | Record journal entries, pass checkpoints and wait on signed callbacks |
|
|
60
|
+
| `kxm-definitions` | `role` | Inspect or edit roles, role hosts and model rosters without granting writer admission |
|
|
61
|
+
| `kxm-runs` | `run`, `runs` | Create, drive, inspect and cancel runs, or smoke-test a workflow model-free |
|
|
62
|
+
| `kxm-context-memory` | `context`, `memory`, `explain` | Recall what the project knows, explain a context footprint, record memory candidates |
|
|
63
|
+
| `kxm-skill-lifecycle` | `skills` | Turn a repeated practice into a governed skill candidate |
|
|
64
|
+
| `kxm-routing-improve` | `routing`, `improve` | Find what KXM learned and what repeats, and read recorded route spend |
|
|
65
|
+
| `kxm-tasks` | `suggest`, `goal`, `task` | Pick a workflow and plan work as goals and tasks |
|
|
66
|
+
|
|
67
|
+
Tools map the same way: peer tools to `kxm-peer`, workflow tools to `kxm-workflow`, `kxm_context`, `kxm_recall`, `kxm_state`, `kxm_episode` and `kxm_promote` to `kxm-context-memory`, and `kxm_improvement_report` to `kxm-routing-improve`. The full tool list is in [MCP and Pi tools](../reference/tools.md).
|
|
68
|
+
|
|
69
|
+
## Browser automation skills
|
|
70
|
+
|
|
71
|
+
These skills drive a remote Steel browser that you host. They own no `kxm` command. See [Browser automation](browser-automation.md) and [ADR-0002](../adr/ADR-0002-browser-automation-steel-doks.md).
|
|
72
|
+
|
|
73
|
+
| Skill | Use it to |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `kxm-browser-session` | Start, attach to, inspect and release a remote Steel browser session |
|
|
76
|
+
| `kxm-browser-takeover` | Hand a session to a human for MFA, login, CAPTCHA or sensitive consent, then resume |
|
|
77
|
+
| `kxm-browser-auth` | Use stored credentials and authenticated browser profiles safely |
|
|
78
|
+
| `kxm-browser-explore` | Explore a site, inspect its DOM and map a user flow with `agent-browser` |
|
|
79
|
+
| `kxm-browser-verify` | Reproduce a UI bug, gather evidence and write a durable Playwright test |
|
|
80
|
+
| `kxm-browser-diagnostics` | Diagnose Steel connectivity, CDP errors and timeouts, and clean up orphaned sessions |
|
|
81
|
+
| `kxm-browser-annotate` | Capture page sections, attach structured annotations and hand the changes to an agent |
|
|
82
|
+
|
|
83
|
+
## KontextMind knowledge-plane skills
|
|
84
|
+
|
|
85
|
+
Nine skills teach KontextMind, a separate product with its own `kontext` CLI, server and `km_` tools. They are not KXM and never use the `kxm_*` tools. Each description starts with "KontextMind knowledge plane only, the separate kontext CLI and km_ tools, not KXM" and says to use it only when the user names KontextMind, the `kontext` CLI or a `km_` tool, so a KXM request never loads them. `plugins/kxm/skills/SUITE.md` introduces them and `plugins/kxm/skills/hints.json` holds their slash hints.
|
|
86
|
+
|
|
87
|
+
| Skill | Use it to |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `kxm-mind` | Route a KontextMind request to the matching knowledge-plane skill |
|
|
90
|
+
| `kxm-query` | Search and read a mind with provenance |
|
|
91
|
+
| `kxm-harvest` | Draft redacted session learnings into a mind |
|
|
92
|
+
| `kxm-triage` | Work the KontextMind review queue |
|
|
93
|
+
| `kxm-work` | Read or update tracker work state and handoffs |
|
|
94
|
+
| `kxm-insights` | List or dismiss insights |
|
|
95
|
+
| `kxm-projects` | Manage mind repositories and members |
|
|
96
|
+
| `kxm-protocol` | Explain KontextMind contracts, trailers, trust modes and authorization |
|
|
97
|
+
| `kxm-mind-setup` | Connect a machine to a KontextMind server with the `kontext` CLI |
|
|
98
|
+
|
|
99
|
+
`kxm-mind-setup` was named `kxm-setup` before; the old name has no alias. `kxm-protocol` points to KontextMind's own documentation, which lives outside this repository.
|
|
100
|
+
|
|
101
|
+
## Bundled, governed and repo-local skills
|
|
102
|
+
|
|
103
|
+
| Kind | Where it lives | Who changes it |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| Suite skill | `plugins/kxm/skills/`, shipped with the plugin and package | KXM maintainers, in Git |
|
|
106
|
+
| Governed skill | `.kxm/skills/` in your repository | Your runs propose it; a reviewer promotes it. See [Governed skills](governed-skills.md) |
|
|
107
|
+
| Repo-local skill | `.agents/skills/` in a repository, outside the suite | That repository's maintainers. Example: [Repository work delivery](../contributing/repo-work-delivery.md) |
|
|
108
|
+
|
|
109
|
+
Telemetry never promotes a skill of any kind.
|
|
110
|
+
|
|
111
|
+
## Write skill descriptions
|
|
112
|
+
|
|
113
|
+
The description decides when a harness loads a skill, so every skill in the suite follows these rules:
|
|
114
|
+
|
|
115
|
+
- Say what the skill does and when to use it, key use case first, in at most 1,024 characters.
|
|
116
|
+
- Write a single line that parses as strict YAML. An unquoted value cannot contain `': '` anywhere.
|
|
117
|
+
- Do not add `allowed-tools`.
|
|
118
|
+
- Do not use retired product names, `pi-extensions` or `mcp__`.
|
|
119
|
+
- Do not teach `--issue` on token commands. `kxm session brief` saves a 24-hour operator session token, so it is never an agent step; name it only under an `## Operator steps` heading.
|
|
120
|
+
- Knowledge-plane skills keep the KontextMind opening and closing sentences described above.
|
|
121
|
+
|
|
122
|
+
## Maintain the suite
|
|
123
|
+
|
|
124
|
+
Contributors edit skills in `plugins/kxm/skills/`, the only source of truth.
|
|
125
|
+
|
|
126
|
+
1. Declare every skill directory in `plugins/kxm/skill-suite.json` with `name`, `path`, `ownedCommands` and a 10 to 200 character `intent`.
|
|
127
|
+
2. When you add a top-level command, give it to exactly one skill.
|
|
128
|
+
3. Regenerate the Codex mirror with `scripts/emit-codex-artifacts.mjs`. It replaces the suite's directories in `.agents/skills/`, leaves unrelated skills alone, and fails closed on a missing, symlinked or malformed manifest.
|
|
129
|
+
|
|
130
|
+
CI checks that every command has one owner, every skill directory is declared, every description parses as strict YAML within the length limit, the knowledge-plane skills stay separate, taught verbs exist, and the mirror matches. See [Development](../contributing/development.md) for how to run those checks.
|
|
131
|
+
|
|
132
|
+
## Next steps
|
|
133
|
+
|
|
134
|
+
- Install the plugin or package: [Install](../start/install.md)
|
|
135
|
+
- Govern skills your runs produce: [Governed skills](governed-skills.md)
|
|
136
|
+
- Plugin settings, channels and tools: [KXM plugin for Claude Code](../../plugins/kxm/README.md)
|
|
137
|
+
- Every command a skill teaches: [CLI reference](../reference/cli-reference.md)
|