ollie is a 9p-based generative agent surface
Go to file
Levi Neely a17dd683df Split session/idx and agent/idx, fix sub-agent tree display
Server:
- session/idx now outputs: session-id, session-name, paused, connected, remote, cwd
- session/{s}/agent/idx now outputs: session-id, agent-id, agent-name, parent-id, depth, state
- Add error if parent agent not found during sub-agent spawn

GUI:
- refreshSessions() reads session index, then agent/idx per session
- Auto-select first top-level agent (depth 0) instead of first in list
- SessionModel tracks agent expansion separately from session expansion
- Agents with children show expand/collapse arrows and are collapsible
- Add hasChildren role to SessionModel

Tools:
- subagent_spawn now passes parent= argument for proper depth tracking
- Remove hardcoded max_depth=5, use server default of 1
- Makefile installs shell script tools from data/tools/

KRunner:
- Update to parse new session/idx format
2026-08-17 13:03:26 +02:00
cmd Split session/idx and agent/idx, fix sub-agent tree display 2026-08-17 13:03:26 +02:00
data Split session/idx and agent/idx, fix sub-agent tree display 2026-08-17 13:03:26 +02:00
doc replace just build orchestration with make 2026-08-17 00:01:27 +02:00
format format: remove agent dependency from FormatEvent 2026-08-07 10:16:28 +02:00
kde Split session/idx and agent/idx, fix sub-agent tree display 2026-08-17 13:03:26 +02:00
log clean up OLLIE_* env vars: replace with XDG conventions 2026-08-07 07:11:53 +02:00
third_party/optmem Integrate OptMem memory backend 2026-08-16 11:10:50 +02:00
tools fix GUI dialog contrast and focus behavior 2026-08-16 23:55:43 +02:00
toolsrv remove maxSteps and ResetsCounter entirely 2026-08-17 09:48:58 +02:00
util merge paths utilities into util 2026-08-16 18:37:03 +02:00
virtfs refactor environment utilities and file tools 2026-08-16 18:20:50 +02:00
.gitignore update KDE integration documentation and library install 2026-08-17 00:15:56 +02:00
.plan.md consolidate 9P clients 2026-08-16 18:56:11 +02:00
AGENTS.md AGENTS.md: update build system references from justfile to Makefile 2026-08-17 10:23:23 +02:00
Containerfile add remote access via TCP: Containerfile, mount subcommand, docs 2026-04-16 23:32:37 +02:00
Makefile Split session/idx and agent/idx, fix sub-agent tree display 2026-08-17 13:03:26 +02:00
README.md document IDE integration guide 2026-08-17 00:03:20 +02:00
go.mod Lower tool output cap and add Markdown parsing 2026-08-16 11:31:31 +02:00
go.sum Lower tool output cap and add Markdown parsing 2026-08-16 11:31:31 +02:00

README.md

Ollie

Ollie is an AI agent runtime built around a 9P virtual filesystem. The runtime service, olliesrv, exposes sessions, agents, prompts, state, history, tools, and control operations as files. Frontends remain thin clients of that interface.

frontends (shell, Acme, KDE, scripts)
                         │ 9P
                         ▼
                    olliesrv
                 ┌──────┼──────┐
              sessions agents  fs tree
                         │
                    agent loop
                         │
                 provider backends
                         │
                    toolsrv (9P)
                    ┌────┴────┐
                 tools     sandbox
                              │
                         bypass broker

Runtime model

  • olliesrv owns the in-memory 9P tree and session collection.
  • Each session owns one or more agents. Agents maintain configuration, state, prompts, chat history, rendered context, usage, and cost.
  • The agent loop sends context to the configured provider, dispatches tool calls, updates history, and repeats until completion or cancellation.
  • Child agents are ordinary agents created through the session namespace and communicate through prompt/result files.

The 9P namespace is the API:

session/
├── new                 create a session by writing key=value arguments
├── idx                 tab-separated session index
└── {session}/
    ├── plan            persistent Markdown checklist
    ├── env             session environment
    └── agent/{agent}/
        ├── cfg         configuration
        ├── ctl         control commands
        ├── state       current state
        ├── statewait   block until state changes
        ├── prompt      submit a prompt
        ├── chat        conversation history
        ├── context     rendered model context
        ├── systemprompt rendered system prompt
        ├── tools       tool discovery and loading
        ├── usage       token statistics
        ├── cost        cost estimate
        └── proc/       detached process output

Providers, tools, and security

Provider backends are the model-facing boundary; the agent loop is independent of vendor APIs. Tools are external executable programs served by the separate toolsrv 9P process. Their metadata is discovered and loaded lazily, so the model sees only the capabilities needed for a task.

Tool execution uses the configured Landlock/landrun sandbox. Operations requiring an approved escape use the bypass namespace and broker, which applies policy and approval controls rather than providing an unrestricted escape.

Persistent memory is provided by OptMem through memory_recall and memory_remember; Ollie does not maintain a second memory-file format. History management renders context, tracks usage and cost, caps oversized tool output, and compacts older material when necessary.

Frontends

Shell scripts, Acme, KDE components, and other clients create sessions, write prompts, and read files such as chat, statewait, context, and feed. They do not embed provider, tool, or agent-loop logic.

See doc/architecture-ide.md for integrating Ollie with an editor or IDE.

See doc/architecture.md for component boundaries and doc/evolution.md for the design history. See doc/usage.md for setup.

Build

make

The top-level Makefile builds the Go services and tools, then delegates KDE/Qt compatibility to kde/CMakeLists.txt. CMake detects KF6 first and falls back to KF5; use make kde-kf5 to force the KF5/Qt5 build.