All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project follows Semantic Versioning.
[Unreleased]
Added
- Extensible adapter platform: third-party adapters are discovered via the
aphrodite.adaptersentry-point group, with a typedAdapterSpeccontract and fail-louddiscover_adapter_specs(). - Adapter route seam: a discovered adapter can contribute a FastAPI router, auto-mounted under
/<system>. - Public SDK (
aphrodite.sdk) and testing kit (aphrodite.testing) for adapter authors. - Embeddable
create_app(config=, root_path=)factory for mounting Aphrodite inside a larger app. - Per-adapter lifespan with failure isolation and a configurable timeout.
- Per-adapter namespaced configuration via
adapter_env(), plus theAPHRODITE_MODULES=+nameappend form. aphrodite run --adapterdev-runner (no install required; uvicorn reload).aphrodite scaffoldgenerates an installable adapter package with a FastAPI router and tests.- Adapter load/mount/lifespan errors surfaced in
/status;doctoradapter lint and dependency-health check. - MCP: discovered adapters exposed via the
aphrodite_adaptersandaphrodite_dispatchtools. aphrodite update/aphrodite versioncommands.- Daily “update available” notification (opt out via
APHRODITE_NO_UPDATE_NOTIFIER=1). - One-line
install.shinstaller/updater. doctorreports whether a newer version is available.
Changed
- Adapter
handle()responses standardized on the{"ok": ...}dialect; the legacyhandledkey was dropped (breaking for adapters that readhandled).
Fixed
- macOS staleness check no longer depends on GNU
date -d; service timestamps are parsed in pure Python.
Security
- Mounted adapter routers require bearer-token auth by default (
APHRODITE_ADAPTER_AUTH_TOKEN). APHRODITE_TRUSTED_ADAPTERSallowlist plus mount-time quarantine, so a failing adapter cannot crash startup.- Adapter trust model documented in
SECURITY.md.