iridescence

a desktop playground for working with multiple llm providers.

Iridescence is a desktop application I created to interact with different large language models (LLMs) and its design was heavily inspired by the original OpenAI playground. The original application was called "llm playground" and was written in Rust using egui, but I quickly ran into layout issues (egui is an immediate mode gui library) so I decided to restart the project using Kotlin and Compose Multiplatform. I did mess around with other gui libraries like Flutter and Qt before deciding to use Jetpack Compose since it is simply a joy to use.

features

  • Compatible with Windows, macOS, and Linux
  • Use LLMs from Anthropic, Cloudflare AI, Google AI Studio, Groq, and OpenAI
  • Persistent application state
  • Multiple converstations
  • Adjusting model settings (temperature, maximum tokens, and system prompt)
  • Changing message roles
  • Editing messages
  • Right click context menus (deleting and moving messages)

technology

  • Kotlin as the main programming language
  • Compose Multiplatform (previously Jetbrains Compose for Desktop) for the graphical interface
  • Ktor for networking
  • Decompose for managing state, and seperating logic and ui
  • Jewel for themed ui components

screenshots

a screenshot showcasing the user interface of llm playgroud
llm playground.
a screenshot showcasing the user interface of iridescence
iridescence.