Deploy Your Model
Master the ZETIC.MLange deployment pipeline, from artifact management to on-device integration.
Deployment Pipeline Overview
ZETIC.MLange offers flexible interfaces for managing your MLOps workflow. Select the tool that fits your stage of development:
Web Dashboard
Interactive GUI for initial project setup and visual model management.
CLI
Headless automation tool designed for CI/CD integration.
Prerequisites
A one-time initial setup via the Web Dashboard is required before enabling CLI automation.
Artifact Management
Repository Structure
A Repository acts as the version control container for a specific model lineage. It maintains distinct versions of your artifacts.
username/my-model-repository
├── v1 (uploaded 2024-01-15)
├── v2 (uploaded 2024-02-20) ← default
└── v3 (uploaded 2024-03-10) ← latestVersioning Policy:
- Implicit Latest: Clients automatically pull the most recent upload unless pinned.
- Default Pinning: Administrators can designate a specific stable version as
defaultfor production channels. - Immutable History: All uploaded versions are preserved for rollback capabilities.
Model Identifier
Reference models programmatically using the key format: username/repository_name.
// NPU-Accelerated Model Loader
val model = ZeticMLangeModel(
context,
BuildConfig.PERSONAL_KEY,
"USERID/REPOSITORY_NAME" // Automatically resolves to 'default' or 'latest'
)// NPU-Accelerated Model Loader
let model = try ZeticMLangeModel(
personalKey: personalKey,
name: "USERID/REPOSITORY_NAME" // Automatically resolves to 'default' or 'latest'
)// NPU-Accelerated Model Loader
const model = await ZeticMLange.load(
personalKey,
"USERID/REPOSITORY_NAME"
);Deployment Status at MLange Dashboard
Monitor the compilation and optimization status of your artifacts:
| State | Phase Description | Runtime Viability |
|---|---|---|
| N/A | Repository initialized; awaiting binary upload. | ❌ |
| Failed | Validation or compilation error (e.g., ONNX Opset mismatch). | ❌ |
| Converting | Active graph lowering and quantization in progress. | ❌ |
| Optimizing | Functional binary available; throughput tuning active. | ✅ Sub-optimal performance |
| Ready | Fully compiled, tuned, and validated for production. | ✅ Production |
Optimization Latency
Models in the Optimizing state are executable but may not yet utilize the full NPU throughput. Stick to Ready artifacts for performance benchmarking.
Security & Authentication
Personal Key Management
The Personal Key is your persistent credential for SDK authentication and API access. Treat it as a high-value secret.
Provision Credential

- Access Settings → Personal Key in the Dashboard.
- Select Generate New Key.
- Copy Immediately: The key is displayed only once.
Save the key securely
Store this string in a password manager immediately. It cannot be retrieved later.
Environment Configuration
Inject the key into your build system securely. Do not hardcode keys in source files.
1. Local Properties
Add to local.properties (ensure this file is in .gitignore):
MLANGE_PERSONAL_KEY=sk_live_...2. Gradle Injection
Expose as a BuildConfig field in app/build.gradle.kts:
android {
defaultConfig {
val properties = Properties()
if (project.rootProject.file("local.properties").exists()) {
properties.load(project.rootProject.file("local.properties").inputStream())
}
buildConfigField(
"String",
"PERSONAL_KEY",
"\"${properties.getProperty("MLANGE_PERSONAL_KEY", "")}\""
)
}
}1. Configuration File
Create Config.xcconfig and add to .gitignore:
MLANGE_PERSONAL_KEY = sk_live_...2. Info.plist Interpretation
Map the variable in Info.plist:
<key>MLangePersonalKey</key>
<string>$(MLANGE_PERSONAL_KEY)</string>SDK Initialization
Instantiate the model container using the injected credential.
val model = ZeticMLangeModel(
context,
BuildConfig.PERSONAL_KEY, // Injected at build time
"USERID/REPOSITORY_NAME"
)// Robust retrieval from Bundle
guard let personalKey = Bundle.main.object(forInfoDictionaryKey: "MLangePersonalKey") as? String else {
fatalError("MLangePersonalKey missing in Info.plist")
}
let model = try ZeticMLangeModel(
personalKey: personalKey,
name: "USERID/REPOSITORY_NAME"
)Security best practices
- Never commit
local.properties(Android) or.xcconfig(iOS) files to version control - Add them to
.gitignoreimmediately:# Android local.properties # iOS Config.xcconfig *.xcconfig - Rotate keys regularly
- Revoke compromised keys immediately in the Web Dashboard