Skip to content

InferKit v0.1.0

Choose a tag to compare

@belisoful belisoful released this 23 Aug 03:22
· 194 commits to main since this release

InferKit is a cross-platform inference toolkit for Objective-C (class prefix NFK): a swappable
backend protocol, immutable request/result value types, an async job handle, and shipped backends for
Core ML (including an on-device causal-language-model runner), OpenAI-compatible chat and
transcription services, Anthropic, and runtime backend discovery. It has no host-framework
dependency, so any Metal/Apple app can use it. Core floor: macOS 11 / iOS 14 / tvOS 14. MIT license.

Two optional Swift companion packages build on the core without raising its floor:

  • InferKitMLX (Apple Silicon, macOS 14 / iOS 17) — 30+ real on-device models at measured
    reference parity: Stable Diffusion, Whisper (with timestamps), SAM 2, YOLOv8, Demucs, a complete
    trained text-to-speech voice, language models (Qwen3, Qwen3.5, Gemma 4), and on-device
    fine-tuning (trainers, LoRA).
  • InferKitFoundationModels (macOS 26 / iOS 26) — Apple's on-device system language model.

Install

Swift Package Manager (source, recommended):

.package(url: "https://github.com/belisoful/InferKit.git", from: "0.1.0")

CocoaPods (core): pod 'InferKit', '~> 0.1'

From source: swift build && swift test at the root; cd InferKitMLX && swift build for the
MLX companion.

Binary assets — which to download

asset pick it when
InferKit.xcframework.zip (0.7 MB) you want the prebuilt core alone, no MLX
InferKitMLX.xcframework.zip (28 MB) most apps — static, core + MLX together, the best fit for an Objective-C consumer
InferKitMLXDynamic.xcframework.zip (19 MB) one shared framework across several targets or plug-ins

In Xcode: unzip, then drag the .xcframework into your target's Frameworks, Libraries, and
Embedded Content
— static: Do Not Embed; dynamic: Embed & Sign. The static MLX slices carry the
mlx-swift_Cmlx.bundle Metal shaders: add that bundle to Copy Bundle Resources, or MLX throws
Failed to load the default metallib at the first inference.

As a SwiftPM binaryTarget:

.binaryTarget(name: "InferKitMLX",
              url: "https://github.com/belisoful/InferKit/releases/download/v0.1.0/InferKitMLX.xcframework.zip",
              checksum: "cd7d0fc1acef39406d7c0c54bbe9c3eb8ea5f8379979f69d8201e9deb6eeb9c9")

Checksums (swift package compute-checksum):

InferKit.xcframework.zip           acc6d333d83dfdfb3190fe9676bcadd376a33ec4017c77aeb9f6be141a5b45c9

InferKitMLX.xcframework.zip        cd7d0fc1acef39406d7c0c54bbe9c3eb8ea5f8379979f69d8201e9deb6eeb9c9

InferKitMLXDynamic.xcframework.zip 69a75248c07f20ea449801cdb9fe24590d2aab0dc70ee1857e383636318b15fd

The recipe for every consumer shape — plug-in bundles, the dynamic variant's CoreHeaders
modulemap for Objective-C, linking from your own static library — is in
Docs/installation.md.
Examples: Docs/examples.md.
Full change log: CHANGELOG.md.