Build from source
Clone, build and run the open-source LM Mini core on Android, iPhone, iPad and Mac.
The LM Mini core is MIT-licensed at github.com/slim-elephant/lm-mini. Clone it, copy the Firebase placeholders, run flutter pub get and flutter run. You get the free app. Pro code is not in the repository; it ships only in the official App Store, Google Play and Mac builds.
What you get
A source build is the free LM Mini: chat with LM Studio, Ollama, oMLX, JAN AI and Unsloth on your network, starter on-device models, personas, voice, SearXNG and MCP tools, image generation, widgets, Shortcuts, and the Mac app (LM Mini Home).
- No Pro. Pro features (Group Chat, Remote Access, cloud providers, Memory, App Lock, Cloud Backup and the rest) are not in the repository. A source build hides them and their upgrade prompts.
- No purchases. The in-app purchase code is replaced by a stub, so nothing can be bought or restored.
- No LM Mini backend. Features that use our Firebase project (sign-in, feature requests, community themes, the voice catalog, the in-app changelog) stay off until you connect your own project.
The full Free vs Pro table is on the open source page.
Requirements
- Flutter, stable channel, 3.27 or newer (the app needs Dart 3.6+). Check with
flutter --version. - Android: Android Studio with the Android SDK, and a device or emulator.
- iPhone and iPad: a Mac with Xcode and CocoaPods. The app targets iOS 16 or later.
- Mac: Xcode and CocoaPods. LM Mini Home targets macOS 14 or later.
- Something to chat with: LM Studio or Ollama on your network, or an on-device starter model.
Clone and configure
- Clone the repository
git clone https://github.com/slim-elephant/lm-mini.git cd lm-mini - Copy the Firebase placeholders
The repo ships example Firebase files that point at placeholder projects, so the app compiles and starts. Firebase features stay off. Android needs no Firebase file.
cp lib/firebase_options.example.dart lib/firebase_options.dart cp ios/Runner/GoogleService-Info.example.plist ios/Runner/GoogleService-Info.plist cp macos/Runner/GoogleService-Info.example.plist macos/Runner/GoogleService-Info.plist - Fetch packages
flutter pub get
The copies (lib/firebase_options.dart and the two GoogleService-Info.plist files) are gitignored, so they never end up in a commit.
Run on each platform
Android
- Run on a device or emulator
flutter run -d android
The Google Services Gradle plugin is only applied when android/app/google-services.json exists, so Android builds without it. Add your own file to turn on Firebase (see Firebase below).
iPhone and iPad
- Check
ios/Runner/GoogleService-Info.plistThe Xcode project expects it. The placeholder you copied above is enough; for Firebase features, use your own (see Firebase below).
- Set up signing
Open
ios/Runner.xcworkspacein Xcode. Under Signing & Capabilities, choose your team and change the bundle identifier (net.neuro9.lmminibelongs to the official app). Remove capabilities your account can't use, such as App Groups, iCloud, Sign in with Apple or Push Notifications, or give them your own identifiers. - Run it
flutter run -d <your-device-id>
flutter devices lists the device IDs.
Mac (LM Mini Home)
- Check
macos/Runner/GoogleService-Info.plistSame as on iPhone: the copied placeholder builds; your own file turns on Firebase.
- Set up signing
Open
macos/Runner.xcworkspace, choose your team and change the bundle identifier. - Run it
flutter run -d macos
Firebase
LM Mini uses Firebase for sign-in, feature requests and a few catalogs. Chat does not need it. The repository ships only placeholders (*.example.*); the real config files are gitignored:
android/app/google-services.jsonios/Runner/GoogleService-Info.plistmacos/Runner/GoogleService-Info.plist
The quickest way to get all three, plus a matching lib/firebase_options.dart, is a free Firebase project of your own:
- Create a project
Go to console.firebase.google.com and add a project. You don't need Analytics.
- Run the FlutterFire CLI in the repo
It registers the Android, iOS and macOS apps with your bundle IDs and writes the config files.
dart pub global activate flutterfire_cli flutterfire configure - Rebuild
flutter clean flutter pub get flutter run
Everything Firebase stores then goes to your project, not ours. If you skip this, keep the copied example options; chat, on-device models and local servers work without Firebase.
Run tests
flutter analyze
flutter test
Our CI runs the same two commands on every pull request. Analyzer errors fail the build; warnings and infos don't.
Contributing
- Open an issue first for anything bigger than a small fix
Use GitHub issues for bugs in the free core. Bugs in Pro features go to [email protected].
- Fork the repo and create a branch
- Run
flutter analyzeandflutter test - Open a pull request
Describe what changed and how you tested it. Keep
packages/premium_stubAPI-compatible; the official build swaps in the real Pro package behind the same API.
Security issues: email [email protected] with the details. Please don't open a public issue for a vulnerability.
Feature ideas: use Feature Requests in the official app, or open a GitHub issue.
Name and logo
The MIT License covers the code. It doesn't cover the LM Mini name or app icon. If you publish a build, give it your own name, icon and bundle ID, and don't present it as LM Mini or as the official app. Saying it is based on LM Mini is fine. More on the open source page.
Troubleshooting
| Error | Fix |
|---|---|
Target of URI doesn't exist: 'firebase_options.dart' | Copy the example: cp lib/firebase_options.example.dart lib/firebase_options.dart |
Build input file cannot be found: GoogleService-Info.plist | Copy the placeholder: cp ios/Runner/GoogleService-Info.example.plist ios/Runner/GoogleService-Info.plist (or the macos/Runner/ one) |
No profiles for 'net.neuro9.lmmini' | Change the bundle identifier and pick your team in Xcode |
| A Pro feature is missing | Expected. Pro code isn't in the repository, so Pro features are hidden |
| Can't reach LM Studio or Ollama from the phone | Same as the store app: see Troubleshooting |