Plugins
March 8, 2026 ยท View on GitHub
Cartero discovers local plugin manifests from the plugins/ directory.
Plugin manifests describe trust boundaries and capabilities. First-party plugins in this repo also have corresponding Go command implementations that operate entirely on local workspace data by default.
Manifest schema
schema_version: v1
name: local-preview
version: 1.0.0
kind: renderer
mode: local-only
safe: true
capabilities:
- preview.render
trust:
level: first-party
review_required: false
description: Writes previews into a local review sink.
Required fields
schema_version: currently must bev1name: lowercase plugin identifier using letters, digits, and hyphensversion: semantic version such as1.0.0kind:renderer,content-pack,importer,exporter, orintegrationmode:local-only,operator-review, orexternal-servicesafe: whether the plugin stays within Cartero's safe local execution boundarycapabilities: one or more declared extension pointstrust.level:first-party,reviewed, orunreviewedtrust.review_required: must betruefor unreviewed or external-service plugins
Capability catalog
preview.render: render local previews or review artifactscampaign.template: provide reusable campaign or landing-page contentcampaign.import: ingest source content into Cartero campaign draftsaudience.sync: sync local or remote audience segment definitionsresults.export: write operator or executive reporting outputsevents.ingest: collect reported-mailbox or training telemetrywebhook.deliver: emit signed campaign lifecycle events
Validation rules
- capabilities must be compatible with the declared
kind safe: trueis only valid forlocal-onlyandoperator-reviewpluginstrust.review_requiredmust staytruewhensafe: false,mode: external-service, ortrust.level: unreviewed- invalid manifests are reported with field-level diagnostics during discovery and
doctor
Goals
- make available integrations visible to operators
- keep the CLI offline-first and easy to audit
- support future extension points without coupling the command layer to one transport
Usage
cartero plugin list
cartero plugin sync
Built-in plugins
local-preview: renders local previews and review outputtemplate-library: seeds a curated local template pack into the embedded workspace storeclone-importer: converts reviewed.emlor raw message files into safe Cartero draftsanalytics-export: exports workspace analytics to JSON or CSVaudience-sync: imports local CSV segments into the embedded workspace storeengagement-recorder: stores non-sensitive engagement telemetry for reporting
Embedded workspace state
First-party plugins use the embedded SQLite workspace store at .cartero/cartero.sqlite. This replaces the old MongoDB-dependent model with a portable local database that needs no separate service, credentials, or runtime management.
Conformance workflow
- add a workspace fixture under
internal/plugin/conformance/testdata/workspaces/<plugin-name>/plugins/ - capture the expected plain-text operator output in
plugin-list.plain.golden - register the fixture in
internal/plugin/conformance/harness_test.go - run
go test ./...to execute manifest validation, fixture loading, and golden output checks
This workflow runs in CI through the normal Go test step, so new plugins inherit the same contract without extra pipeline wiring.