Swift-Package mit lokalen LLM-Backends (FoundationModels + Gemma 4 via MLX) für alle nativen mana-e.V.-Apps. App-Group-Shared HuggingFace-Cache.
Find a file
till 18e7b16cc1 LLMRouter: gemmaAllowsCellular-Parameter im Init
Apps reichen User-Setting durch (WiFi-only vs cellular OK) statt
über globale GemmaBackend-Properties. LLMRouter instanziiert
GemmaE2B + GemmaE4B mit dem allowsCellular-Wert.

Default false (WiFi-only). Bei Toggle-Change muss App den Router
neu instanziieren — memoro-native SettingsView macht das bereits
über die makeRouter()-Factory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 00:38:23 +02:00
Sources LLMRouter: gemmaAllowsCellular-Parameter im Init 2026-05-19 00:38:23 +02:00
Tests/ManaLLMTests L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native 2026-05-18 22:55:32 +02:00
.gitignore L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native 2026-05-18 22:55:32 +02:00
CLAUDE.md L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native 2026-05-18 22:55:32 +02:00
Package.swift L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native 2026-05-18 22:55:32 +02:00
README.md L-1+L-2+L-3: mana-swift-llm Initial — lift aus memoro-native 2026-05-18 22:55:32 +02:00

mana-swift-llm

Swift-Package mit lokalen LLM-Backends für alle nativen mana e.V. iOS-/macOS-Apps.

Zwei Library-Products:

  • ManaLLM — Backend-Abstraktion + High-Level-Facade. Backends: Apple Foundation Models, Gemma 4 E2B/E4B (via MLX-Swift), NoOp-Fallback. Router wählt nach Capability automatisch.

  • ManaLLMShared — App-Group-Container-Helper für gemeinsamen HuggingFace-Cache. Apps mit dem group.ev.mana.models- Entitlement teilen heruntergeladene Modelle — eine App lädt, alle anderen lesen.

Schnell-Start

import ManaLLM

@main
struct MeineApp: App {
    init() {
        // HF_HUB_CACHE auf den shared Container setzen.
        ManaLLM.configure()
    }

    var body: some Scene {
        // ...
    }
}

// Irgendwo später:
let summary = await ManaLLM.summarize(longText)
let story = await ManaLLM.generate(
    prompt: "Schreib eine kurze Reise-Story über Konstanz.",
    level: .creative
)
let tags = await ManaLLM.classify(text, into: ["#sport", "#kultur"])

Plattform-Doku