@awebai/oats 0.24.0 → 0.24.2

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.
Files changed (43) hide show
  1. package/README.md +224 -394
  2. package/bin/oats.mjs +192 -13
  3. package/capabilities/oats-aweb/bin/oats-aweb-binding.mjs +11 -0
  4. package/capabilities/oats-aweb/bin/oats-aweb.mjs +26 -0
  5. package/capabilities/oats-aweb/lib/binding-wire.mjs +214 -0
  6. package/capabilities/oats-aweb/lib/captured-execution.mjs +91 -0
  7. package/capabilities/oats-aweb/lib/captured-native.mjs +91 -0
  8. package/capabilities/oats-aweb/lib/invocation-shape.mjs +135 -0
  9. package/capabilities/oats-aweb/lib/portable-binding.mjs +146 -0
  10. package/capabilities/oats-aweb/lib/session-readiness.mjs +56 -0
  11. package/capabilities/oats-aweb/oats.json +12 -3
  12. package/capabilities/oats-okf/lib/captured-worker.mjs +12 -4
  13. package/capabilities/oats-okf/oats.json +1 -1
  14. package/docs/capabilities.md +4 -0
  15. package/docs/design/2026-09-20-redesign-program-board.md +83 -0
  16. package/docs/design/2026-09-20-workspace-and-portable-adoption-plan.md +287 -0
  17. package/docs/design/2026-09-20-workspace-onboarding-public.md +124 -0
  18. package/docs/design/README.md +42 -0
  19. package/docs/first-team.md +43 -1
  20. package/docs/knowledge-theory.md +353 -111
  21. package/docs/knowledge.md +10 -1
  22. package/docs/layers.md +89 -354
  23. package/docs/official-marketplace.md +84 -0
  24. package/docs/packages.md +15 -7
  25. package/docs/release-notes/v0.24.1.md +17 -0
  26. package/docs/release-notes/v0.24.2.md +21 -0
  27. package/docs/souls-and-instances.md +45 -7
  28. package/docs/workspace-adoption.md +314 -0
  29. package/docs/workspaces.md +154 -0
  30. package/injects/oats-portable.md +8 -5
  31. package/lib/core.mjs +89 -17
  32. package/lib/portable-onboarding.mjs +19 -0
  33. package/lib/prepared-resources.mjs +1 -1
  34. package/lib/provider-binding-broker.mjs +6 -1
  35. package/lib/setup-expert-source.mjs +76 -0
  36. package/package-catalog.json +9 -5
  37. package/package.json +3 -1
  38. package/skills/oats-config/SKILL.md +4 -5
  39. package/skills/oats-portable/SKILL.md +1 -2
  40. package/skills/oats-portable-artifacts/SKILL.md +2 -2
  41. package/souls/oats-setup-expert/AGENTS.md +60 -0
  42. package/souls/oats-setup-expert/soul.yaml +14 -0
  43. package/skills/oats-portable-setup/SKILL.md +0 -69
package/README.md CHANGED
@@ -1,408 +1,238 @@
1
- # OATS — Open Agent Team Specification
1
+ # OATS: an open framework for specialised agent teams
2
2
 
3
- **Durable specialist agents that compound expertise across sessions, tools, models, and repositories.**
3
+ **Free, open source, provider-agnostic, and decentralised by design.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@awebai/oats.svg)](https://www.npmjs.com/package/@awebai/oats)
6
- [![Pull Request CI](https://github.com/awebai/oats/actions/workflows/pull-request.yml/badge.svg)](https://github.com/awebai/oats/actions/workflows/pull-request.yml)
7
6
  [![Release](https://img.shields.io/github/v/release/awebai/oats?display_name=tag)](https://github.com/awebai/oats/releases)
8
7
  [![Node 22+](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](https://nodejs.org/)
9
8
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
10
9
 
11
- OATS makes agents first-class project artifacts. Instead of giving every task
12
- the same general assistant, a workspace owns a backend expert, a UI
13
- specialist, a maintainer, a reviewer, a package owner, or any other role, each
14
- with a precise curriculum, durable knowledge, and a full provider-native
15
- session you can enter and steer.
16
-
17
- OATS launches **Pi**, **Claude Code**, and **Codex**. A team may mix providers and models
18
- while sharing the same souls, package and config contracts, instance
19
- lifecycle, and coordination topology. On machines where `oats setup` has run,
20
- the append-only, searchable **turn record** captures supported local transcripts
21
- and aw client logs. It outlives models, harnesses, and this repository's own
22
- designs.
23
-
24
- > **Knowledge version scope:** framework v0.23.1 integrates the published
25
- > OKF 2.0.0 package on the published OATS >=0.23.0 prerequisite. The optional
26
- > theory catalog uses the published v0.23.0 source. See [release notes](docs/release-notes/v0.23.1.md);
27
- > package acquisition, activation and live knowledge cutover remain separate operations.
28
-
29
- ## Contents
30
-
31
- - [Highlights](#highlights)
32
- - [Quick start](#quick-start)
33
- - [How it works](#how-it-works)
34
- - [The turn record](#the-turn-record)
35
- - [Official packages](#official-packages)
36
- - [OATS Desktop](#oats-desktop)
37
- - [Maturity](#maturity)
38
- - [Upgrading and migration](#upgrading-and-migration)
39
- - [CLI essentials](#cli-essentials)
40
- - [Documentation](#documentation)
41
- - [Contributing](#contributing)
42
- - [Releases and versioning](#releases-and-versioning)
43
- - [Origins and acknowledgements](#origins-and-acknowledgements)
44
- - [License](#license)
45
-
46
- ## Highlights
47
-
48
- - **Specialists are project assets.** A soul is reviewed Markdown, YAML,
49
- skills and capability-owned declarations that travel with the repository.
50
- It can be instantiated many times without losing its identity or access
51
- to accumulated expertise.
52
- - **Instances are real sessions, not hidden subagent calls.** Each instance is
53
- a disposable incarnation with a full Pi, Claude Code, or Codex session hosted in
54
- tmux, an explicit task, its own home, and a repository or workspace view.
55
- You can attach to it, steer it, message it, stop it, and inspect exactly
56
- what it received.
57
- - **An exact curriculum, fail closed.** At spawn, OATS resolves the scoped
58
- config for the target soul and materializes only the resources selected for
59
- that agent. Missing, duplicate, untrusted, incompatible, or escaping
60
- resources stop the launch before an incomplete agent starts.
61
- - **Expertise compounds.** With the official `oats.okf` knowledge package, an
62
- instance keeps resumable working state and captures non-obvious lessons. A
63
- separate directory worker judges notes and captured record evidence into
64
- external owned knowledge nodes. Git delivery is PR-only; plain directories
65
- use recoverable publication. Future instances read accepted snapshots.
66
- - **Hash-locked distribution.** Capabilities ship in Git-acquired packages
67
- with exact locks, integrity, dependency closure, and explicit executable
68
- trust. Acquisition never implies activation.
69
- - **Teams stay steerable.** Instances have explicit `child`, `parent`, and
70
- `sibling` relationships, can carry cross-machine identities through a
71
- messaging layer such as `oats.aweb`, and are visible together in OATS
72
- Desktop.
73
- - **Supported conversations stay on the record.** On machines where `oats
74
- setup` has run, OATS captures Claude Code, Pi, and Codex transcripts plus aw
75
- client logs. It skips sources matched by the local record's ignore list.
76
- Native session turns are content-addressed, not signed, and carry exact
77
- provenance. Projected aweb mail and chat keep their original message
78
- signatures verbatim. Search the captured content locally with `oats recall`.
79
-
80
- ## Quick start
81
-
82
- Follow [Run your first OATS team](docs/first-team.md) for the v2 setup path:
83
- install matching released kernel/runtime packages, adopt a development config,
84
- provision external knowledge and explicit owners, connect your team if desired,
85
- and complete a real task through review, independent judgment and retirement.
86
-
87
- ```bash
88
- npm install -g @awebai/oats@latest
89
- pi install npm:@awebai/oats-pi@latest
90
- cd /path/to/project
91
- oats init --raw
92
- oats install git:github.com/awebai/oats-okf@v2.0.0
93
- ```
94
-
95
- Continue with the guide's bindings, base provisioning, model and executable-trust
96
- setup before spawning. Raw initialization leaves integrations disabled; the
97
- explicit installation acquires published OKF 2.0.0 without depending on an older
98
- template/catalog pin. Neither step authenticates a runtime or joins a messaging
99
- team. The v0.23.1 framework release integrates that published package into its catalog.
100
-
101
- See [the first-team example](docs/first-team-demo.md) for historical v1 Pi and
102
- Claude qualification, not v2 acceptance evidence. Existing OAS users: start with
103
- [the migration command](docs/migration-from-oas.md).
104
-
105
- ## How it works
106
-
107
- > **Package distributes. Capability teaches or enables. Config assigns. Soul specializes. Instance works.**
108
-
109
- | Concept | Meaning |
110
- | --- | --- |
111
- | **Package** | Git or local acquisition, exact lock, update, integrity, dependency, and review unit. |
112
- | **Capability** | Independently targetable behavior inside a package: skills, instructions, commands, agents, requirements, or lifecycle hooks. |
113
- | **Config template** | A complete reference `oats-config.yaml` a package ships. You adopt one explicitly, and it becomes your ordinary local config. |
114
- | **Adopted base** | The exact template recorded at adoption, kept commit-safe so guided sync can compare against it. |
115
- | **Config** | Local authority: selects layers, targets capabilities to agent types and souls, applies settings, exclusions, and overrides. |
116
- | **Soul** | Durable specialist identity and curriculum; the knowledge capability determines storage and ownership. |
117
- | **Instance** | One disposable incarnation and provider-native working session. |
118
-
119
- ### Souls and instances
120
-
121
- ```text
122
- agents/backend-expert/soul/
123
- soul.yaml
124
- AGENTS.md
125
- CLAUDE.md -> AGENTS.md
126
- skills/
127
- okf.json # when using OKF v2: external owns/reads, not a bundle
128
- ```
129
-
130
- Every instance has two operational surfaces. The **instance home** is the
131
- brain and operational boundary: instructions, task, soul reference, selected
132
- skills, provenance, and episodic state. **`work/`** is the repository or
133
- workspace view where reading, editing, Git, builds, tests, and commits happen.
134
-
135
- ```text
136
- <instance-home>/
137
- AGENTS.md
138
- CLAUDE.md -> AGENTS.md
139
- TASK.md
140
- instance.json
141
- soul/
142
- .agents/skills/
143
- .claude/skills -> ../.agents/skills
144
- work/
145
- ```
146
-
147
- Work modes: `worktree` (isolated branch for implementation), `checkout` (the
148
- repository's shared checkout), `attached` (another instance's tree, for
149
- service agents and reviewers), `workspace` (read-only multi-repository context),
150
- and explicit `directory` (owned non-Git execution for independent workers;
151
- `repo` supplies configuration only). Directory mode rejects `--work-dir` and
152
- `--branch`, and retirement preserves nonempty work in verified recovery storage.
153
- Placement that cannot be proved fails closed.
154
-
155
- Provider behavior stays deliberate. Pi runs with ambient skill, context, and
156
- template discovery curtailed while operator-configured extensions remain
157
- enabled. Claude Code keeps the operator's settings, skills, plugins, MCP,
158
- hooks, and memory, and OATS adds its canonical composed resources. The
159
- guarantee is an exact OATS-managed curriculum, not identical ambient behavior
160
- across providers. Codex uses native instructions, skills and approval settings;
161
- its launch support currently requires agents to check `aw` themselves for new messages.
162
-
163
- ### Configuration and layers
164
-
165
- Config is scoped from laptop to workspace to repository. Closer declarations
166
- win; within a level, soul beats agent type beats global. Explicit exclusions
167
- and layer `none` are supported.
168
-
169
- OATS has five conceptual layers:
170
-
171
- 1. **Soul**: durable specialist identity and curriculum (kernel).
172
- 2. **Knowledge**: capture and promotion contract (official option `oats.okf`).
173
- 3. **Instances**: homes, work modes, sessions, lifecycle (kernel).
174
- 4. **Messaging**: reachable agent identities (official option `oats.aweb`).
175
- 5. **Tasks**: durable work queue (optional `oats.jira`, `oats.linear`, or another provider).
176
-
177
- Knowledge, messaging, and tasks are exclusive slots. Additive capabilities
178
- such as authoring and review compose independently. Inspect the resolved
179
- result with `oats doctor [context] --soul <name> --json`.
180
-
181
- ### Distribution packages
182
-
183
- A Git repository may contain ordinary development content and one or more
184
- package payloads; the default payload path is `oats-package/`.
185
-
186
- ```bash
187
- oats install oats.okf # official short id
188
- oats install https://github.com/example/project.git@v1.0.0 # Git source
189
- oats install 'https://github.com/example/project.git@v1.0.0#dist' # contained path
190
- oats install ../project/oats-package # local path
191
- oats update <package-id> # explicit advance
192
- ```
193
-
194
- Installing materializes each capability into
195
- `.agents/capabilities/installed/<id>/`. The `lockfileVersion: 2` lock records
196
- packages (source, exact commit, path, payload integrity, dependencies) and
197
- capabilities (version, provider, path, artifact integrity, executable trust).
198
- Bare `oats install` restores the exact lock and never advances source state.
199
-
200
- ## The turn record
201
-
202
- `packages/record` is the load-bearing layer. On each machine where `oats setup`
203
- has run, it captures Claude Code, Pi, and Codex transcripts plus aw client logs.
204
- It skips sources matched by that record root's ignore list. Native session
205
- turns are content-addressed, not signed, and carry exact provenance. Projected
206
- aweb mail and chat keep their original message signatures verbatim. The
207
- append-only record can be replicated and searched locally through a SQLite
208
- full-text index. It has no runtime dependencies beyond Node.
209
-
210
- ```bash
211
- oats setup # install capture hooks and the background watcher
212
- oats capture --status # what is being captured, by whom
213
- oats recall "<query>" # search every captured session and message
214
- ```
215
-
216
- The normative specification and its conformance vectors live in
217
- [`packages/record/docs/`](packages/record/docs/).
218
-
219
- ## Official packages
220
-
221
- Official packages are independently versioned Git repositories in the
222
- [`awebai`](https://github.com/awebai) organization, referenced from the
223
- kernel's bundled catalog:
224
-
225
- | Package | Provides |
226
- | --- | --- |
227
- | [`oats-okf`](https://github.com/awebai/oats-okf) | `oats.okf` external knowledge, durable capture and independent judgment |
228
- | [`oats-aweb`](https://github.com/awebai/oats-aweb) | `oats.aweb` messaging and identity layer |
229
- | [`oats-authoring`](https://github.com/awebai/oats-authoring) | capability, skill, soul, and integration authoring craft |
230
- | [`oats-jira`](https://github.com/awebai/oats-jira) | adopter-selected Jira tasks layer |
231
- | [`oats-linear`](https://github.com/awebai/oats-linear) | adopter-selected Linear tasks layer |
232
- | [`oats-dev`](https://github.com/awebai/oats-dev) | OATS development config template plus `oats.review` |
233
-
234
- The optional [`oats.knowledge-theory`](docs/knowledge-capability-authoring.md)
235
- authoring package lives in this repository's `oats-package/` Git payload; its
236
- catalog entry in framework v0.23.1 selects the already-published v0.23.0 Git
237
- source, containing theory package 1.0.0. It is not a runtime knowledge layer.
238
-
239
- Acquire OKF through the catalog Git payload. Its bundled npm mirror is not a
240
- self-contained distribution: npm drops the source worker's canonical `CLAUDE.md`
241
- symlink. The optional theory payload is excluded from npm entirely. Neither
242
- limitation is permission to synthesize source aliases or weaken integrity checks.
243
-
244
- External CLIs and runtime plugins are separate informed-consent requirements.
245
- Spawn verifies them and never installs them implicitly.
246
-
247
- ## OATS Desktop
248
-
249
- The CLI is the mutation boundary; OATS Desktop is the situational-awareness
250
- layer. It shows identities, tasks, relationships, specialist context,
251
- workspaces, real terminals, and lifecycle state in one view when a team has
252
- too many concurrent sessions for a flat terminal list to remain readable.
253
-
254
- Installers for macOS (arm64 and x64) and Linux (x64) are published on the
255
- [Releases](https://github.com/awebai/oats/releases) page with checksums and
256
- build provenance. The Desktop can also be run from `packages/desktop/` in a
257
- framework checkout. See [OATS Desktop](docs/desktop.md).
258
-
259
- ## Maturity
260
-
261
- This repository carries three layers of different maturity behind one `oats`
262
- entry point:
263
-
264
- | Layer | Where | Status |
265
- | --- | --- | --- |
266
- | Turn record | `packages/record` | **Core.** Stable, specified, conformance-tested. |
267
- | Soul and instance runtime | `bin/`, `lib/`, `capabilities/` | **Shipped.** Maintained and in production use. |
268
- | Synthesis tools (`oats experimental <dress\|spawn\|segments\|mind>`) | `packages/experimental` | **Experimental.** Unproven by design, interfaces may change, never included in the published package. |
269
-
270
- ## Upgrading and migration
271
-
272
- **From OAS.** If a deployment was created by OAS (`@oas-framework/oas`, files
273
- named `oas-config.yaml` and `oas-lock.json`), this kernel recognizes none of
274
- those names. Convert each scope with one transactional command; any failure
275
- restores the original bytes:
276
-
277
- ```bash
278
- oats migrate --from-oas --dry-run
279
- oats migrate --from-oas
280
- ```
281
-
282
- Read [Migration from OAS](docs/migration-from-oas.md) first.
283
-
284
- **From 0.18 official capabilities.** For OATS-named scopes, valid v1 locks and
285
- installed capabilities keep working after the kernel upgrade. Preview and
286
- apply the guided migration when ready:
287
-
288
- ```bash
289
- oats migrate --official --recursive --dry-run --dir <team-root>
290
- oats migrate --official --recursive --dir <team-root>
291
- ```
292
-
293
- It preserves config files and capability ids, leaves custom, owned, and path
294
- capabilities untouched, never transfers executable trust silently, and prints
295
- exact follow-ups. `oats doctor` reports readiness and cutover state.
296
-
297
- **From OKF v1 to v2.** This is a separate, breaking capability migration, not
298
- a kernel lock conversion. Preserve legacy soul knowledge and live source
299
- state/cursors, configure external bases and owners, accept provider delivery,
300
- then deliberately cut over. See [knowledge migration](docs/knowledge-migration.md).
301
- Updating npm or installing a package performs none of those live steps.
302
-
303
- ## CLI essentials
304
-
305
- ```bash
306
- oats status --team
307
- oats create <soul> --type <agent-type> --repo <repo> --work worktree
308
- oats spawn <soul> --purpose <role> --task "..."
309
- oats retire <instance>
310
-
311
- oats install [<package-source>]
312
- oats update <package-id>
313
- oats trust <capability>
314
- oats init --package <package-id> --config <template>
315
- oats config diff | sync | adopt <package-id> --config <template>
316
- oats doctor --json
10
+ OATS—**Open Agent Team Specification**—is a framework for building, running and coordinating teams of specialised AI agents. You can organise your team however you need, choosing models, harnesses and capabilities without being tied to a particular provider or stack.
317
11
 
318
- oats setup | capture | recall "<query>"
319
- ```
12
+ **Capabilities are the building blocks of an OATS setup.** When you define an agent, you choose its capabilities. Each provides the know-how and tools for knowledge systems, messaging, task coordination or any other workflows, tools or ways of working. We provide defaults to get started, but you can adapt existing capabilities or create fully custom ones to shape how your agents work and which tools they use.
320
13
 
321
- With OKF v2 configured, use `oats okf inspect --json` for identity-guarded live
322
- memory plus durable receipts, and `oats okf read`/`refresh` for accepted knowledge.
323
- After retirement, select the durable source descriptor from deployment context.
324
- See [knowledge commands](docs/knowledge.md#inspection-and-operator-commands).
325
-
326
- Package, config, and lock operations have deterministic CLI and stable JSON
327
- forms. Do not hand-edit the lock or installed stores.
14
+ The [official marketplace](docs/official-marketplace.md) is the reviewed list of official packages; listing is not executable approval.
328
15
 
329
- ## Documentation
16
+ For example, a kernel expert, a UX expert and a customer-support expert can share capabilities for learning and coordination, while each has specific capabilities for its own area of expertise.
17
+
18
+ Through your capabilities, you remain in control of:
19
+
20
+ - Which specialists make up the team.
21
+ - Which models and harnesses their instances use.
22
+ - Where their knowledge lives and how it develops.
23
+ - Which skills, tools and workflows they receive.
24
+ - How they communicate and coordinate.
25
+
26
+ These choices determine how your team operates and where the value of its work accumulates. Keeping them under your control means your knowledge, workflows and team structure can outlast any particular model or platform.
27
+
28
+ OATS also provides **OATS Desktop: a free, fully integrated ADE—an agentic IDE**. It brings your team, its work and its agent sessions into one place, making day-to-day collaboration with your agents clearer and more pleasant.
29
+
30
+ OATS builds on tools you already use—**Git, GitHub or GitLab, and your preferred agent harnesses**. People can share agent definitions, knowledge and workflows across projects without an OATS account, a central OATS server or an OATS-hosted database. Selected integrations may use their own servers or databases; those are your choices, not a mandatory OATS service.
31
+
32
+ ## Why OATS
33
+
34
+ OATS grew from a practical need: we wanted control over our agent setups—not just which model answered a prompt, but also:
35
+
36
+ - The knowledge our agents accumulated.
37
+ - The know-how and workflows they used.
38
+ - The ways they communicated and coordinated.
39
+ - The systems on which all of this depended.
40
+
41
+ As model providers expand into complete agent platforms, choosing a model can also mean adopting that provider’s memory system, tools, workflows and communication channels. We wanted those to remain separate choices.
42
+
43
+ **We believe machine intelligence should become a commodity:** available from different providers through open interfaces, including local models that individuals can run and control themselves.
44
+
45
+ Models will still differ. But changing one should not mean abandoning the expertise, knowledge and working practices you have built around it.
46
+
47
+ OATS is our attempt to make that world practical.
48
+
49
+ ## Souls and instances
50
+
51
+ OATS separates an agent’s reusable specialisation from the particular work it is doing.
52
+
53
+ ### A soul defines a kind of expert
54
+
55
+ A **soul** is a reusable, versioned agent definition. It establishes:
56
+
57
+ - Its expertise and responsibilities.
58
+ - Its boundaries and operating principles.
59
+ - Its capabilities and specialised skills.
60
+ - The knowledge it should consult.
61
+
62
+ A soul is not a model or a conversation. It is the definition from which working agents are created. A UX-expert soul, for example, might combine interaction-design principles, accessibility skills and access to accepted product knowledge.
63
+
64
+ ### An instance does the work
65
+
66
+ An **instance** is one incarnation of a soul, with its own identity, assignment, working context and state. It runs through a **harness**—the agent application, such as Pi, Claude Code or Codex—using the selected model.
67
+
68
+ Instances can have different lifetimes:
69
+
70
+ - **Short-lived instances** handle bounded work. For example, we use ephemeral developer and reviewer instances to implement and review specific changes.
71
+ - **Long-running instances** carry continuity across an area of work. We plan, investigate and reason with instances of expertise souls that may remain useful across many tasks.
72
+
73
+ An instance is not necessarily one ticket or one chat session. It can become deeply familiar with a situation over time. Lifetime follows the work: a short-lived instance can produce valuable learning, while a long-running instance does not automatically become a new soul.
74
+
75
+ ### One soul can support many developers
76
+
77
+ Several developers may each work with an instance of the same kernel-expert soul:
78
+
79
+ - One investigates execution behaviour.
80
+ - Another develops a capability integration.
81
+ - Another supports an ongoing upgrade.
82
+
83
+ They share a specialisation, but not an active mind. Each develops an understanding of its assignment and keeps track of its own unfinished work. Accepted findings can become useful to other instances without making their working contexts identical.
84
+
85
+ ## Fundamental capabilities—and any others you need
86
+
87
+ Three capability areas provide the foundation for working as a team:
88
+
89
+ | Capability | What it provides |
90
+ |---|---|
91
+ | **Knowledge** | How agents consult knowledge, capture experience and retain useful learning. |
92
+ | **Messaging** | How agents become reachable and communicate with people and other agents. |
93
+ | **Tasks** | How work is assigned, tracked and coordinated. |
94
+
95
+ These responsibilities are distinct. A conversation is not automatically a task record, and a task record is not automatically knowledge.
96
+
97
+ They are **not the only capabilities you can define**. Additional capabilities can provide domain tools, specialised skills, research methods, review procedures or integrations with your systems.
98
+
99
+ A **skill** teaches a way of working. A capability can supply that skill together with instructions, tools and supporting automation. OATS composes the selected resources into an instance’s working environment when it is created.
100
+
101
+ ### Common contracts, different implementations
102
+
103
+ The kernel supplies soul and instance identity, configuration, lifecycle, resource composition and execution approval. Models and harnesses remain user-selected execution choices; capabilities may declare requirements that a chosen setup must satisfy.
104
+
105
+ Capabilities supply the behaviour behind their contracts:
106
+
107
+ - A knowledge capability can choose its storage, reading strategy and learning workflow.
108
+ - A messaging capability can use a different communication service.
109
+ - A task capability can connect agents to the tracker or coordination model you prefer.
110
+ - Additional capabilities can extend a team without becoming mandatory parts of OATS.
111
+
112
+ A **package** distributes capabilities and their resources. Acquiring one does not automatically activate it or approve executable code. Provider independence does not mean every combination is compatible; missing requirements must be reported, not silently discarded.
113
+
114
+ ## Our approach to knowledge and learning
115
+
116
+ The following is **our reference approach**, implemented through the official `oats.okf` knowledge capability. Other knowledge capabilities may adopt it, adapt it or use a different model.
117
+
118
+ We distinguish four kinds of value:
119
+
120
+ | Value | Where it belongs in our model |
121
+ |---|---|
122
+ | Reusable procedures and know-how | Skills and capabilities |
123
+ | Durable judgment and awareness of the larger picture | Accepted knowledge |
124
+ | A detailed understanding of the current problem | Instance context |
125
+ | Unfinished work and next steps | Instance state |
126
+
127
+ An experienced instance can have all four. We do not want to push them all into a permanent knowledge base.
128
+
129
+ ### Save expertise, not a second description of the code
130
+
131
+ > **Knowledge is what makes an expert an expert in a subject or project. It is not a description of what lives in the code.**
132
+
133
+ Our promotion test asks:
134
+
135
+ 1. Would an appropriate future instance act differently for knowing this?
136
+ 2. Could it not have obtained this simply by reading the repository?
137
+
138
+ We preserve decisions and rationale, rejected alternatives, discoveries, research conclusions, design inspiration and maintained situational awareness. We do not duplicate code structure, file maps, ordinary task progress or information already implicit and quickly learnable from the repository.
139
+
140
+ For example, **how to run a release** belongs in a skill. **Why installed-artifact verification is necessary** can be a lesson. **Which release check is still running** belongs in working state.
141
+
142
+ Knowledge should improve judgment, not become a second source of increasingly stale project documentation.
143
+
144
+ ## Our default: oats.okf
145
+
146
+ `oats.okf` uses **Open Knowledge Format**: readable Markdown concepts with metadata, navigation and history.
147
+
148
+ Our default model is **centralised and per soul**:
149
+
150
+ - A team selects a shared knowledge base.
151
+ - Each adopted soul has a stable knowledge home.
152
+ - Its instances consult accepted knowledge relevant to their work.
153
+ - Useful learning can benefit future instances of that soul.
154
+ - Other souls read or link to relevant concepts rather than duplicating them.
155
+
156
+ For example, several UX-expert instances can contribute learning to the same knowledge home while retaining their own investigations and working state. Adopting a public soul does not implicitly send private learning back to its publisher.
157
+
158
+ ### How learning flows
159
+
160
+ 1. **Instances work and capture evidence.**
161
+ 2. **An independent harvester judges what is worth retaining.**
162
+ 3. **Proposed knowledge is validated and delivered through the configured acceptance process.**
163
+ 4. **Future instances can consult the accepted result.**
164
+
165
+ Ordinary working instances do not directly rewrite the accepted knowledge base. For Git-backed knowledge, delivery uses pull requests; an open PR is not yet accepted knowledge. Plain-directory storage has its own publication mechanism. A delivery receipt is not proof of human approval or that another instance has read the result.
166
+
167
+ The current capability requires explicit bindings and provisioning. The default model is not a claim that every setup step is automatic.
168
+
169
+ ## Knowledge and learning, your way
170
+
171
+ The approach above is our default, not a requirement. **You can set up your own knowledge procedures and ways of working and learning.** OATS provides the contracts and a default implementation; you can adapt existing capabilities or write your own.
172
+
173
+ For example, you might want:
174
+
175
+ - **New instances to inherit accumulated expertise.** A new kernel-expert instance begins with relevant decisions and lessons from earlier instances.
176
+ - **Instances to develop their own specialisations.** Two UX-expert instances share a foundation, but one develops a deep understanding of checkout flows while another focuses on navigation.
177
+ - **Long-running instances to retain working understanding.** A customer-support instance carries its investigations, observations and unresolved questions across many tasks.
178
+ - **Selected learning to become shared knowledge.** Useful findings are reviewed and made available to other instances, while task-specific context stays with the instance that needs it.
179
+
180
+ Your knowledge capability determines what context an instance receives, how it builds on experience, and which learning is retained or shared. It can organise knowledge per soul, per topic or per project, centrally or alongside soul definitions, provided that it actually supports the chosen arrangement. Mutable knowledge must not be written into immutable captured source artifacts.
181
+
182
+ The same principle applies to messaging and tasks: **OATS provides the contracts; you choose how your team works through them.**
183
+
184
+ ## Expertise can evolve
185
+
186
+ Per-soul knowledge does not have to become a permanent silo. Souls can grow their scope, transfer knowledge to a more appropriate home, merge or split into more specialised souls.
187
+
188
+ We call a deliberate split into new reusable specialisations **speciation**. An overall expert handling recurring UX work, for example, may provide evidence for a dedicated UX expert with its own skills and knowledge home. The overall expert can then consult that expertise rather than duplicate it.
189
+
190
+ These are changes to propose and review—not changes agents make to themselves automatically. A busy period or a large collection of notes is not enough on its own.
191
+
192
+ See **[Knowledge, instances and evolving expertise](docs/knowledge-theory.md)** for the detailed explanation of:
193
+
194
+ - Long-running instance expertise and working context.
195
+ - Per-soul and topic-based knowledge.
196
+ - Speciation, widening, merging and ownership changes.
197
+ - Harvesting, maintenance and acceptance.
198
+ - Context handoffs and cloning.
199
+ - Knowledge-capability contracts and their implementation boundaries.
200
+
201
+ ## Getting started
202
+
203
+ Begin with a small team and a real piece of work:
204
+
205
+ 1. Choose compatible models and harnesses.
206
+ 2. Select the capabilities your team needs.
207
+ 3. Define specialists with clear responsibilities.
208
+ 4. Create instances for their assignments.
209
+ 5. Verify that work, communication, learning and handoff behave as intended.
210
+
211
+ Start with the [first-team guide](docs/first-team.md) and the [release notes](docs/release-notes/) for the supported scope of your chosen versions.
212
+
213
+ Further documentation:
330
214
 
331
215
  - [Souls and instances](docs/souls-and-instances.md)
332
216
  - [Configuration](docs/configuration.md)
333
- - [Layers](docs/layers.md)
334
- - [Distribution packages](docs/packages.md)
335
- - [Capabilities](docs/capabilities.md)
336
- - [Knowledge](docs/knowledge.md) and [Knowledge theory](docs/knowledge-theory.md)
337
- - [Integrations](docs/integrations.md)
338
- - [Implementation](docs/implementation.md)
217
+ - [Capabilities](docs/capabilities.md) and [layer contracts](docs/layers.md)
218
+ - [Knowledge operations](docs/knowledge.md)
219
+ - [Knowledge, instances and evolving expertise](docs/knowledge-theory.md)
220
+ - [Packages](docs/packages.md)
221
+ - [Execution targets](docs/execution-targets.md)
339
222
  - [OATS Desktop](docs/desktop.md)
340
- - [Migration from OAS](docs/migration-from-oas.md)
341
- - [Release notes](docs/release-notes/)
342
- - [Architecture proposal, 2026-09-03](docs/2026-09-03-architecture-proposal.md): components, contracts, and what may be replaced (proposal, not shipped behavior)
343
- - [Expert-assisted deployment proposal, 2026-09-08](docs/design/2026-09-08-expert-assisted-deployment-proposal.md): setup/repair skills, packaged preparation, live maintenance, and implementation handoff (proposal, not shipped behavior)
344
- - [iPhone agent management proposal](docs/design/2026-09-07-mobile-agent-management-proposal.md): private server access through Tailscale, mobile UX, and delivery phases (proposal, not shipped behavior)
345
-
346
- ## Contributing
347
-
348
- Issues and pull requests are welcome at
349
- [github.com/awebai/oats](https://github.com/awebai/oats).
350
-
351
- ```bash
352
- git clone https://github.com/awebai/oats.git
353
- cd oats
354
- npm ci
355
- npm run check
356
- npm test
357
- ```
358
-
359
- `npm test` runs the kernel, record, and experimental suites. The Desktop
360
- suites need their own dependencies; install them once and the same command
361
- picks them up:
362
-
363
- ```bash
364
- (cd packages/desktop && ELECTRON_SKIP_BINARY_DOWNLOAD=1 npm ci)
365
- ```
366
-
367
- Pull requests run the same checks on Node 22 through
368
- [Pull Request CI](.github/workflows/pull-request.yml): tests, project
369
- validation, a package dry run, and a clean-room install smoke test. Keep
370
- changes small and reviewable, add a test with every behavior change, and
371
- describe the reachable defect in the commit message.
372
-
373
- ## Releases and versioning
374
-
375
- OATS follows [semantic versioning](https://semver.org/). Each release is a
376
- Git tag `vX.Y.Z` with notes in [`docs/release-notes/`](docs/release-notes/).
377
- A release publishes `@awebai/oats` and `@awebai/oats-pi` to npm and attaches
378
- the Desktop installers, `SHA256SUMS`, and build provenance to the matching
379
- [GitHub Release](https://github.com/awebai/oats/releases). The same release
380
- can be built, staged, and published without GitHub Actions through the
381
- [runnerless release lane](docs/release-lane.md). Official packages are
382
- versioned and tagged in their own repositories and pinned by the kernel's
383
- catalog.
384
-
385
- ## Origins and acknowledgements
386
-
387
- OATS began as **OAS (Open Agent Specialization)**, designed and written by
388
- Josep (Pepe) Garcia-Reyero Sais. The architecture, the kernel, the package
389
- engine, the Desktop, and the official packages are his work; OATS continues
390
- it under its current name, and his authorship is preserved throughout this
391
- repository's history.
392
-
393
- OATS grew from the a2am team architecture and the LFX engineering vision for
394
- agent-native engineering. It builds on open formats and conventions including
395
- AGENTS.md, Agent Skills, and OKF.
396
-
397
- ## License
398
-
399
- [MIT](LICENSE) © 2026 OATS Framework
400
-
401
- Session backends and unattended launches are described in
402
- [execution targets](docs/execution-targets.md). Claude Code and Codex retain normal
403
- native context and permissions **alongside the complete resolved OATS instance home**:
404
- skills, capabilities, instructions, task, metadata, work placement and ordinary
405
- hooks/approvals are still supplied. Add `--yolo` or select `yolo: true` in configuration
406
- only for an explicit user opt-in to bypass; unattended execution does not imply it.
407
- Aweb owns shared event delivery; terminal transport alone does not enable a
408
- messaging broker.
223
+
224
+ This README explains the framework and its direction. Advanced mechanisms such as automatic speciation and context cloning require their own implementation and verification; the architectural model is not a claim that every feature or capability combination already works. Alternative knowledge layouts require a compatible capability, not a change to an undocumented kernel switch.
225
+
226
+ ## Contributing and releases
227
+
228
+ Source, issues and pull requests live at [awebai/oats](https://github.com/awebai/oats). See the [implementation guide](docs/implementation.md) for repository details and the [release lane](docs/release-lane.md) for artifact verification and publication.
229
+
230
+ Versioned releases publish the kernel, Pi bridge and Desktop installers. Check the [release notes](docs/release-notes/) before changing an existing deployment; installing software does not automatically migrate knowledge or reconfigure live agents.
231
+
232
+ ## Origins and licence
233
+
234
+ OATS began as **OAS—Open Agent Specialization**, designed and written by Josep (Pepe) Garcia-Reyero Sais. The architecture, kernel, package engine, Desktop and official packages are his work; OATS continues it under its current name.
235
+
236
+ OATS grew from the a2am team architecture and the LFX engineering vision for agent-native engineering. It builds on open formats and conventions, including AGENTS.md, Agent Skills and Open Knowledge Format.
237
+
238
+ OATS is free and [MIT-licensed](LICENSE). Models and services selected by a deployment may have their own licences and costs.