Nimbus gives Google's Gemini LLM access to your desktop so it can easily read files and run code for you.
- Flutter desktop app that targets MacOS and Linux with a single codebase.
- Firebase Firestore is used to preserve chats and messages with security rules to ensure that only authenticated users can read or write their data.
- Firebase Authentication is used to let users log in using email or Google.
- There is no backend. The Flutter client uses a pass-through server proxy to directly call the Google AI Gemini API.
- Firebase Hosting for the landing page
- Firebase App Check to increase security
- Use Firebase Storage when files exceed the size limit for direct upload to Google AI Gemini API
- Build, sign and notarize app in Xcode. Select
Product > Archive
=>Distribute App
=>Direct Distribution
and verify it
spctl -a -vvv -t install Nimbus.app
- Zip it and upload it to GCP
https://console.cloud.google.com/storage/browser/nimbus-d5268.appspot.com
We needed a Developer ID Installer certificate added to our identity via Xcode > Preferences > Accounts
- Create DMG from App
https://github.com/sindresorhus/create-dmg
create-dmg path/to/Nimbus.app
Verify it
spctl -a -vvv -t install Nimbus\ 1.0.1.dmg
- Notarize and staple DMG with Apple's
notarytool
https://wiki.lazarus.freepascal.org/Notarization_for_macOS_10.14.5%2B
xcrun notarytool submit Nimbus\ 1.0.1.dmg --keychain-profile "notarytool-password" --wait
xcrun notarytool history --keychain-profile "notarytool-password"
xcrun stapler staple Nimbus\ 1.0.1.dmg
Verify it
spctl -a -vvv -t install Nimbus.app
spctl -a -vvv -t install Nimbus\ 1.0.1.dmg
- Zip it and upload it to GCP
https://console.cloud.google.com/storage/browser/nimbus-d5268.appspot.com