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.
ollie-el/README.md

3.0 KiB

ollie-el

Emacs frontend for ollie via ollie-9p. 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-n / n New session
C-c C-a Attach to a different session
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).

Credits

Many sources of inspiration:

  • Plan 9 from Bell Labs — for an interesting system
  • @9fans — for the Plan 9 port
  • Suckless — for articulating good software development principles
  • @simonfxr — for a solid agent baseline to "borrow" from, and other nifty ideas
  • @aws — for a solid open-source agent implementation

License

GPLv3