Skip to content

mim-OE/mim-OE-SE-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

mimik Client Library

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.

Quick Start

Features

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

Runtime Characteristics

  • 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

Use Case Examples

  • 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.

mimik Client Library cocoapods

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.

Generally speaking, developers only need to add the mim-OE-ai-SE-iOS-developer and EdgeCore cocoapods to their projects.

Supported Platforms, Targets

  • iOS Devices running iOS 16+
  • iOS Simulators running iOS 16+
  • iOS Mac Catalyst running macOS 14.0

Requirements

iOS 16.0+

Installation

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
end

NOTE: 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.

Documentation

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

Authentication

  • 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:)

Account Management

  • 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:)

Environment

  • EdgeClient/edgeEngineIdToken()
  • EdgeClient/edgeEngineInfo()
  • EdgeClient/externalEdgeEngineIsRunning()
  • EdgeClient/edgeEngineFullPathUrl()

Edge microservices

  • 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 Type

  • EdgeClient/activateExternalEdgeEngine(host:port:)
  • EdgeClient/deactivateExternalEdgeEngine()
  • EdgeClient/edgeEngineWorkingDirectory()
  • EdgeClient/externalEdgeEngineIsActivated()
  • EdgeClient/setLoggingLevel(module:level:privacy:)

EdgeClient/AI

  • 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

  • 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

  • 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

  • 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

  • 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

  • ``EdgeClient/Microservice/Container/basePath()

EdgeClient/Microservice/Request

  • EdgeClient/Microservice/Request/microserviceRequest(microservice:path:method:queryItems:authorization:httpBody:httpHeaders:timeoutInterval:cachePolicy:)

EdgeClient/Node

  • EdgeClient/Node/effectiveUrl()
  • EdgeClient/Node/preferredNodeName()

EdgeClient/Request

  • 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

  • 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

  • EdgeClient/Service/healthCheck()
  • EdgeClient/Service/urlComponents()
  • EdgeClient/Service/versionCheck(requireMatch:)

EdgeEngineClient protocol

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:)

Tutorials

After installation, try the following tutorials:

Author

mimik Technology, Inc.

More details about how the mim OE platform revolutionizes computing with the hybrid-cloud approach are at mimik Developer Documentation.

License

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.

About

mim-OE-SE-iOS

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Contributors