Shared crates for the xfetch ecosystem.
Today this repository contains the public plugin SDK used by the core, official plugins, and third-party plugin authors.
crates/plugin-api: shared protocol crate for xfetch plugins.crates/extension-api: shared protocol crate for xfetch extensions (config providers).crates/effect-api: shared protocol crate for xfetch effects (intro animations over the info lines).docs/: focused documentation for setup, protocol, SDK usage, and examples.
The first public crate in this repository is xfetch-plugin-api.
- Defines the wire protocol used between
xfetchand plugins. - Provides typed helpers for reading requests and writing responses.
- Exposes a stable base for official and third-party plugin development.
crates/effect-api (xfetch-effect-api) is the contract for
effects: installable intro animations. The core renders the info
lines and sends them to an effect binary (xfetch-effect-<name>);
the effect returns a sequence of frames (delay + transformed lines) that the core
plays before settling on the final content. Effect implementations are collected in
the xfetch-cli/effects repository
(the reference decrypt effect lives there).
- Request carries the rendered lines plus
style,duration_ms,fpsand free-formargs. - Response is a non-empty list of
EffectFrame { delay_ms, lines }. - Effects are opt-in: a missing binary or invalid response simply skips the intro (no behavior change).
- This repository owns shared contracts, not end-user config files.
- Official plugins are expected to use the same public SDK as external plugins.
- Protocol changes should land here first and then be adopted by the core and plugin repos.