LlamaLoraAdapterConfigresource andLlamaModelConfig.lora_adaptersLlamaMultimodalConfigresource andLlamaModelConfig.multimodal_config- LoRA adapter loading through the stable
llama.cppadapter API during session open - optional
libmtmdbuild wiring behindGODOT_LLAMA_ENABLE_MTMD LlamaSessioncapability introspection for loaded LoRA adapter count plus image/audio multimodal supportLlamaSession.generate_multimodal_async()for multimodal generation with image/audio inputsLlamaSession.generate_multimodal_messages_async()for message-templated multimodal generationLlamaSession.image_to_media_input()convenience helper forImage-> PNG media dictionariesLlamaSession.get_multimodal_token_count()for completed multimodal requests- in-memory
PackedByteArraymedia input support viadatakey in media input dictionaries MultimodalInput.datafield for passing image/audio bytes without a file path
- Multimodal generation methods are now fully bound and documented
LlamaMultimodalHandle::evaluate_promptaccepts both file-path and in-memory buffer media- Media input dictionaries now accept either
pathordata(or both, withdatataking precedence) - Multimodal submission now validates media dictionary shape, readable file paths, and media-marker counts before enqueuing worker requests
completedstats now includemultimodal_token_countfor multimodal requests- Updated
API.mdwith full multimodal method documentation and media input dictionary format - RAG storage now builds against the vendored libSQL amalgamation instead of the old bundled SQLite path
- RAG retrieval now defaults to exact cosine SQL search over libSQL vector columns
RagCorpusConfigno longer exposesvector_metric; the current public RAG surface is cosine-only- Legacy RAG schema v1
embedding_blobdatabases now migrate to schema v2embedding_vec F32_BLOBstorage on open
- first-class local RAG support
RagCorpusConfig,RagCorpus, andRagAnswerSessionGodot classes- SQLite-backed persistent corpus storage with schema versioning
- deterministic UTF-8 normalization and token-aware chunking
- dedicated embedding pipeline through
libllama - exact dense retrieval with metadata/source filtering, dedupe, and MMR
- grounded prompt assembly with packed-chunk citations
- mock-embedder-backed RAG unit tests and SQLite integration tests
- offline evaluation executable and RAG documentation set
- updated demo project with local corpus ingestion, retrieval preview, and streamed grounded answers
- Initial project structure with CMake/Ninja build system
- CMakePresets.json with dev, release, asan, tsan presets
- llama.cpp integration via pinned submodule (commit
825eb91a6) - godot-cpp integration via pinned submodule (4.6-stable, tag
10.0.0-rc1) src/llama/: Thin C++ wrapper layer around libllamaLlamaModelHandle: shared model ownership with tokenize/detokenizeLlamaContextHandle: move-only context with decode and embeddingsLlamaSamplerHandle: move-only sampler chain with configurable parameters
src/core/: Async runtimeInferenceWorker: background jthread for non-blocking generation- Request queue with cooperative cancellation
- Structured
Errortype with code/message/context - UTF-8 validation and codepoint counting
src/godot/: GDExtension binding layerLlamaModelConfigResource with editor-friendly propertiesLlamaSessionRefCounted with async generation, tokenization, embeddings- Signal-based result delivery via
poll()
- Unit tests (Catch2) for UTF-8, Error, and parameter types
- Minimal Godot demo project
.gdextensionmanifest for Linux, Windows, macOS- Documentation: BUILD.md, ARCHITECTURE.md, API.md