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 c760012f73 add standalone justfile for decoupled builds 2026-07-30 19:35:59 +02:00
src add remote field to createSession params 2026-07-24 11:58:12 +02:00
.gitignore gitignore .kiro/, remove tracked lsp.json 2026-04-24 21:44:49 +02:00
README.md readme: fix prerequisites (httpgw is HTTP-to-DBus, not HTTP-to-9P) 2026-07-18 23:04:59 +02:00
index.html theme system, acme theme, 9P filesystem browser 2026-04-24 21:14:06 +02:00
justfile add standalone justfile for decoupled builds 2026-07-30 19:35:59 +02:00
package-lock.json deps: update package-lock.json 2026-05-03 13:30:17 +02:00
package.json fs browser: inline editor with Put/Get actions 2026-04-26 15:23:07 +02:00
tsconfig.json initial web UI: Preact + Vite, 9P filesystem identity 2026-04-24 19:33:15 +02:00
vite.config.ts update webui: chat pane and api changes 2026-07-06 18:23:17 +02:00

README.md

ollie-webui

Browser-based front-end for ollie. A Preact single-page application that talks to ollie-httpgw over REST. Provides session management, a chat interface with markdown rendering, and theme switching.

Prerequisites

  • Either olliesrv or ollied running (provides the D-Bus org.ollie.SessionManager interface)
  • ollie-httpgw running (HTTP → D-Bus gateway)

Build

npm install
npm run build

Output: dist/ (static files).

Development

Vite dev server with hot reload and API proxy:

npm run dev
# Open http://localhost:5173

The proxy forwards /sessions, /backends, /agents, and /openapi.json to localhost:8011 (httpgw default with -listen :8011, or adjust vite.config.ts).

Serve (production)

dist/ is a static site. Serve with any HTTP server and proxy API paths to httpgw:

server {
    listen 3000;
    root /path/to/ollie/webui/dist;
    index index.html;

    location / { try_files $uri /index.html; }

    location ~ ^/(sessions|backends|agents|openapi\.json)(/|$) {
        proxy_pass http://localhost:8011;
    }
}

Features

  • Session list sidebar with state, backend, model, and cwd
  • Create, rename, and kill sessions
  • Send prompts; updates via 250ms poll
  • Stop a running agent turn
  • Markdown rendering of assistant responses (via marked + mermaid + KaTeX)
  • Two built-in themes: midnight (dark) and acme (Plan 9-inspired light); persisted to localStorage

Stack

File layout

webui/
├── package.json
├── vite.config.ts
├── src/
│   ├── app.tsx              # Root component: session polling, routing
│   ├── style.css            # Global styles
│   ├── components/
│   │   ├── ChatPane.tsx     # Chat display + prompt bar
│   │   ├── PromptBar.tsx    # Input field
│   │   └── NewSession.tsx   # Session creation dialog
│   └── lib/
│       ├── api.ts           # HTTP client (fetch wrappers for httpgw)
│       ├── chat.ts          # Chat log parser
│       └── theme.ts         # Theme definitions and localStorage persistence
└── dist/                    # Build output (static site)

License

GPLv3