Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
a6c534a
feat(marketing): position Caplets as whole-stack capability layer
ian-pascoe Jul 26, 2026
14fa582
fix(marketing): align whole-stack public journey
ian-pascoe Jul 26, 2026
aac5cde
fix(marketing): clarify landing capability journey
ian-pascoe Jul 28, 2026
75a4e91
fix(marketing): distill landing page
ian-pascoe Jul 28, 2026
863ebc6
fix(benchmarks): isolate semantic judge extensions
ian-pascoe Jul 29, 2026
961f204
autoresearch: harness setup
ian-pascoe Jul 29, 2026
c26dc71
Compressed duplicated Code Mode description, REPL, and native prompt …
ian-pascoe Jul 29, 2026
9bdc2cd
Condensed Code Mode JSON-schema field descriptions and native system …
ian-pascoe Jul 29, 2026
13c27ff
Separated compiler-only full runtime declarations from the model-faci…
ian-pascoe Jul 29, 2026
3b7d198
Replaced repeated per-tool Code Mode prompt guidance inside the nativ…
ian-pascoe Jul 29, 2026
b501f47
Collapsed native Code Mode prompt guidance to workflow/output and ses…
ian-pascoe Jul 29, 2026
e241793
Tightened the model-facing Code Mode workflow and handle reference wh…
ian-pascoe Jul 29, 2026
46a65b4
Restored the existing tested 'fails before executing your code' sessi…
ian-pascoe Jul 29, 2026
1176270
Updated Caplet hint compaction for the current shared tools/search_to…
ian-pascoe Jul 29, 2026
fe64fda
Made native system guidance capability-aware: Code Mode-only exposure…
ian-pascoe Jul 29, 2026
7388bfc
autoresearch: harness setup
ian-pascoe Jul 29, 2026
07b588f
Compacted generated handle references, preserved exact Code Mode call…
ian-pascoe Jul 29, 2026
10b4b3e
Omitted redundant per-call metadata from successful Code Mode results…
ian-pascoe Jul 29, 2026
c8e2b19
Moved selected-field output shaping into high-salience Code Mode prom…
ian-pascoe Jul 29, 2026
a2a9613
Condensed duplicated workflow and session prose plus removed Markdown…
ian-pascoe Jul 29, 2026
52d93a1
Removed self-evident code and timeout JSON-schema descriptions and co…
ian-pascoe Jul 29, 2026
c9f7d10
Compressed session and operation syntax, shortened session schema tex…
ian-pascoe Jul 29, 2026
921a078
Removed the Code Mode native-name label already supplied by the tool …
ian-pascoe Jul 29, 2026
6a63258
Capped discovery descriptions at 96 characters; exact describeTool de…
ian-pascoe Jul 29, 2026
d88f9bc
Compressed projection/session guidance while retaining selected-field…
ian-pascoe Jul 29, 2026
a3819e5
autoresearch: harness setup
ian-pascoe Jul 30, 2026
b7eba85
autoresearch: harness setup
ian-pascoe Jul 30, 2026
c14932d
autoresearch: harness setup
ian-pascoe Jul 30, 2026
b78476c
Actionable discovery summaries produced the first valid strict three-…
ian-pascoe Jul 30, 2026
7fe62c7
Same-program discovery-to-call declarations achieved the strict goal:…
ian-pascoe Jul 30, 2026
015f730
Projecting successful native Code Mode envelopes to value, non-empty …
ian-pascoe Jul 30, 2026
ec7e46a
Cover compact Code Mode contracts
ian-pascoe Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/tidy-code-mode-token-burden.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@caplets/core": patch
---

Reduce Code Mode token overhead with actionable discovery call templates, compact generated guidance, and model-facing successful envelopes that preserve session, recovery, logging, diagnostics, and full error details.
30 changes: 29 additions & 1 deletion CONTEXT.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,37 @@
# Caplets

Caplets is a capability gateway for coding agents. This glossary names the product concepts used when describing Caplet configuration and runtime behavior.
Caplets is a capability layer for coding agents. This glossary names the product concepts used when describing Caplet configuration and runtime behavior.

## Language

**Caplet**:
A reusable capability surface for coding agents that exposes intentionally selected backend functionality. A Caplet can be kept local, reused across supported agent environments, or shared without transferring credentials.
_Avoid_: Connector, integration listing, tool bundle

**Capability Layer**:
The product category for Caplets: a shared intermediary that turns heterogeneous backends into intentionally exposed, reusable capabilities for coding agents.
_Avoid_: Agent integration platform, tool aggregator, capability marketplace

**Whole Stack**:
The set of backend capabilities a user intentionally makes available to a coding agent through Caplets. It describes potential breadth across the agent's work, not unrestricted authority or the current contents of the Prebuilt Caplets Catalog.
_Avoid_: Unrestricted agent access, every credential by default, prebuilt catalog coverage

**Capability Sharing**:
The transfer of a reusable Caplet definition and its operating guidance without transferring credentials or authenticated authority. Each receiving user or host supplies and authorizes its own access.
_Avoid_: Credential sharing, connection cloning, inherited authority

**Capability Composition**:
An agent's task-specific selection and combination of Caplets across backend systems. The agent determines the path from the current task rather than following a predefined human-authored automation.
_Avoid_: Workflow builder, fixed integration pipeline, automation recipe

**Agent Portability**:
The ability to reuse the same Caplet definitions across supported coding-agent environments without redefining their backend capabilities. Agent-specific surfaces may differ, and credentials remain independently authorized.
_Avoid_: Identical client experience, automatic credential portability, universal client parity

**Caplet Activation**:
The first successful backend operation executed through a configured Caplet. A website interaction, catalog view, installation, or setup completion is not activation.
_Avoid_: Install conversion, setup completion, first page view

**Code Mode**:
A Caplets exposure surface where configured backends appear as typed handles inside a bounded script workflow.
_Avoid_: JavaScript shell, Node REPL, sandbox boundary
Expand Down
12 changes: 10 additions & 2 deletions PRODUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,19 @@ product

## Users

Caplets serves developers working with coding agents and tool ecosystems. The primary audience is split between agent power users who run many MCP servers, APIs, and local tools, and tool builders who package focused capability domains for agents or teams. Users are usually in a technical workflow: configuring integrations, inspecting available capabilities, debugging setup, or helping an agent choose the right tool without flooding context.
Caplets primarily serves agent power users who want their coding agent to work across the systems surrounding the repository. Teams are the expansion audience: they standardize and distribute approved Caplets. Tool builders and community authors are the ecosystem audience: they package reusable capability definitions for others. Users are usually connecting backends, authorizing access, reusing Caplets across supported agents, or inspecting exactly what a capability exposes.

## Product Purpose

Caplets turns sprawling tool stacks into focused capability cards for coding agents. It exists to reduce context bloat, improve tool discovery, preserve downstream capability fidelity, and make heterogeneous backends feel like one coherent progressive-disclosure interface. Success looks like agents choosing the right capability quickly, users trusting what is exposed and hidden, and builders being able to package tools without writing bespoke agent integration code.
Caplets is the capability layer for coding agents. It turns heterogeneous MCP servers, APIs, and commands into intentionally exposed, reusable Caplets that agents can select and combine for the task at hand. Success means an agent can carry work across the user's authorized stack, the same Caplet definitions can be reused without transferring credentials, and Code Mode keeps the resulting decision surface focused without reducing backend fidelity.

## Positioning

**Category:** The capability layer for coding agents.

**Promise:** Give your coding agent the whole stack.

**Meaning:** Whole Stack is the set of backend capabilities a user intentionally exposes through Caplets—not blanket authority, inherited credentials, or the current contents of the public catalog. Connection breadth is the primary proof; agent portability and capability sharing are the supporting promises; Code Mode efficiency and benchmarked token reduction are technical evidence.

## Brand Personality

Expand Down
26 changes: 16 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
<h1>Caplets</h1>

<p>
<strong>Give your agent capabilities, not giant tool walls.</strong><br />
Caplets wraps MCP servers, APIs, and commands behind focused capability cards.
<strong>Give your coding agent the whole stack.</strong><br />
The capability layer for coding agents.
</p>

<p>
Expand All @@ -25,20 +25,26 @@

---

Caplets gives coding agents a Code Mode surface for MCP servers, APIs, and commands. Instead
of exposing every downstream operation as a giant tool list, each backend becomes a typed
`caplets.<id>` handle the agent can inspect, search, call, filter, join, and summarize inside
one compact workflow.
Caplets turns MCP servers, APIs, and commands into reusable capabilities your coding agent
can use from issue to production. You choose what each agent can access. A Caplet definition
can stay local, work across supported agent environments, or be shared without transferring
credentials or authenticated authority.

Progressive discovery is still available when you want visible wrapper tools, but Code Mode is
the default exposure for configured backends.
Code Mode is the default exposure: each configured backend becomes a typed `caplets.<id>`
handle the agent can inspect, search, call, filter, join, and summarize inside one compact
workflow. Progressive and direct exposure remain available when a client or task needs them.

Caplets can wrap:

- MCP servers
- OpenAPI, GraphQL, and simple HTTP APIs
- OpenAPI APIs
- Google Discovery APIs
- GraphQL and simple HTTP APIs
- Curated repository CLI commands
- Shared Caplet files from this repo's `caplets/` catalog
- Shared Caplet Files from the public catalog or another source

The catalog is a discovery and distribution channel, not the boundary of what Caplets can
connect. Each receiving host supplies and authorizes its own access.

## Quick Start

Expand Down
20 changes: 14 additions & 6 deletions STRATEGY.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
---
name: Caplets
last_updated: 2026-06-17
last_updated: 2026-07-26
---

# Caplets Strategy

## Target problem

Coding agents get slower, more expensive, and less reliable when real backend surfaces are exposed as flat tool lists: large MCP/API setups flood context with hundreds of operations, create duplicate generic names, and force repeated model/tool round trips for discovery, schema inspection, execution, and synthesis. The hard part is preserving exact backend power, auth state, schemas, resources, prompts, results, and errors across local, remote, Cloud, and native agent setups without making the agent reason over the whole tool wall up front.
Coding agents stop where the repository ends. Users become the human integration layer: they carry issue context into the agent, inspect dashboards themselves, trigger operations, and update external systems after the code changes. Connecting more systems can then overwhelm the agent with flat tool lists, giant schemas, repeated auth setup, and extra model/tool round trips. The hard part is giving an agent broad, reusable capability access while preserving exact backend semantics and deliberate user control.

## Our approach

Caplets wins by being a Code Mode-first capability layer for coding agents, not a general tool catalog. It turns heterogeneous backends into typed, scoped handles so agents can discover, inspect, execute, filter, and summarize with a small decision surface, while preserving exact backend semantics and keeping auth, direct I/O, and project-local context behind Caplet-controlled boundaries.
Caplets wins by being the capability layer for coding agents. It turns heterogeneous MCP servers, APIs, commands, and shared Caplet Files into intentionally exposed, reusable capabilities that an agent can select and combine for the current task. Code Mode is the default mechanism for keeping that Whole Stack focused: typed, scoped handles preserve backend fidelity while auth, direct I/O, and project-local context remain behind Caplet-controlled boundaries.

## Who it's for

**Primary:** Agent power-users/builders - They're hiring Caplets to turn sprawling MCP/API/CLI surfaces into typed capabilities their coding agents can inspect, call, filter, and synthesize without a giant tool wall.
**Primary:** Individual agent power users who want their coding agent to work across the systems surrounding the repository. **Expansion:** Teams that standardize and distribute approved Caplets. **Ecosystem:** Tool builders and community authors who publish reusable capability definitions.

## Key metrics

- **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation.
- **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work.
Comment on lines +22 to +23

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align “Caplet Activation” with the intended activation milestone.

This currently counts only the first successful backend operation, but the PR objective defines activation as that success followed by connecting a capability from the user’s own stack. Define the follow-up connection in this metric, or split first execution and activation into separate events; otherwise retention and activation reporting will use the wrong cohort.

Proposed wording
-- **Caplet Activation** - The first successful backend operation executed through a configured Caplet.
+- **Caplet Activation** - A first successful backend operation followed by connecting a capability from the user's own stack.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation.
- **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work.
- **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation.
**Caplet Activation** - A first successful backend operation followed by connecting a capability from the user's own stack.
- **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@STRATEGY.md` around lines 22 - 23, Update the “Caplet Activation” definition
in STRATEGY.md to require both the first successful Caplet backend operation and
a subsequent connection of a capability from the user’s own stack.
Alternatively, split first execution and activation into distinct events,
ensuring retention and activation cohorts use the milestone that includes the
follow-up connection.

- **Initial tool surface compression** - Reduction in initially visible tools, serialized payload bytes, approximate context tokens, and duplicate top-level names versus direct flat MCP; measured by `pnpm benchmark:check`.
- **Code Mode workflow efficiency** - Reduction in model/tool round trips, external calls, and payload tokens while preserving required evidence fields; measured by deterministic Code Mode benchmark fixtures.
- **Live task parity at lower token cost** - Live eval pass rate must match baselines before claiming token efficiency, then compare request+output tokens and tool-surface tokens.
Expand Down Expand Up @@ -62,6 +64,12 @@ _Why it serves the approach:_ Caplets asks users to trust a smaller visible surf

## Marketing

**One-liner:** Give your agent capabilities, not giant tool walls.
**Category:** The capability layer for coding agents.

**Key message:** Caplets turns MCP servers, APIs, and commands into focused capability handles for compact coding-agent workflows. The proof point is not just that Caplets connects to more backends; it is that agents can complete real multi-step backend work with a smaller decision surface, fewer round trips, and claims that are checked against reproducible benchmarks.
**One-liner / headline:** Give your coding agent the whole stack.

**Profile description:** Turn MCP servers, APIs, and commands into reusable Caplets your coding agent can use across the work. You control access.

**Key message:** Caplets connects coding agents to intentionally exposed capabilities across the user's stack. A Caplet is reusable across supported agent environments and can be shared without transferring credentials. Agents compose Caplets for the task instead of requiring a fixed automation workflow. Code Mode tool-surface compression, fewer round trips, and benchmarked token reduction are technical proof—not the primary promise.

**Launch sequence:** Whole Stack promise → “MCP. APIs. Commands. All of it.” → human integration-layer problem → capability composition → agent portability → “Share capabilities, not secrets.” → issue-to-production example → Code Mode evidence → first Caplet activation.
21 changes: 13 additions & 8 deletions apps/catalog/src/pages/caplets/[entryKey].astro
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,25 @@ const entry = entryKey ? await getCatalogEntry(entryKey, getCatalogEnv()) : unde
if (!entry) {
Astro.response.status = 404;
}
const pageTitle = entry ? `${entry.name} — Shared Caplet` : "Caplet unavailable";
const pageDescription = entry
? `${entry.description} Inspect this shared Caplet before installing, then authorize access on your host.`
: "This shared Caplet is unavailable or no longer indexed.";
---

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{entry ? `${entry.name} - Caplets Catalog` : "Caplet unavailable"}</title>
<meta
name="description"
content={entry
? entry.description
: "This catalog entry is unavailable, suppressed, or no longer indexed."}
/>
<title>{pageTitle} — Caplets Catalog</title>
<meta name="description" content={pageDescription} />
<meta property="og:title" content={`${pageTitle} — Caplets Catalog`} />
<meta property="og:description" content={pageDescription} />
<meta property="og:type" content="website" />
<meta property="og:url" content={Astro.url.href} />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Request-derived social URL

Using Astro.url.href publishes the incoming hostname and query string as og:url, so shares made through preview hosts or tracking URLs advertise a request-specific address instead of the stable production catalog entry. Build this value from the configured catalog site and entry path, consistent with the catalog index metadata.

Knowledge Base Used: Dashboard and Catalog Apps

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Codex

<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content={`${pageTitle} — Caplets Catalog`} />
<meta name="twitter:description" content={pageDescription} />
<ThemeInit />
<link rel="icon" type="image/png" href="/icon.png" />
</head>
Expand Down
30 changes: 25 additions & 5 deletions apps/catalog/src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,23 @@ const entries = await listCatalogEntries(getCatalogEnv());
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Caplets Catalog</title>
<title>Shared Caplets — Caplets Catalog</title>
<meta
name="description"
content="Search official and community Caplets, inspect source content, and copy supported install commands."
content="Find reusable Caplet definitions for coding agents. Inspect every source before installing, then authorize access on your own host."
/>
<meta property="og:title" content="Shared Caplets — Caplets Catalog" />
<meta
property="og:description"
content="Find reusable Caplet definitions for coding agents. Share capabilities without sharing credentials."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://catalog.caplets.dev/" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Shared Caplets — Caplets Catalog" />
<meta
name="twitter:description"
content="Find reusable Caplet definitions for coding agents. Share capabilities without sharing credentials."
/>
<ThemeInit />
<link rel="icon" type="image/png" href="/icon.png" />
Expand All @@ -29,10 +42,17 @@ const entries = await listCatalogEntries(getCatalogEnv());
<a class="skip-link" href="#catalog-results">Skip to results</a>
<CatalogHeader search={{ count: entries.length, value: Astro.url.searchParams.get("q") ?? "" }} />
<main class="mx-auto w-[min(1180px,calc(100vw_-_2rem))] py-4 max-sm:w-[min(1180px,calc(100vw_-_1.25rem))] max-sm:py-3">
<section class="catalog-intro" role="note">
<strong>Not security-reviewed.</strong>
<span>Inspect Caplets before installing.</span>
<section class="catalog-positioning" aria-labelledby="catalog-title">
<p>The capability layer for coding agents</p>
<h1 id="catalog-title">Find a capability. Make it yours.</h1>
<span>
Search reusable Caplet definitions and operating guidance. The catalog is one distribution channel—not the boundary of what Caplets can connect.
</span>
</section>
<aside class="catalog-intro" role="note">
<strong>Not security-reviewed.</strong>
<span>Inspect every Caplet before installing. Credentials and access never transfer with a shared Caplet.</span>
</aside>
<div id="catalog-results">
<SearchShell entries={entries} />
</div>
Expand Down
30 changes: 30 additions & 0 deletions apps/catalog/src/styles/catalog.css
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,36 @@
padding: 0.875rem;
}

.catalog-positioning {
display: grid;
max-width: 52rem;
gap: 0.65rem;
margin: 1.5rem 0 1.25rem;
}

.catalog-positioning p {
color: var(--accent);
font-size: 0.875rem;
font-weight: 650;
}

.catalog-positioning h1 {
color: var(--foreground);
font-size: 2rem;
font-weight: 650;
line-height: 1.15;
letter-spacing: -0.03em;
text-wrap: balance;
}

.catalog-positioning span {
max-width: 68ch;
color: var(--muted-foreground);
font-size: 1rem;
line-height: 1.65;
text-wrap: pretty;
}

.catalog-intro {
display: flex;
flex-wrap: wrap;
Expand Down
16 changes: 10 additions & 6 deletions apps/docs/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
---
title: Caplets
description: Give coding agents Code Mode capabilities without a giant tool wall.
description: Give your coding agent the whole stack through reusable, controlled Caplets.
---

Caplets wraps MCP servers, APIs, and commands into focused capabilities for coding agents.
Code Mode is the default surface: each configured backend becomes a typed <code className="caplets-token">caplets.&lt;id&gt;</code>
handle that an agent can inspect, search, call, filter, and summarize in one workflow.
Caplets is the capability layer for coding agents. Turn MCP servers, OpenAPI and Google
Discovery APIs, GraphQL endpoints, simple HTTP actions, and curated CLI commands into
reusable Caplets your agent can use across the work surrounding your code.

Use Caplets with Codex, Claude, OpenCode, Pi, or any MCP client that can launch a local
stdio server.
Your Whole Stack is the set of capabilities you intentionally expose through Caplets—not
blanket access to every system or credential. Caplet definitions can be reused across
Codex, Claude, OpenCode, Pi, and supported MCP clients while each host independently
supplies and authorizes access.

Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Document Caplet handles, not backend handles.

The Code Mode declaration generator creates caplets.<id> properties from configured Caplets and their caplet.id values, not directly from backend instances. Change “each configured backend” to “each configured Caplet” so users do not infer a one-to-one backend/handle mapping.

Proposed wording
-Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle
+Code Mode is the default surface: each configured Caplet becomes a typed `caplets.<id>` handle
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them.
Code Mode is the default surface: each configured Caplet becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/docs/src/content/docs/index.mdx` at line 15, Update the Code Mode
description to say that each configured Caplet becomes a typed caplets.<id>
handle, replacing the inaccurate reference to each configured backend while
preserving the rest of the explanation.


> **Required upgrade migration:** If this host ran `caplets@0.25.x` or earlier, do not
> start `caplets@0.26.0` or later until you complete the
Expand Down
Loading
Loading