The mimik Client Library provides a low-level, programmatic interface for interacting with the mim OE Runtime (formerly known as the edge engine). It enables direct control over runtime behavior and integration with decentralized edge-cloud workflows.
-
Onboarding Tutorial
Step-by-step setup and usage guide:
https://devdocs.mimik.com/tutorials/01-submenu/02-submenu/02-index -
API Documentation
Complete reference for available classes, methods, and usage patterns:
https://mimikgit.github.io/cocoapod-EdgeCore/documentation/edgecore/edgecore
The library exposes functionality to:
- Initialize and configure the mim OE Runtime, including local runtime setup, configuration loading, and lifecycle management
- Discover and interact with nodes in a Hybrid Edge Cloud cluster using built-in discovery and service registration APIs
- Deploy and manage RESTful microservices on the edge cloud node using a lightweight container abstraction
- Authenticate and authorize developers and services using token-based flows (OAuth2, JWT)
- Integrate with on-device AI runtimes, allowing local invocation of Vision and Language models without requiring cloud access
- Written for resource-constrained environments (e.g., ARM-based devices, IoT gateways)
- Supports offline-first and peer-to-peer communication paradigms
- Built for decentralized orchestration across edge cloud nodes in distributed environments
- Register and expose a microservice on a local node
- Query cluster topology and fetch metadata from peer nodes
- Secure communication between services using tokens
- Launch a local AI model for image or text inference
This library is intended for developers building distributed edge-native apps where network reliability, low-latency processing, and on-device compute are critical.
Bundle Configurations: Developers now have more control over their deployments with new bundling options. You can choose to integrate the mim OE Runtime into your project based on your specific needs. This includes the flexibility to either include or exclude the AI Runtime, depending on whether your application requires it.
- EdgeCore (required)
- mim-OE-ai-SE-iOS-developer (with AI Runtime)
- mim-OE-SE-iOS-developer (no AI)
- EdgeService (optional)
Generally speaking, developers only need to add the mim-OE-ai-SE-iOS-developer and EdgeCore cocoapods to their projects.
iOS Devices running iOS 16+iOS Simulators running iOS 16+iOS Mac Catalyst running macOS 14.0
iOS 16.0+
To get started, simply incorporate a configuration such as this to your Podfile:
platform :ios, '16.0'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/mimikgit/cocoapod-edge-specs.git'
use_frameworks!
inhibit_all_warnings!
def mimik
pod 'EdgeCore'
pod 'mim-OE-ai-SE-iOS-developer'
end
target '{target}' do
mimik()
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['VALID_ARCHS'] = '$(ARCHS_STANDARD_64_BIT)'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
end
endNOTE: Developers can get their developer mim OE (edge) license for initializing mim-OE-ai-SE-iOS-developer at the mimik developer console.
NOTE: Enterprise project developers should request their enterprise mim OE (edge) license from mimik support.
EdgeCore/EdgeClient API reference documentation can be found here. Alternatively a docc archive file can be downloaded as a zip file and opened locally in Xcode.
EdgeEngineClient platform protocol API reference documentation is here.
EdgeService API references are available here.
EdgeClient/authorizeDeveloper(developerIdToken:edgeEngineIdToken:)EdgeClient/authorizeUser(email:password:edgeEngineIdToken:service:)EdgeClient/authorizeUser(phoneNumber:edgeEngineIdToken:service:)EdgeClient/validateUser(codes:edgeEngineIdToken:service:)EdgeClient/signup(email:password:edgeEngineIdToken:service:)EdgeClient/validateSignup(codes:password:edgeEngineIdToken:service:)EdgeClient/authorizeBackendUse(authorization:service:)EdgeClient/authorizeBackendUse(federatedToken:policyId:edgeEngineIdToken:service:)EdgeClient/authenticationScopes(serverUrl:)
EdgeClient/accountInformation(service:authorization:)EdgeClient/passwordReset(email:edgeEngineIdToken:service:)EdgeClient/validatePasswordReset(codes:newPassword:edgeEngineIdToken:service:)EdgeClient/passwordChange(email:currentPassword:newPassword:edgeEngineIdToken:service:)EdgeClient/deleteAccount(email:password:edgeEngineIdToken:service:)EdgeClient/validateDeleteAccount(codes:password:edgeEngineIdToken:service:)EdgeClient/executeDeleteAccount(authorization:service:)
EdgeClient/edgeEngineIdToken()EdgeClient/edgeEngineInfo()EdgeClient/externalEdgeEngineIsRunning()EdgeClient/edgeEngineFullPathUrl()
EdgeClient/deployUseCase(accessToken:configUrl:dynamicConfig:)EdgeClient/deployMicroservice(edgeEngineAccessToken:config:imageTarPath:)EdgeClient/microservices(edgeEngineAccessToken:)EdgeClient/microservice(containerName:edgeEngineAccessToken:)EdgeClient/updateMicroserviceEnv(edgeEngineAccessToken:microservice:envVariables:)EdgeClient/undeployMicroservice(edgeEngineAccessToken:microservice:)
EdgeClient/activateExternalEdgeEngine(host:port:)EdgeClient/deactivateExternalEdgeEngine()EdgeClient/edgeEngineWorkingDirectory()EdgeClient/externalEdgeEngineIsActivated()EdgeClient/setLoggingLevel(module:level:privacy:)
EdgeClient/integrateAI(accessToken:apiKey:configUrl:model:downloadHandler:requestHandler:)EdgeClient/downloadAI(model:accessToken:apiKey:useCase:downloadHandler:requestHandler:)EdgeClient/chatAI(request:streamHandler:requestHandler:)EdgeClient/chatAI(request:requestHandler:)EdgeClient/aiModels(accessToken:apiKey:useCase:)EdgeClient/aiModel(id:accessToken:apiKey:useCase:)EdgeClient/deleteAIModel(id:accessToken:apiKey:useCase:)EdgeClient/warmUpAI(request:)
EdgeClient/Authorization/AccessToken/clientId(token:)EdgeClient/Authorization/AccessToken/decodeToJWT(token:)EdgeClient/Authorization/AccessToken/decodeToJson(token:)EdgeClient/Authorization/AccessToken/expiresIn(token:)EdgeClient/Authorization/AccessToken/subscriber(token:)EdgeClient/Authorization/AccessToken/validate(token:)EdgeClient/Authorization/AccessToken/valueFrom(key:)
EdgeClient/Document/filenameExtensionFor(type:)EdgeClient/Document/filenameExtentionFor(mimeType:)EdgeClient/Document/mimeTypeFor(filenameExtension:)EdgeClient/Document/mimeTypeFor(type:)EdgeClient/Document/uttypeFor(filenameExtension:)EdgeClient/Document/uttypeFor(mimeType:)
EdgeClient/Log/log(level:function:line:items:module:marker:)EdgeClient/Log/logDebug(function:line:items:module:marker:)EdgeClient/Log/logError(function:line:items:module:marker:)EdgeClient/Log/logFault(function:line:items:module:marker:)EdgeClient/Log/logInfo(function:line:items:module:marker:)EdgeClient/Log/loggingLevel(module:)EdgeClient/Log/loggingPrivacy(module:)
EdgeClient/Microservice/basePath()EdgeClient/Microservice/call(config:)EdgeClient/Microservice/call(config:type:)EdgeClient/Microservice/call(config:requestHandler:)EdgeClient/Microservice/call(config:type:requestHandler:)EdgeClient/Microservice/callStream(config:streamHandler:requestHandler:)EdgeClient/Microservice/callStream(config:type:streamHandler:requestHandler:)EdgeClient/Microservice/callStreamSSE(config:streamHandler:requestHandler:)EdgeClient/Microservice/urlComponents()EdgeClient/Microservice/urlComponents(withEndpoint:)EdgeClient/Microservice/expectedDeployedBasePath(path:clientId:)EdgeClient/Microservice/expectedDeployedImageId(imageName:clientId:)EdgeClient/Microservice/expectedDeployedContainerId(containerName:clientId:)EdgeClient/Microservice/preferredBasePath(path:)EdgeClient/Microservice/preferredConfig(imageName:containerName:basePath:edgeEngineFullPathUrl:clientId:envVariables:signatureKey:ownerCode:)EdgeClient/Microservice/preferredContainerName(name:)EdgeClient/Microservice/preferredImageName(name:)
- ``EdgeClient/Microservice/Container/basePath()
EdgeClient/Microservice/Request/microserviceRequest(microservice:path:method:queryItems:authorization:httpBody:httpHeaders:timeoutInterval:cachePolicy:)
EdgeClient/Node/effectiveUrl()EdgeClient/Node/preferredNodeName()
EdgeClient/Request/downloadContent(sourceUrl:destinationFileUrl:progressHandler:)EdgeClient/Request/downloadImageContent(sourceUrl:)EdgeClient/Request/exportVideo(session:outputURL:outFileType:)EdgeClient/Request/uploadContent(sourceFileUrl:destinationUrl:mimeType:progressHandler:)EdgeClient/Request/authorizedRequest(url:method:authorization:httpHeaders:httpBody:contentType:)EdgeClient/Request/call(config:)EdgeClient/Request/call(config:type:)EdgeClient/Request/decode(_:from:)
EdgeClient/Request/URLComponentsBuilder/create()EdgeClient/Request/URLComponentsBuilder/set(components:)EdgeClient/Request/URLComponentsBuilder/set(scheme:host:port:path:)EdgeClient/Request/URLComponentsBuilder/set(scheme:host:port:)EdgeClient/Request/URLComponentsBuilder/set(scheme:)EdgeClient/Request/URLComponentsBuilder/set(host:)EdgeClient/Request/URLComponentsBuilder/set(password:)EdgeClient/Request/URLComponentsBuilder/set(path:)EdgeClient/Request/URLComponentsBuilder/set(port:)EdgeClient/Request/URLComponentsBuilder/set(query:)EdgeClient/Request/URLComponentsBuilder/set(queryItems:)EdgeClient/Request/URLComponentsBuilder/set(user:)EdgeClient/Request/URLComponentsBuilder/set(fragment:)EdgeClient/Request/URLComponentsBuilder/append(path:)
EdgeClient/Service/healthCheck()EdgeClient/Service/urlComponents()EdgeClient/Service/versionCheck(requireMatch:)
Provides mim OE (edgeEngine) controls and vendors the actual mim OE (edgeEngine) binary into the project.
To enable EdgeEngineClient protocol API in the project, add EdgeEngineDeveloper or EdgeEngine to the
Podfile.
EdgeEngineClient/startEdgeEngine(parameters:)EdgeEngineClient/stopEdgeEngine()EdgeEngineClient/restartEdgeEngine()EdgeEngineClient/resetEdgeEngine()EdgeEngineClient/edgeEngineIsRunning()EdgeEngineClient/edgeEngineLifecycleIsManaged()EdgeEngineClient/edgeEngineParameters()EdgeEngineClient/manageEdgeEngineLifecycle(manage:)EdgeEngineClient/expectedEdgeEngineVersion()EdgeEngineClient/setCustomPort(number:)
After installation, try the following tutorials:
- Understanding the mimik Client Library for iOS.
- Creating a Simple iOS Application that Uses an edge microservice.
- Integrating the mimik Client Library into an iOS project.
- Working with mimOE in an iOS project.
- Working with edge microservices in an iOS project.
More details about how the mim OE platform revolutionizes computing with the hybrid-cloud approach are at mimik Developer Documentation.
Developers can get their developer mim OE (edge) license by following this tutorial.
For details about an enterprise mim OE (edge) license please contact mimik support.