You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/docs/Develop/extensions-author-guide.mdx
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: Author guide for Langflow Extensions
3
3
slug: /extensions-author-guide
4
4
---
5
5
6
-
This guide covers how to design, build, and ship a Langflow Extension Bundle from scratch, plus the conventions that make the result safe to maintain alongside the rest of Langflow. If you just want to get something running, start with [Build your first Langflow Extension](/extensions-quickstart) — that's the three-minute path. Read this when you're ready to publish, port a component out of `lfx.components.<provider>`, or evaluate whether your extension idea fits the v0 contract.
6
+
This guide covers how to design, build, and ship a Langflow Extension Bundle from scratch, plus the conventions that make the result safe to maintain alongside the rest of Langflow. If you just want to get something running, start with [Build your first Langflow Extension](./extensions-quickstart.mdx) — that's the three-minute path. Read this when you're ready to publish, port a component out of `lfx.components.<provider>`, or evaluate whether your extension idea fits the v0 contract.
7
7
8
8
:::info First-delivery scope
9
9
This page documents the first-delivery slice of the Bundle Separation epic (LE-905). It covers the foundation (manifest, single-Bundle loader, atomic-swap reload) plus the pilot migration pattern. The wider Extension System vision — services, routes, registries, partner handover — is described in the project's internal design docs and ships in later epics.
@@ -62,7 +62,7 @@ my-extension/
62
62
63
63
Why two `extension.json` files? The outer one is for the developer running `lfx extension validate` against the source tree. The inner one is the copy that ships **inside the wheel**, so `importlib.metadata.files()` can find it after `pip install`. The two should stay byte-identical; the porting script keeps them in sync.
64
64
65
-
The component path declared in `extension.json` (`bundles[].path`) is the inner `components/<bundle_name>/` directory. Keeping that name aligned with the bundle name lets saved flows that reference the legacy import path migrate cleanly via a single migration-table entry. See [Manifest reference](/extensions-manifest) for the full set of fields.
65
+
The component path declared in `extension.json` (`bundles[].path`) is the inner `components/<bundle_name>/` directory. Keeping that name aligned with the bundle name lets saved flows that reference the legacy import path migrate cleanly via a single migration-table entry. See [Manifest reference](./extensions-manifest.mdx) for the full set of fields.
66
66
67
67
## Authoring rules
68
68
@@ -109,7 +109,7 @@ Atomic-swap reload (Mode A only) is what makes the dev loop tolerable. The five
109
109
4.**Stage 4 — clean up** the staging namespace.
110
110
5.**Stage 5 — notify**. Today this is a logger emission of the added/removed component lists plus a registered post-swap hook that refreshes the component cache; the typed `bundle_reloaded` events pipeline (`ExtensionEventsService`, `GET /api/v1/extensions/events`, the `use-extension-events` React hook) is deferred to LE-1017. The reload route's HTTP response body already carries the typed result, so the palette's reload action gets immediate feedback through the existing mutation hook ([`use-reload-bundle.ts`](https://github.com/langflow-ai/langflow/blob/main/src/frontend/src/controllers/API/queries/extensions/use-reload-bundle.ts)) until the events stream lands.
111
111
112
-
Reload is **not** a trust boundary. Bundle code was trusted at install time; the reload pipeline only handles the swap mechanics. Mode B/C deployments rebuild the Docker image rather than reload — see [Production install pattern for Extensions](/deployment-extensions-production).
112
+
Reload is **not** a trust boundary. Bundle code was trusted at install time; the reload pipeline only handles the swap mechanics. Mode B/C deployments rebuild the Docker image rather than reload — see [Production install pattern for Extensions](../Deployment/deployment-extensions-production.mdx).
113
113
114
114
## Porting an in-tree component
115
115
@@ -138,8 +138,8 @@ If any step fails, the extraction is not done. The dogfood gate especially is no
138
138
139
139
## See also
140
140
141
-
*[Build your first Langflow Extension](/extensions-quickstart) — three-minute scaffold-and-run path.
142
-
*[Manifest reference](/extensions-manifest) — every field accepted by `extension.json`.
143
-
*[Production install pattern for Extensions](/deployment-extensions-production) — Mode B/C Docker image patterns and the seed-directory alternative.
141
+
*[Build your first Langflow Extension](./extensions-quickstart.mdx) — three-minute scaffold-and-run path.
142
+
*[Manifest reference](./extensions-manifest.mdx) — every field accepted by `extension.json`.
143
+
*[Production install pattern for Extensions](../Deployment/deployment-extensions-production.mdx) — Mode B/C Docker image patterns and the seed-directory alternative.
144
144
*[`BUNDLE_API.md`](https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md) — the stable surface bundle code may consume.
145
145
*[`src/bundles/PORTING.md`](https://github.com/langflow-ai/langflow/blob/main/src/bundles/PORTING.md) — the step-by-step porting recipe.
*[Build your first Langflow Extension](./extensions-quickstart.mdx) — three-minute getting-started.
130
+
*[Author guide for Langflow Extensions](./extensions-author-guide.mdx) — long-form authoring guidance, including how to port an existing in-tree component.
Copy file name to clipboardExpand all lines: docs/docs/Develop/extensions-quickstart.mdx
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ slug: /extensions-quickstart
6
6
This guide walks through building, validating, and running your first Langflow Extension Bundle in roughly three minutes. The result is a single-component extension you can pip-install or load via `lfx extension dev` and reload from the palette.
7
7
8
8
:::info First-delivery scope
9
-
This page documents the first-delivery slice of the Bundle Separation epic (LE-905). Multi-bundle extensions, services and routes, remote install, and the curated registry are deferred to later milestones — see [Author guide for Langflow Extensions](/extensions-author-guide) for the full scope picture.
9
+
This page documents the first-delivery slice of the Bundle Separation epic (LE-905). Multi-bundle extensions, services and routes, remote install, and the curated registry are deferred to later milestones — see [Author guide for Langflow Extensions](./extensions-author-guide.mdx) for the full scope picture.
10
10
:::
11
11
12
12
## Prerequisites
@@ -38,7 +38,7 @@ my-extension/
38
38
└── my_component.py
39
39
```
40
40
41
-
The generated `extension.json` already declares `lfx.compat: ["1"]`, so it satisfies the runtime version-constraint check. See [Manifest reference](/extensions-manifest) for every field the schema accepts.
41
+
The generated `extension.json` already declares `lfx.compat: ["1"]`, so it satisfies the runtime version-constraint check. See [Manifest reference](./extensions-manifest.mdx) for every field the schema accepts.
42
42
43
43
## 2. Edit the component
44
44
@@ -91,7 +91,7 @@ lfx extension list --format json
91
91
92
92
Edit the component, save, then click the **Reload** action in the palette's bundle header (or run `lfx extension reload --bundle my_bundle`). The atomic-swap reload pipeline replaces the component in place; in-flight flows keep the pre-swap class so a running execution is never interrupted.
93
93
94
-
Reload only works in Mode A (local dev). Production deployments rebuild the Docker image — see [Production install pattern for Extensions](/deployment-extensions-production).
94
+
Reload only works in Mode A (local dev). Production deployments rebuild the Docker image — see [Production install pattern for Extensions](../Deployment/deployment-extensions-production.mdx).
95
95
96
96
## 6. Ship the extension
97
97
@@ -113,7 +113,7 @@ Discovery happens at server startup; the bundle appears in the palette without f
113
113
114
114
## Where to read next
115
115
116
-
*[Manifest reference](/extensions-manifest) — every field accepted by `extension.json`.
117
-
*[Author guide for Langflow Extensions](/extensions-author-guide) — long-form guidance for porting an in-tree component or building one from scratch.
118
-
*[Production install pattern for Extensions](/deployment-extensions-production) — Mode B/C Docker image patterns and the seed-directory alternative.
116
+
*[Manifest reference](./extensions-manifest.mdx) — every field accepted by `extension.json`.
117
+
*[Author guide for Langflow Extensions](./extensions-author-guide.mdx) — long-form guidance for porting an in-tree component or building one from scratch.
118
+
*[Production install pattern for Extensions](../Deployment/deployment-extensions-production.mdx) — Mode B/C Docker image patterns and the seed-directory alternative.
119
119
*[`BUNDLE_API.md`](https://github.com/langflow-ai/langflow/blob/main/BUNDLE_API.md) — the stable surface bundle code may consume.
0 commit comments