Migration Guide: 1.x → 2.0#

Llamatik 2.0 introduces a new :sdk module that extracts all reusable business logic into a clean, UI-agnostic, publishable library. The low-level C++ bridges (LlamaBridge, WhisperBridge, StableDiffusionBridge, MultimodalBridge) are unchanged — you only need to update Gradle dependency coordinates and import paths.

Step 1 — Update Gradle dependencies#

Before (1.x)#

implementation("com.llamatik:library:<version>")

After (2.0)#

// Core inference layer — all JNI bridges (API unchanged)
implementation("com.llamatik:core:<version>")

// Business logic SDK — chat, models, RAG, agents, assistant facade
implementation("com.llamatik:sdk:<version>")

// Agent Platform runtime (optional) — AgentRuntime, permissions, workflows
implementation("com.llamatik:sdk-agent:<version>")

Step 2 — Update package imports#

1.x Package2.0 Package
com.llamatik.library.*com.llamatik.core.* or com.llamatik.sdk.*
com.llamatik.app.feature.chatbot.model.*com.llamatik.sdk.model.*
com.llamatik.app.feature.chatbot.utils.*com.llamatik.sdk.chat.*
com.llamatik.app.feature.chatbot.repositories.*com.llamatik.sdk.model.* or com.llamatik.sdk.chat.*
com.llamatik.app.feature.chatbot.download.*com.llamatik.sdk.download.*
com.llamatik.app.feature.agent.*com.llamatik.sdk.agent.*
com.llamatik.app.feature.entitlement.*com.llamatik.sdk.entitlement.*
com.llamatik.app.common.usecases.*com.llamatik.sdk.usecase.*
com.llamatik.app.platform.ServiceClientcom.llamatik.sdk.http.LlamatikHttpClient

Step 3 — Fix breaking changes#

PromptRenderer — explicit Labels required#

The renderer no longer depends on the app’s getCurrentLocalization(). Pass a Labels object:

// 1.x
PromptRenderer.render(system, contexts, messages, template)

// 2.0
val labels = PromptRenderer.Labels(
    system          = getString(R.string.system),
    user            = getString(R.string.user),
    assistant       = getString(R.string.assistant),
    relevantContext = getString(R.string.relevant_context),
)
PromptRenderer.render(system, contexts, messages, template, labels)

ModelsRepository — requires LlamatikFileAccess#

// 1.x
val repo = ModelsRepository(serviceClient)

// 2.0
val repo = ModelsRepository(
    fileAccess = myFileAccess,    // implement LlamatikFileAccess for your platform
    httpClient = LlamatikHttpClient(),
)

ChatRunner — Labels injected#

// 1.x
ChatRunner.stream(session, system, contexts, messages, template, ...) { ... }

// 2.0
val labels = PromptRenderer.Labels(/* localised strings */)
ChatRunner.stream(session, system, contexts, messages, template, labels = labels) { ... }

Type mapping — Chat & Prompts#

1.x2.0
com.llamatik.app.feature.chatbot.utils.ChatMessagecom.llamatik.sdk.chat.ChatMessage
com.llamatik.app.feature.chatbot.utils.PromptTemplatecom.llamatik.sdk.chat.PromptTemplate
com.llamatik.app.feature.chatbot.utils.Plaincom.llamatik.sdk.chat.Plain
com.llamatik.app.feature.chatbot.utils.Gemma3com.llamatik.sdk.chat.Gemma3
com.llamatik.app.feature.chatbot.utils.Llama3Instructcom.llamatik.sdk.chat.Llama3Instruct
com.llamatik.app.feature.chatbot.utils.QwenChatcom.llamatik.sdk.chat.QwenChat
com.llamatik.app.feature.chatbot.utils.PromptRenderercom.llamatik.sdk.chat.PromptRenderer
com.llamatik.app.feature.chatbot.utils.ChatRunnercom.llamatik.sdk.chat.ChatRunner
com.llamatik.app.feature.chatbot.utils.chunkText()com.llamatik.sdk.rag.chunkText()

Type mapping — Models#

1.x2.0
com.llamatik.app.feature.chatbot.model.LlamaModelcom.llamatik.sdk.model.LlamaModel
com.llamatik.app.feature.chatbot.model.GenerateSettingscom.llamatik.sdk.model.GenerateSettings
com.llamatik.app.feature.chatbot.model.ModelSourcecom.llamatik.sdk.model.ModelSource
com.llamatik.app.feature.chatbot.repositories.ModelsRepositorycom.llamatik.sdk.model.ModelsRepository
com.llamatik.app.feature.chatbot.repositories.ChatHistoryRepositorycom.llamatik.sdk.chat.ChatHistoryRepository
com.llamatik.app.feature.chatbot.repositories.ChatSessioncom.llamatik.sdk.chat.ChatSession
com.llamatik.app.feature.chatbot.usecases.GetModelsUseCasecom.llamatik.sdk.model.GetModelsUseCase
com.llamatik.app.feature.chatbot.usecases.ImportModelUseCasecom.llamatik.sdk.model.ImportModelUseCase
com.llamatik.app.feature.chatbot.download.ModelDownloadOrchestratorcom.llamatik.sdk.download.ModelDownloadOrchestrator
com.llamatik.app.feature.chatbot.download.DownloadEventcom.llamatik.sdk.download.DownloadEvent

Type mapping — Agent#

1.x2.0
com.llamatik.app.feature.agent.AgentToolcom.llamatik.sdk.agent.AgentTool
com.llamatik.app.feature.agent.AgentToolResultcom.llamatik.sdk.agent.AgentToolResult
com.llamatik.app.feature.agent.AgentExecutorcom.llamatik.sdk.agent.AgentExecutor
com.llamatik.app.feature.agent.ToolRegistrycom.llamatik.sdk.agent.ToolRegistry
com.llamatik.app.feature.agent.ToolCallParsercom.llamatik.sdk.agent.ToolCallParser
com.llamatik.app.feature.agent.AgentFeatureFlagscom.llamatik.sdk.agent.AgentFeatureFlags
com.llamatik.app.feature.agent.AgentActionLogRepositorycom.llamatik.sdk.agent.AgentActionLogRepository
com.llamatik.app.feature.agent.ToolPermissionRepositorycom.llamatik.sdk.agent.ToolPermissionRepository

Type mapping — RAG / Vector Store#

1.x2.0
com.llamatik.app.feature.chatbot.utils.VectorStoreItemcom.llamatik.sdk.rag.VectorStoreItem
com.llamatik.app.feature.chatbot.utils.VectorStoreDatacom.llamatik.sdk.rag.VectorStoreData
com.llamatik.app.feature.chatbot.utils.PersistedRagStorecom.llamatik.sdk.rag.PersistedRagStore
com.llamatik.app.feature.chatbot.utils.retrieveContext()com.llamatik.sdk.rag.retrieveContext()
com.llamatik.app.feature.chatbot.utils.cosineD()com.llamatik.sdk.rag.cosineD()
com.llamatik.app.feature.chatbot.utils.mmr()com.llamatik.sdk.rag.mmr()

New in 2.0#

Once migrated, explore the new capabilities: