Async-Only Consumer Constraint Creates Ecosystem Incompatibility
Sources: 1 • Confidence: High • Updated: 2026-04-01 03:38
Key takeaways
- LLM plugins can define models in both synchronous and asynchronous forms.
- The llm-all-models-async plugin converts synchronous models into asynchronous models using a thread pool.
- This sync-to-async conversion required an additional LLM plugin hook mechanism that shipped in LLM 0.30.
- Async model variants are usually used for API-backed models, while sync variants more often run the model directly inside the plugin.
- Version 0.1 of the llm-all-models-async plugin has been released.
Sections
Async-Only Consumer Constraint Creates Ecosystem Incompatibility
- LLM plugins can define models in both synchronous and asynchronous forms.
- The llm-mrchatterbox plugin is synchronous only.
- Datasette can only use asynchronous models, which blocks use of sync-only plugins for features such as datasette-enrichments-llm.
Adapter Mechanism: Thread-Pool Sync-To-Async Bridging
- The llm-all-models-async plugin converts synchronous models into asynchronous models using a thread pool.
- Version 0.1 of the llm-all-models-async plugin has been released.
Platform Extensibility Change Enabling The Adapter
- This sync-to-async conversion required an additional LLM plugin hook mechanism that shipped in LLM 0.30.
Operational Mapping Between Interface Choice And Model Hosting Mode
- Async model variants are usually used for API-backed models, while sync variants more often run the model directly inside the plugin.
Unknowns
- What are the concurrency, latency, and resource-usage characteristics of the thread-pool conversion under realistic load (e.g., thread exhaustion behavior, throughput limits, queuing effects)?
- Which specific LLM 0.30 hook(s) are required by the adapter, and what is the minimal supported LLM version for llm-all-models-async?
- Does the sync-to-async conversion preserve error semantics, cancellation behavior, and streaming/token-yielding behavior (if applicable) expected by async consumers?
- Which sync-only plugins beyond llm-mrchatterbox are intended to be supported, and are any model classes excluded from conversion (by design or limitation)?
- Does Datasette integration (e.g., datasette-enrichments-llm) work end-to-end when using a converted sync model via llm-all-models-async?