Butler is an experimental AI chat app, which is a playground for testing out new technologies and development practices.
Easier way is to:
- Go to recent releases.
- Download
Butler-windows-x64-2.0.0-release.jar
. - Start desktop app with Java 21 or higher. (I just opened it from my console/powershell using
java -jar
commands). - Download
composeApp-release.apk
. - Install the Android app on your device. (Android 8 required (API 26)).
If you want to build and run the app from source:
- Clone the repository.
- Open with Android Studio.
- Run the Android app on an emulator or a physical device. (You need to add some debug key info in
local.properties
and place your key in thecomposeApp
project directory). - Run the Desktop app on your computer (with
butler:composeApp [run]
label in Android Studio).
A few key steps to showcase app features.
The demo version of the app available in the releases page starts out in the model selection screen for creating a New Chat, because a credential key is already added (no-config).
On first open, the user is greeted with an onboarding flow, from which they can select 3 types of chatting:
- with locally available models (currently not working)
- models available via OpenAI API
- models available via Butler Server (currently not working)
The app supports adaptive layouts for different screen sizes. Remember, the app usage is shown using mostly the regular tablet/desktop layout, but the app is also optimized for mobile devices.
Selecting the OpenAI API option, the user is prompted to enter their API key with their desired provider.
The credential grid list items are animating with shared element transitions.
The first API key should be added, which is for OpenRouter. You can use this API key, as it is limited to 1$ and I have no credits on my account. Keep in mind, that you can only talk to :free
models!
Add more API keys by clicking the floating action button.
Press Next
if finished on the credential list screen.
To start a chat, the user is prompted to select a model. The available models are listed by company.
The user can filter by text or select a "Free" filter to see only (possibly) free models.
For each model ID, there are available providers the user can select from.
The New Chat
button is always visible from the navigation rail and drawer of the app to bring the user to the model selection screen.
When pressing the Select Host
button, a new chat is opened.
The user can record their voice and send it to the model. The appropriate model can also respond to images sent.
The user can also open up the chat's details, by pressing the double arrow button on the top right.
For more complex things like audio transcription and image generation, the user can select the appropriate model.
The user can access their profile and settings by pressing the profile icon on the bottom left.
As we are not signed in, by pressing the Login
button, we are taken back to the onboarding flow. Also no profile details are shown.
After pressing Settings
, the user can change the app's theme.
Not supported on Desktop, but Android features dynamic theming on recent releases.
See more information in CONTRIBUTING.md.