mirror of
https://github.com/rookiestar28/ComfyUI-OpenClaw.git
synced 2026-08-14 00:48:07 +00:00
97 lines
4.0 KiB
Markdown
97 lines
4.0 KiB
Markdown
# ADR-0002: Product Boundary And Packaging Contract
|
|
|
|
- Status: Accepted
|
|
- Date: 2026-04-23
|
|
- Owners: OpenClaw maintainers
|
|
- Related roadmap items: `R160` with follow-up execution in `R161` and `R162`
|
|
|
|
## Context
|
|
|
|
OpenClaw started as a ComfyUI-focused node pack, but the repository now also contains:
|
|
|
|
- embedded HTTP APIs and operator UI surfaces,
|
|
- a standalone Remote Admin Console route,
|
|
- connector runtime code for multiple chat platforms,
|
|
- split control-plane governance for higher-risk deployments.
|
|
|
|
That evolution made one question increasingly ambiguous: what is the supported identity of this repo/package today, and which parts are first-class versus optional attached subsystems?
|
|
|
|
Without a boundary decision, future work such as config decomposition, connector extraction, or packaging hygiene is forced to rely on repo intuition instead of an explicit contract.
|
|
|
|
## Decision
|
|
|
|
OpenClaw is defined as a **ComfyUI custom node pack** first, with two explicit first-class identities layered on top of that package:
|
|
|
|
1. **ComfyUI custom node pack**
|
|
- This is the primary distribution artifact and runtime anchor.
|
|
- `__init__.py` remains the package entrypoint loaded from `custom_nodes/`.
|
|
|
|
2. **embedded operator platform**
|
|
- In-process OpenClaw APIs, runtime/security governance, sidebar UX, and remote admin surfaces are treated as part of the shipped package, not as separate products.
|
|
|
|
3. **connector-capable control surface**
|
|
- Remote chat control is supported through the in-repo connector sidecar, but the connector remains an **optional attached subsystem**, not the primary package artifact.
|
|
|
|
## Core vs Attached Subsystems
|
|
|
|
Core to the package:
|
|
|
|
- custom node pack entrypoint and exported nodes
|
|
- embedded API/runtime governance (`/openclaw/*`, route bootstrap, control-plane policy)
|
|
- embedded operator UI surfaces (sidebar plus `/openclaw/admin`)
|
|
|
|
Optional attached subsystem:
|
|
|
|
- connector sidecar (`python -m connector`) and platform-specific adapters
|
|
|
|
This means:
|
|
|
|
- the connector is supported and intentionally in-repo,
|
|
- but the repo is **not** currently defined as a connector-first distribution,
|
|
- and the repo is **not** currently defined as a standalone generic backend independent of ComfyUI.
|
|
|
|
## Supported Topologies
|
|
|
|
Supported:
|
|
|
|
1. **embedded local/lan**
|
|
- OpenClaw runs inside the ComfyUI process as the primary package artifact.
|
|
|
|
2. **embedded package with split high-risk control plane**
|
|
- The same package stays primary, while higher-risk control surfaces are externalized according to the split-mode contract.
|
|
|
|
3. **embedded package plus optional connector sidecar**
|
|
- The connector runs as a companion process that calls the local OpenClaw APIs.
|
|
|
|
Unsupported as first-class package identities today:
|
|
|
|
1. **connector-only distribution**
|
|
2. **standalone non-ComfyUI backend package**
|
|
|
|
Those possibilities are future design questions, not current promises. Connector extraction feasibility remains explicitly deferred to `R162`.
|
|
|
|
## Consequences
|
|
|
|
Positive:
|
|
|
|
- future extraction/pruning decisions now have one explicit contract to evaluate against
|
|
- docs and contributor discussions can use the same terms instead of mixing "node pack", "server", and "sidecar" loosely
|
|
- `R161` and `R162` can narrow their scope around a known boundary instead of re-litigating product identity
|
|
|
|
Trade-offs:
|
|
|
|
- the repo still carries multiple execution surfaces inside one codebase
|
|
- connector remains intentionally attached even though it is operationally separable
|
|
- some public docs must stay careful not to imply standalone server packaging that does not exist yet
|
|
|
|
## Rejected Alternatives
|
|
|
|
1. Treat the connector as an equal primary package artifact today
|
|
- Rejected because there is no separate connector package/distribution contract yet.
|
|
|
|
2. Define OpenClaw as a generic standalone backend package
|
|
- Rejected because current runtime ownership still assumes a ComfyUI host process.
|
|
|
|
3. Keep the boundary implicit and rely on contributor convention
|
|
- Rejected because packaging and extraction follow-ups now depend on an explicit contract.
|