PlasmaLLM is a system-aware AI assistant widget for the KDE Plasma 6 desktop. It provides a native interface to various LLM endpoints, integrating system information gathering, web search, and shell command execution directly into your desktop workflow.
PlasmaLLM is designed for quick tasks and system-integrated workflows—not as a replacement for full-featured chat applications. It excels at answering technical questions about your system, running terminal commands, and providing an agentic interface for desktop automation.
- Multi-Provider Support: Connects to Ollama, LM Studio, OpenAI, Anthropic Claude, Google Gemini, OpenCode Zen/Go, and any OpenAI-compatible API.
- System Awareness: Optionally gathers hardware, OS, and environment info to provide context for assistant responses.
- Tool-Calling System: Modular architecture allowing LLMs to interact with the filesystem, run shell commands, and fetch web data (with user approval).
- Interactive Terminal Blocks: View, copy, or execute suggested terminal commands. Supports session multiplexing via
tmuxorscreen. - Web Search Integration: Native support for DuckDuckGo and SearXNG.
- Vision Support: Supports image attachments for providers with multimodal capabilities (e.g., Gemini).
- Voice Input (STT): Hold-to-talk microphone that transcribes via an OpenAI-compatible
/audio/transcriptionsAPI (e.g. OpenRouteropenai/gpt-transcribe) or a local OpenAI Whisper CLI, then sends the text to your active chat profile. - Secure Storage: Integrates with KWallet for secure management of API keys and secrets.
- Markdown Rendering: Full support for markdown, including syntax highlighting for code blocks and LaTeX for mathematical notation.
- Context Compaction: Save tokens and speed up local model processing by reducing the size of the context that needs to process.
- KDE Plasma 6.0+
- Qt 6
- Optional:
python3-matplotlib,python3-dbus, andpython3-gobject(or distro equivalents) for Mathtext LaTeX rendering - Optional:
qt6-qtmultimedia(or distro equivalent) for microphone capture via Qt Multimedia (Voice Input) - Optional:
pw-record,ffmpeg, orarecordas a shell fallback if Qt capture is unavailable (Voice Input) - Optional: OpenAI Whisper CLI (
whisperfrom theopenai-whisperPython package) for local speech-to-text - Optional:
tmuxorscreenfor session multiplexing.
- Open Configure PlasmaLLM → Speech to Text.
- Enable microphone input.
- Choose STT backend.
- Choose a provider (e.g. OpenRouter), confirm endpoint
https://openrouter.ai/api/v1. - Click Fetch models (this queries transcription models — OpenRouter does not list them on the normal chat model list).
- Select a model such as
openai/gpt-transcribe, save your API key.
- Select OpenAI Whisper (local CLI).
- Set Command if
whisperis not on your PATH. The field is a prefix inserted as-is, for examplepython3 -m whisperortoolbox run whisper. - Choose a model (
baseis the default). The first run may download weights into~/.cache/whisper. - Optional: task (transcribe/translate), device (
cpu/cuda), FP16, threads, initial prompt, extra CLI args. - Use Test CLI to confirm the command responds to
--help. No STT API key is required.
Then, for either backend:
- Mic button mode:
- Auto (default): short click toggles recording; press and hold (~250 ms+) for push-to-talk until release.
- Hold to talk: press-and-hold only.
- Toggle: click to start, click again to stop and send.
- Optional: set a Voice shortcut (default Ctrl+M) while the panel is open and focused. It follows the same Mic button mode (auto / hold / toggle). Clear the field to disable. To open the panel from elsewhere, use Activate widget on the dialog’s Shortcuts page.
- Your active chat profile (General page) is still used for the conversation; STT is only the speech engine.
You can install PlasmaLLM directly from the Plasma widget explorer: Add Widgets → Get New Widgets → Download New Plasma Widgets → Search for "PlasmaLLM".
Download the latest .plasmoid file from the Releases page:
plasmapkg2 --install PlasmaLLM-*.plasmoidNote: Building code directly from master branch may pull in unreleased features without translations from English. Translations are only done in release prep. Checkout a specific tag first if you'd prefer to build a particular release.
git clone https://github.com/joshuaeroman/plasmallm.git
cd plasmallm
make install
plasmashell --replace &For development (symlinks the package directory):
make install-devRight-click the widget and select Configure PlasmaLLM...:
- General: Set your provider, model, and API keys.
- Appearance: Configure fonts, bubble styles, and interface behavior.
- Tools: Enable/disable specific tools and configure the filesystem whitelist for sandboxed operations. Finished tool results collapse to a small pill by default (per-tool toggle); click to expand.
- Tasks: Manage custom script tools and shell command templates.
- Skills: Discover and toggle Agent Skills (
SKILL.mdfolders or<name>.mdfiles) loaded on demand. PlasmaLLM ships a bundledcreate-skillhelper; add your own under~/.local/share/plasmallm/skills/or extra directories in Settings. Skills may include.shscripts run viarun_skill_script; enable “Allow running skill scripts without approval” per skill in Settings. Use/skillsin chat to list what is available.
If you find this widget useful, please consider supporting the KDE Project.
This project is licensed under the GNU General Public License v2.0 or later.
This project was created with extensive use of AI-based tooling.