Canvas-based graph visualization of agents in current session: - Nodes represent agents, colored by state - Edges represent peer connections - Drag nodes to reposition - Click two nodes to toggle connection - Double-click to start connecting - Right-click for context menu - Pan with middle mouse, zoom with scroll wheel - Auto-layout arranges nodes in circle 9P API methods: listPeers, addPeer, removePeer, listAgentsInSession |
||
|---|---|---|
| .. | ||
| dolphin | ||
| gui | ||
| kate | ||
| kio | ||
| krunner | ||
| lib9p | ||
| 99-ollie.sh | ||
| CMakeLists.txt | ||
| README.md | ||
README.md
ollie-kde
KDE integration for ollie. The directory contains a Qt/QML desktop client, KDE plugins, a KIO worker, and Dolphin service-menu helpers. Components communicate with olliesrv through the Ollie 9P namespace.
Architecture
Plasma / KDE applications
├─ ollie-gui (Qt Quick) ───────┐
├─ KRunner plugin │
├─ Kate plugin ├─ Ollie 9P namespace ── olliesrv
├─ KIO worker (`ollie://`) │ (Unix socket)
└─ Dolphin helper scripts ─────┘
There are two transport paths:
ollie-gui, the Kate plugin, and the KIO worker link tolibollie9p.sothrough the sharedgui/lib9pclientwrapper.- KRunner and the Dolphin scripts invoke a 9P command-line client (
9porollie-9p) and address the server at the default Ollie namespace.
The KDE clients do not start olliesrv; start the server using the instructions in the repository root before using them.
Components
ollie-gui— Qt Quick application for browsing sessions and agents, sending prompts, viewing streamed chat, interrupting or killing agents, and creating, renaming, and configuring sessions and agents. It includes light/dark/system theme handling, font settings, a collapsible session sidebar (Ctrl+B), and clipboard support.- KRunner plugin (
krunner_ollie.so) — Handles queries beginning withollie. It lists sessions, offers session termination, runs one-shot prompts through thegenerate9P file, and opensollie-guiwhen a session is selected. - Kate plugin (
ollie_kate.so) — Adds context actions, agent/session management, status and connection recovery, and ghost-text completion. It deliberately has no chat panel; useollie-guifor the full conversation. - KIO worker (
kio_ollie.so) — Provides theollie://virtual filesystem. It supports listing, stat, reading, writing, directory creation, deletion, and renaming in the Ollie 9P namespace. - Dolphin service menus —
ollie-askperforms a one-shotgeneraterequest for a selected file or directory and displays the result;ollie-session-hereidempotently creates thedefaultsession and an agent named after the selected directory.
There is no system-tray component.
Dependencies
- Qt 6 (Core, Widgets, Quick, QuickControls2, Network)
- ECM (Extra CMake Modules)
- KF6 Runner and CoreAddons for KRunner
- KF6 TextEditor and SyntaxHighlighting for Kate
- KF6 KIO for the
ollie://worker libollie9p.soand its header fromkde/lib9p/- A 9P CLI named
9p(KRunner) andollie-9p(Dolphin scripts)
Build
The KDE directory is a CMake project. From kde/:
cmake -S . -B build-cmake
cmake --build build-cmake -j
The build produces:
ollie-guilib/kf6/krunner/krunner_ollie.soandlib/kf6/ktexteditor/ollie_kate.solib/kf6/kio/kio_ollie.solibollie9p.so, installed to${CMAKE_INSTALL_LIBDIR}(normallyliborlib64)
The CMake project installs ollie-gui and libollie9p.so. The plugins, KIO metadata, desktop files, Dolphin scripts, icon, and Plasma environment files are source-tree assets and must be installed or packaged separately; the just kde and just install-kde commands described by older documentation are not provided in this repository.
Install
Choose an install prefix, for example ~/.local:
cmake -S . -B build-cmake -DCMAKE_INSTALL_PREFIX="$HOME/.local"
cmake --build build-cmake -j
cmake --install build-cmake
That installs ollie-gui and libollie9p.so to the prefix's KDE bindir and ${CMAKE_INSTALL_LIBDIR}, respectively. To use the other components, install the matching built plugin and source assets into the locations used by your KDE/Qt installation:
- KRunner: the
kf6/krunnerplugin directory, pluskrunner/metadata.json - Kate: the
kf6/ktexteditorplugin directory, pluskate/metadata.json - KIO: the corresponding KIO plugin directory,
kio/ollie.protocol, andkio/ollie.json - Dolphin:
dolphin/*.desktopin~/.local/share/kio/servicemenus/and both helper scripts in~/.local/bin/ - GUI integration:
gui/org.ollie.gui.desktop,gui/ollie.svg, and the99-ollie.shenvironment file
The exact plugin directories are distribution-dependent. After installing KDE metadata or plugins, rebuild the service cache (kbuildsycoca6) and restart the affected KDE application.
Usage
GUI Application (ollie-gui)
Launch from application menu or terminal:
ollie-gui
Features:
- Session list with state indicators (idle, thinking, tool call)
- Collapsible sidebar (Ctrl+B to toggle)
- Live chat view with auto-scroll
- Inline prompt input
- Real-time updates via 9P polling
- Theme support (light/dark/system)
- Font customization
KRunner
ollie <prompt>— one-shot generation viaGenerate(no session created); shows result in a popupollie list— show active sessionsollie kill <id>— terminate a session
Dolphin
Right-click any file or directory:
- Ask Ollie about this — one-shot prompt with file context, shows result in kdialog
- Start Ollie session here — creates a persistent session in that directory
Kate
Enable the "Ollie" plugin in Settings → Configure Kate → Plugins. The plugin provides:
Context menu actions (right-click in editor):
-
Ask about file — describe and explain the current file
-
Explain this — explain selected code (or current line)
-
Fix this — ask agent to fix selected code
-
Refactor this — ask agent to refactor selected code
-
Add tests for this — generate unit tests for selection
-
Document this — add documentation comments to selection
-
Send verbatim — send selected text wrapped in a code fence (language auto-detected)
-
Review Diff — review a diff for issues (visible on Diff-highlighted documents)
-
Inline completion: Ghost text is requested automatically after 500 ms of idle time at the end of a line. Suggestions can be accepted, cycled, dismissed, toggled, or requested manually with the shortcuts below. The completion implementation uses the configured Ollie completion backend; the current plugin source does not expose
OLLIE_COMPLETE_BACKENDorOLLIE_COMPLETE_MODELenvironment variables.
Keyboard shortcuts:
| Key | Action |
|---|---|
| Tab | Accept ghost suggestion |
| Meta+O, N | Next suggestion |
| Meta+O, P | Previous suggestion |
| Meta+O, C | Toggle completion on/off |
| Meta+O, D | Dismiss suggestion |
| Meta+O, Tab | Request completion manually |
Agent management:
- Auto-creates a "kate" session with one agent per project directory
- Auto-selects agent matching the current Kate project
- Connection health monitoring with auto-reconnect (5s heartbeat)
- Status bar shows state:
- Red
✗ disconnected— server unreachable - Gray
○ no agent— connected, no agent - Green
● kate/ID— connected with active agent
- Red
Git++ integration:
- "Ollie: Review Diff" action registered in Git++ plugin's diff context menu
Tip: Tile the ollie-gui window alongside Kate to see the full chat stream from context actions.
File Layout
kde/
├── CMakeLists.txt # Qt6/KF6 build configuration
├── README.md
├── gui/ # ollie-gui (C++/QML) and desktop assets
│ ├── main.cpp, main.qml
│ ├── ollie9pclient.* # GUI state/session client
│ ├── lib9pclient.* # shared native 9P wrapper
│ ├── nativestreamer.* # chat, state, and event streams
│ ├── sessionmodel.*, chatblockmodel.*
│ ├── thememanager.*, clipboardhelper.*
│ └── *.qml, qml.qrc, *.desktop, ollie.svg
├── krunner/ # KRunner plugin and metadata
├── kate/ # Kate context actions and ghost provider
├── kio/ # `ollie://` KIO worker and protocol metadata
├── dolphin/ # service menus and helper scripts
├── lib9p/ # Go-built libollie9p shared library/header
└── 99-ollie.sh # Qt/KF Plasma environment snippet
build/ and build-cmake/ are local build directories and are not source components.
Development Notes
- The native clients use
libollie9p.sodirectly; KRunner and Dolphin are the exceptions and use a 9P CLI subprocess. - The GUI maintains native chat, agent-state, and event streams and polls the daemon heartbeat every 2.5 seconds for recovery.
- The Kate plugin is lightweight: context actions, agent management, and ghost text; it has no chat panel.
- The KIO worker exposes the server's namespace as a mutable virtual filesystem, not as a local mirror.
- CMake targets KF6/Qt6.
- The CMake install target installs
libollie9p.soto${CMAKE_INSTALL_LIBDIR}(liborlib64), alongside the executable rather than under the Qt plugin directory.
Troubleshooting
Plugins not appearing after installation:
- Run
kbuildsycoca6to rebuild the system cache - Restart Plasma:
plasmashell --replaceor log out/in
"9p" or "ollie-9p" not found:
- KRunner needs an executable named
9p(or aPLAN9environment pointing tobin/9p). - Dolphin helpers need
ollie-9pinPATH. - Build/install the main Ollie project or plan9port as appropriate.
KDE client cannot connect:
- Ensure
olliesrvis running and its default 9P socket is available. - The clients resolve the default namespace from
NAMESPACE, or from/tmp/ns.$USER.$DISPLAY/olliewhenNAMESPACEis unset.
Kate plugin crashes or is rejected:
- Check that Kate and the plugin use Qt6.
- Verify that
libollie9p.soand its runtime dependencies are discoverable.
Ghost text not appearing:
- Ensure
olliesrvis running and the 9P socket is accessible - Ghost text only shows when cursor is at end-of-line
- Check Meta+O, C hasn't toggled completion off
Dolphin actions not working:
- Ensure
ollie-askandollie-session-hereare installed in~/.local/bin/ - Check that the service menu desktop files are in
~/.local/share/kio/servicemenus/