How extensions work
Extensions are Android APKs packaged into.klyx bundles. Klyx loads them at runtime using a dedicated plugin classloader. You declare your plugin’s metadata with the @PluginManifest annotation, and a Kotlin compiler plugin generates the descriptor and plugin.json for you automatically at compile time. Klyx reads the generated descriptor to instantiate your entry class and manage its lifecycle.
Architecture overview
What you can build
- Custom screens and UI panels in Jetpack Compose
- Toolbar actions with icons in categorized menus
- Custom file openers for unsupported file types
- Terminal session management and process execution
- Language server protocol integrations
- Tree-sitter syntax highlighting grammars
- Background process execution with streaming output
- Event-driven features responding to file opens, terminal events, and more
- Theme-aware UI using Klyx’s color system and typography
- App settings observation and modification
Prerequisites
- Android Studio (latest stable)
- Gradle 8.7+
- Android SDK 28 (API level 28) or higher
- Kotlin 2.1+ (required for context receivers)
- Klyx 4.2.0 or later installed on a device
Next steps
Quickstart
Build your first extension in minutes
Creating an Extension
Step-by-step guide to creating a Klyx extension
API Reference
Complete API reference for all Klyx extension APIs