prime script no longer detects platform/git locally. All PRIME_*
variables are set by BuildRuntime callers and stored in the agent
for /agent reloads. Templates use PRIME_CWD instead of PWD.
- ollie-remote embeds tool scripts at compile time (no deployment needed)
- justfile copies tools/ into remote/ before building
- /agent command passes PWD to prompt resolver for remote sessions
- file_grep falls back to GNU grep when rg is unavailable
Tools were not working because:
1. remote.Server.ListTools() returned nil so no tool definitions
were sent to the model via the API
2. CallTool always dispatched as execute_code regardless of tool name
Now ListTools calls the remote list_tools RPC, and CallTool passes
the actual tool name through.
Two issues caused remote sessions to have empty system prompts:
1. prompt_resolver set cmd.Dir to the remote CWD which does not exist
locally, causing all prompt commands to fail with ENOENT.
2. No FUSE mount was started for remote sessions since WithMount9P
hooks into a local execute.Server that does not exist.
Also fixes go vet context leak warnings in execute/server.go.
Design for local agent loop + remote tool execution over SSH.
Inspired by goq toolserv/ssh.go pattern: bootstrap a minimal binary
on the remote host, communicate via JSON-RPC over stdin/stdout.
Keeps LLM streaming, D-Bus signals, and GUI local while executing
tools on a remote filesystem.
Reframe from "everything is a file" as the sole design principle to
the actual layered philosophy:
- Design: small extensible core (Emacs-like)
- Integration: 9P filesystem (canonical) or D-Bus (conventional)
Both are thin adapters over the same agent.Core.
- Remove references to non-existent 9P paths (t/idx, sk/idx, m/, etc)
- Update system overview diagram to show KDE/Web frontends over D-Bus
- Show embedded D-Bus adapter in olliesrv and ollied alternative
- Update tool/skill discovery references to use env vars
- Update agent config example to current format
Split session management (9P and D-Bus) out of the monolithic system
prompts into dedicated files primed separately:
- session-9p.md: 9P filesystem session operations
- session-dbus.md: D-Bus method/signal session operations
System prompts are now server-agnostic. The install target copies
the appropriate session-*.md as session.md. Agent configs prime
"session" after "SYSTEM_PROMPT" to compose the full prompt.
This eliminates the N×2 variant matrix (one -9p and -dbus per model)
and makes adding new model prompts simpler.
Two issues prevented the KDE GUI from seeing restored sessions:
1. QDBusInterface cached stale introspection data after service restart,
causing ListSessions calls to silently fail.
2. SessionCreated D-Bus signals were never emitted for restored sessions
because the dbus adapter was nil during session.Manager initialization.
- install-kde uses cmake --install with CMAKE_INSTALL_PREFIX=~/.local
- 99-ollie.sh sets QT_PLUGIN_PATH and QML_IMPORT_PATH for plasma session
- Fix Kate plugin namespace (kf6/ktexteditor, kf5/ktexteditor)
- Remind user to restart Plasma after install
- Remove all Makefiles and mkfiles from root and submodules
- All install targets now use ~/.local/ instead of /usr/
- Replace cp+chmod with install throughout
- Install every file individually with explicit permissions
- Add install-kde to 9P path (KDE works with both backends)
- Add install-el for Emacs frontend (~/.config/emacs/ellie)
- Add test targets (test-core, test-9p)
- No sudo required for any operation
Replace Makefile/mkfile with justfile (just command runner).
Move tools from kde/tools to root (uses physical paths, not 9P).
Add process_*, env, grep tools that were missing from submodules.
just: 9P path (default), just dbus: D-Bus path.