About the project
Inspiration
Developers constantly context-switch between their editor, terminal, and AI chat interfaces. We wanted to eliminate that friction entirely. The Logitech MX Creative Console and Loupedeck devices sit right on your desk with physical dials and buttons — why not make them your AI command surface? The idea was simple: press a button, get AI-enhanced code back in your clipboard. No windows, no tabs, no interruption to your flow state.
We were also inspired by the way hardware controls feel different from software sliders. Twisting a physical dial to shift an AI from "deterministic" to "experimental" mode is a fundamentally different experience than typing a parameter — it's tactile, immediate, and intuitive.
What it does
PersonaKeys is a Logitech/Loupedeck plugin that turns your hardware device into a physical AI coding assistant. Four specialized developer personas are mapped to buttons:
- Debugger — analyzes code and stack traces, suggests root cause fixes
- Refactorer — improves code quality and readability
- Documenter — generates inline comments, XML docs, and JSDoc
- Architect — provides design pattern and structural guidance
The Actions Ring controls "strictness" in real time (0–100), which modulates temperature, top_p, and repeat_penalty simultaneously. Twist toward 0 for deterministic, proven solutions. Twist toward 100 for experimental rewrites. The workflow is: copy code → adjust ring → press persona button → paste result.
By default it runs fully local via Ollama — no API keys, no cloud, no cost per request.
How we built it
Built in C# on .NET 8 using the official Logitech Actions SDK (Loupedeck SDK). Each persona is a PluginDynamicCommand, the strictness dial is a PluginDynamicAdjustment. Core services are cleanly separated — LLMService handles multi-provider inference, ClipboardService manages the copy/paste workflow, and SettingsService persists configuration to a local JSON file. The plugin packages as a .lplug4 file for marketplace distribution.
Challenges we ran into
The biggest challenge was the clipboard workflow on Windows — reliably reading and writing clipboard content from a background plugin process required careful thread marshaling and retry logic. Mapping a single dial value to multiple LLM parameters in a way that felt natural took several iterations. Haptic feedback timing was also tricky — the pulse on invocation needed to feel responsive without firing before the LLM call was dispatched.
Accomplishments that we're proud of
The ring-driven multi-parameter modulation is the feature we're most proud of. Refactoring the same snippet at strictness 10 vs. 90 produces genuinely different results — from a minimal variable rename to a complete functional rewrite. That's a hardware-native behavior that doesn't exist anywhere else. We're also proud of the zero-friction workflow — from copy to paste, there's no UI to interact with.
What we learned
Building for physical hardware forces you to think about feedback loops differently. In a GUI you can show a spinner; on a dial device you have haptics and that's it. We also learned a lot about LLM parameter sensitivity — small changes to repeat_penalty have outsized effects on output verbosity. The Loupedeck SDK is well-designed but sparsely documented, so we learned to read SDK source and the generated template project as our primary reference.
What's next for PersonaKeys
Interactive settings UI, a persona SDK for community-defined personas in JSON/YAML, a persona marketplace, session memory, direct IDE integration, and persona packs beyond developers (Writer, Student, Marketer, Designer). Cross-platform support and hardware expansion beyond Logitech/Loupedeck are on the horizon for 2027.
Key Features
- On-Device AI: Local inference via Ollama (private, no cloud required)
- 4 Specialized Developer Personas: Debugger, Refactorer, Documenter, Architect
- Physical Strictness Control: Actions Ring adjusts AI creativity (0–100 → multi-parameter mapping)
- Clipboard Workflow: Seamless copy-process-paste with no UI interruption
- Multi-Provider Support: Ollama (local), OpenAI, Azure OpenAI, Anthropic Claude
- Developer-First Design: Extensible architecture for future persona packs
Built With
- .net-8
- anthropic-claude
- azure-openai
- c#
- logitech-actions-sdk
- loupedeck-sdk
- ollama
- openai-api
- system.text.json
- windows-clipboard-api
Log in or sign up for Devpost to join the conversation.