Build from source

Clone, build and run the open-source LM Mini core on Android, iPhone, iPad and Mac.

Answer first

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

The full Free vs Pro table is on the open source page.

Requirements

Clone and configure

  1. Clone the repository
    git clone https://github.com/slim-elephant/lm-mini.git
    cd lm-mini
  2. 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
  3. 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

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

  1. Check ios/Runner/GoogleService-Info.plist

    The Xcode project expects it. The placeholder you copied above is enough; for Firebase features, use your own (see Firebase below).

  2. Set up signing

    Open ios/Runner.xcworkspace in Xcode. Under Signing & Capabilities, choose your team and change the bundle identifier (net.neuro9.lmmini belongs 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.

  3. Run it
    flutter run -d <your-device-id>

flutter devices lists the device IDs.

Mac (LM Mini Home)

  1. Check macos/Runner/GoogleService-Info.plist

    Same as on iPhone: the copied placeholder builds; your own file turns on Firebase.

  2. Set up signing

    Open macos/Runner.xcworkspace, choose your team and change the bundle identifier.

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

The quickest way to get all three, plus a matching lib/firebase_options.dart, is a free Firebase project of your own:

  1. Create a project

    Go to console.firebase.google.com and add a project. You don't need Analytics.

  2. 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
  3. 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

  1. 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].

  2. Fork the repo and create a branch
  3. Run flutter analyze and flutter test
  4. Open a pull request

    Describe what changed and how you tested it. Keep packages/premium_stub API-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.

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

ErrorFix
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.plistCopy 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 missingExpected. Pro code isn't in the repository, so Pro features are hidden
Can't reach LM Studio or Ollama from the phoneSame as the store app: see Troubleshooting