invoke, streaming, tools, errors).
Building a third-party plugin without forking Charm? See Custom Adapters (entry points + custom image). This page is for core contributors adding official adapters to the charmos package.
When to add an adapter to core
Add to the SDK when the framework is widely used and should ship with official runner images and first-class docs. Niche or experimental integrations should stay as entry-point plugins in separate packages.Community plugin path (preferred for most authors)
- Publish a pip package with
[project.entry-points."charm.adapters"] - Ship a Docker image with that package installed
- Set
runtime.custom_image+runtime.adapter.typeincharm.yaml
Core contributor path
- Study the closest adapter in
src/charm/adapters/ - Implement
BaseAdapter - Register in
pyproject.tomlunder[project.entry-points."charm.adapters"] - Add/update Dockerfile if a dedicated runner image is needed
- Add tests and adapter docs under
docs/adapters/ - Update
charm-community-plugin/templates/registry.jsonif a new starter template is warranted
