Changelog
View SourceAll notable changes to lemon_ai are documented here.
The format follows Keep a Changelog;
releases follow Semantic Versioning from 0.1.0 onward.
[Unreleased]
First release as a standalone package. lemon_ai was extracted from the Lemon
umbrella, where it lives as the :lemon_ai application; the OTP application name and
every LemonAi.* module name are unchanged, so only the mix.exs line differs from
what in-repo code has been using.
Added
LemonAi.stream/3andLemonAi.complete/3— one API over eighteen provider modules (Anthropic, OpenAI completions and responses, Azure OpenAI, Google Gemini and Vertex, AWS Bedrock, Mistral, Groq, Fireworks, OpenRouter, Qwen, MiniMax, GitHub Copilot, and the Codex/Gemini CLI bridges), with streaming events normalized to the same shapes regardless of provider.LemonAi.ProviderRegistryfor registering and resolving providers at runtime, so a host application can add a provider without a fork.- Reliability layer around every call:
LemonAi.RateLimiter(per-provider token and request budgets),LemonAi.CircuitBreaker(opens on repeated provider failure and half-opens on a timer), and per-provider retry with respect forRetry-After. LemonAi.CompactingClientandLemonAi.ContextCompactor— context-window management that summarizes and drops history rather than failing the call.LemonAi.TokensandLemonAi.Textfor token accounting and text extraction, andLemonAi.calculate_cost/2for per-call cost from the model's price table.LemonAi.Modelscatalogue plusLemonAi.ModelCache, covering model IDs, context windows, capabilities and pricing.LemonAi.Envdeclares the 28 environment variables this package reads — provider credentials, endpoint overrides and client tuning — each with a type, default, documentation string and a secret flag. It is self-describing on its own and is picked up automatically byLemonCore.Envwhen both packages are present.mix lemon.modelslists the catalogue from the command line.
Notes
lemon_aidepends on no other Lemon package. It is usable on its own in any Elixir project;lemon_agentand the rest of the platform build on top of it.