This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Levi Neely fa13794468 fix: sync 9P operations with actual filesystem interface
- Session creation: write KV pairs to s/new instead of root ctl;
  always inject cwd (required) from default-directory if not provided
- Session kill: use delete-directory on s/{id} instead of root ctl
- Remove ollie--write-root-ctl and ollie--ctl-path (no root ctl exists)
- Diff colorizer: match +/− (U+FF0B/U+2212) emitted by file_edit/file_write

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 23:03:47 +02:00
README.md el: add rename-session, dired commands 2026-04-13 14:26:01 +02:00
ollie.el fix: sync 9P operations with actual filesystem interface 2026-04-14 23:03:47 +02:00

README.md

ollie-el

An ollie front-end, via ollie-9p, for our emacs friends. Provides a chat buffer, prompt composition, interrupt handling, and session management. The agent core, backends, and tools are handled by the ollie-9p server.

Background

ollie-tui proved that a full interactive client could be built on top of the ollie-9p filesystem using nothing but plain file I/O. ollie-el asks the same question in a different environment: can the same interface be built as an Emacs package, with no knowledge of ollie's internals and no dependencies beyond Emacs itself?

The answer is yes. The implementation uses only built-in Emacs file operations: write-region to submit prompts, a half-second timer to tail the chat log by comparing file sizes, and insert-file-contents to read new content into a buffer. The ollie-9p filesystem is the entire API surface.

Prerequisites

olliesrv must be running and mounted before use:

olliesrv start

By default the server mounts at ~/mnt/ollie. Set OLLIE_9MOUNT to use a different path.

Installation

Add ollie.el to your load path:

(add-to-list 'load-path "/path/to/ollie-el")
(require 'ollie)

Or with use-package:

(use-package ollie
  :load-path "/path/to/ollie-el")

Optionally set a mount path and default session options:

(setq ollie-mount-directory "/custom/mount")
(setq ollie-default-session-opts '(("backend" . "ollama") ("model" . "qwen3:8b")))

Usage

Command Description
M-x ollie Open chat; attach to last session or create a new one
M-x ollie-new-and-open Force-create a new session and open chat
M-x ollie-attach-and-open Attach to an existing session by ID

UI

In the *ollie* buffer:

Key Action
RET Open input window and compose a prompt
C-c C-q Open input window and compose a queued prompt
C-c C-c Interrupt the running turn
C-c C-k Kill the current session
C-c C-r Rename the current session
C-c C-n / n New session
C-c C-a Attach to a different session
C-c C-d Open the ollie mount in Dired
g Force-refresh the chat log

In the *ollie-input* window:

Key Action
C-c C-c Submit
C-c C-k Cancel

The input window accepts multi-line prompts. Queued prompts are held until the current turn finishes.

The mode line shows the active session ID and current state (idle or the running state name).

License

GPLv3