This is the review and distribution hub for trusted Alex Tavern plugins and Experiences. A plugin listed here still runs with the same power as the application itself: curation means full-source review, reproducible packaging, and a fixed SHA-256, not sandboxing.
The framework runtime and SDK live in the main alex-tavern repository. This hub contains source,
catalog metadata, authoring documentation, examples, packaged artifacts, and an MCP server designed
for coding agents.
uv sync
uv run python mcp_server.py --core-root ../alex-tavernThe MCP can read contracts, document structured model calls, scaffold, validate, test, pack, and
inspect plugin traces. Model-backed plugins use the core-owned context.model.call_json gateway;
they never handle provider secrets or payloads. The MCP never runs Git commands or publishes
anything.
The curated Character Converter demonstrates executable commands. Its
/convert-character tool card accepts a visible preset name, free text, or an open Character Card V1/V2/V3
PNG/JSON, validates card metadata locally, and uses the active structured provider to produce a
reviewable native preset draft. It does not use vision, RAG, or automatic persistence.
The curated Before the War Experience is the default bundle for fresh Alex Tavern installs and the one-time application-config v1 to v2 migration. It pins Character Converter 1.1.0, Creme Theme 1.1.0, and Suggestion Preloader 1.0.0. Suggestion Preloader prepares move suggestions after a turn while the player reads, using the existing core suggestion endpoint and frontend SDK.
plugins/grok_supergrok is an unpublished personal prototype
for subscription OAuth and Responses, requiring the current core adapter/router lifecycle SDK.
It has isolated offline tests, but real account eligibility, inference/refresh and billing need a
human-assisted pilot. It is intentionally not added to the curated catalog or published artifacts;
shared-client authorization must be clarified before distribution.
- Character Converter 1.1.0 uses the command descriptor v2 and the core preset-draft renderer.
- Dynamic Character Presence 0.2.0 contributes
/presence, which opens its existing session panel. - Grammar Tools remains an automatic
engine.inputfilter without a settings contribution. It does not add a separate slash action. - OpenRouter remains a provider adapter selected through the existing engine UI; a slash action would duplicate provider configuration and is intentionally out of scope.
Before review, run uv run python check.py --core-root ../alex-tavern. It rejects manifest/source,
artifact hash, Experience media, and core-contract drift.
Plugins that use the same hook compose as a deterministic pipeline: the output of one filter is the
input of the next. The manifest's [order] table supplies the default relationship for all of a
plugin's registrations:
[order]
before = []
after = ["dev.example.translator"]
priority = 10Explicit before/after edges are authoritative. Among registrations without an edge, higher
priority runs first; remaining ties use plugin ID and registration sequence. Cycles are rejected.
Priority controls position, not authority: a later filter can still transform the earlier result.
An unusual plugin may need opposite relationships in different hooks. The backend SDK therefore lets each registration override the manifest defaults:
def setup(context):
context.filter(
"engine.input",
correct_text,
after=("dev.example.translator",),
priority=10,
)
context.filter(
"turn.before_commit",
validate_state,
before=("dev.example.translator",),
priority=100,
)Prefer manifest-level ordering for the common case. Use per-hook overrides only when the behavior
really differs, and cover that composition in plugin tests and trace review. See
docs/hooks.md for the detailed execution rules.
Conversation Translator 1.0.1 uses the typed
conversation boundaries. Grammar Tools 3.0.1 uses the same input contract and runs
before translation. These curated source releases, plus OpenRouter 1.0.1, have deterministic
versioned ZIPs in artifacts/ pinned by catalog.json. Clean Writing pins Grammar Tools 3.0.1.
Older tracked release ZIPs remain unchanged; unpublished or superseded local builds belong in
ignored .dumps/, not catalog entries. Updating this checkout does not publish a remote release.
plugins/codex_oauth is an experimental subscription
OAuth provider requiring the current core credential, router and lifecycle SDK. Its 0.1.1 parser
uses finalized Responses item events gated by successful terminal completion. It remains source-only
in this hub, outside the curated catalog and distributed artifacts. Local account confirmation does
not establish general eligibility, refresh, billing, quota or model quality.