Releases: nibblebot/omp-web
Release list
v0.2.1
v0.2.0
v0.2.0, 2026-09-21
omp-web 0.2.0 removes the standalone single-session web UI mode, with omp-session now serving the wire API only. It adds preflight drift reports, gate E2E and packed-artifact smoke tests, and main-based docs deployment, plus fixes including an SDK bump to 18.2.6 with patched tokenizer estimates and at-most-once replay of unanswered calls.
Breaking changes
- refactor(fleet)!: make the fleet the only web UI server (b5a158f89bb4e3c53e1f7763969f09ebf19be3e7)
Features
- Add preflight drift reports, gate E2E, packed-artifact smoke tests, and main-based docs deploy (cc459b76a95e55e1637da037ed6d2ea8407e4a78)
- Route the preflight verb through the CLI and pin pi-catalog explicitly (193b80757fce25b78ab6f61c1a483c394cb813ec)
- Run the auth broker together with the fleet dev stack (d756e6916a8c0d30f4ff61426f505fd1066d2beb)
- Add provider-managed clone workspaces to the fleet (9726067035351733696ac3ebc6d9af7377897b23)
- Publish the documentation site to GitHub Pages (ac43d6b92749b6e5faf6c18ba08fc3f82c5c8bbd)
- Add a work and analysis mode switcher with persistent transcripts sidebar (c06eab7a965424a24fa3b292f21309713e92f5c6)
- Add a usage-in-sidebar setting with a condensed sidebar usage widget (396e2f88db9b02475f572fe3b9d15241a259588c)
Bug fixes
- Bump the agent SDK to 18.2.6, patch tokenizer estimates, and replay unanswered calls at most once (571653b0c34a74e2b3e34b3dce07677549df1d34)
- Repair two pre-existing test failures (efe8e84bf6d6a13711a786c595b489fbbc268ba0)
- Serve a placeholder page when no web bundle is embedded (8186acf0aee9cbfacee39ca70b7865074abb8f2d)
Maintenance & other
- Document clone workspaces, browser auth, and sandbox runtimes (ba26ea23abe2c9575a5a984959b27b12ac5ed3ab)
- Remove the last em dashes, including those in the changelog (c12a64abb0faac269c33123d11ca55cc972d20c8)
- Strip AI writing tells from the clone-workspace branch (dacc2ca1360a8373b157c6851f7c1de0c4e0f393)
- Commit the clone workspace design, plan, and summary (0e367045758e8048411e50492f9d50f1a179315a)
- Strip AI writing tells from comments, strings, and prose (a9405ee4f0709674362cedf922fadbb7d4b2d0dd)
- Drop the Docker session-daemon guide (0080da1a538324e8bf1daca244bd430e68cb35ef)
- Remove fleet/examples and inline the docker wrapper (6306f21eed9e40b95e4e7ec10a6dc2b943d12f55)
- Build the Starlight documentation site (07cd0b22e06fc822b0ee32ad115f234cca11102a)
- Add issue templates (22b733a1fd18bfc1c37e044fd263e57e3d33d83e)
- Require log-file capture for test suite runs (0d29560927065d7f0490b8e1a2286de71806439b)
- Bump runtime and dev dependencies (6c576d9992b4e4a97359bb6ca1efd753a1882a40)
- Strip em dashes from markdown prose and use commas in changelog headers (afc5de110fec6f1ca42d04ebd7a2aab9c8851cd2)
v0.1.1
v0.1.1 — 2026-08-20
This release fixes two chat issues: pinned chat streams now stay pinned through any content change, and the queued-steer chip is cleared once the steer is delivered. It also improves reliability by replacing a flaky queued-steer end-to-end test with hermetic coverage, and anchors the pinned install directory as its own bun project.
Bug fixes
- fix(chat): re-pin a pinned stream on ANY content change via content ResizeObserver (a364b3eaad8e14a3e9b4acfa9ea7906719636c20)
- fix(server): clear queued-steer chip when the steer is delivered (dc53303d3ae3351a5bccd009d24fabbb00f3622b)
Maintenance & other
- test(server): drop flaky queued-steer e2e; hermetic wireSession suite covers the fix (1ff7e3a5367ec0a428aa766277b9456834b55987)
- install: anchor pinned install dir as its own bun project (1774e9cf23d7a79f64475a7d1f3b659c27f5d8d6)
v0.1.0
omp-web
omp-web is a web UI for running multiple oh-my-pi sessions, across all your repos and worktrees — one installed command, one browser UI, N agent sessions.
omp-web has full control of the omp agent by using the SDK compared with other GUIs which use the RPC (which has no daemon control and limited subagent control).
⚠ Early-stage software. omp-web is under active development and has sharp edges. Expect breaking changes between releases — the wire protocol, config/state formats, and UI are not yet stable. Session transcripts are durable
.jsonlfiles, but the surrounding tooling (fleet state, config, managed worktrees) is still evolving; don't treat this as production data storage yet. Report issues and rough spots as you find them.
Features
- Multiple Repos, Multiple Worktrees, Multiple Sessions, one UI. Start, monitor, and chat with one agent daemon per worktree across every repo.
- A full web UI, not a terminal wrapper. Live-streamed responses, rendered markdown and diffs, tool output, slash commands, prompt history and autocomplete, per-session context/usage meters, and a transcripts/stats view.
- Custom wire protocol to support full SDK control A significant advantage versus RPC based clients.
- Manage Repos and Worktrees from the UI Register projects (deduped by realpath), create or adopt managed worktrees, and delete them safely — clean-tree-only,
git branch -d, no--force. - CLI for automation Spawn, stop, remove, inspect, and fan a prompt out to many daemons from the terminal — the same fleet the browser talks to.
- Self-updating
omp-web updatechecks the release channel and reinstalls the latest version in one command. - Self-healing Idle daemons exit after 30 minutes and are respawned on demand; crashed daemons restart with bounded backoff; dropped connections show
reconnectingand browsers re-attach automatically.
Runtime Modes
- Fleet Mode (
omp-web) — starts the fleet (registry + supervisor + UI server); the browser talks to the fleet, manages repos and worktree state, and proxies you through to any daemon. - Single Session Mode (
omp-web session) — the browser talks to one session daemon directly; the daemon serves the full single-session UI. - Sessions run as separate processes — one worktree directory each, bound at spawn. A daemon hosts one live agent session in-process via the SDK — no child-process JSON-RPC hop — and serves the UI over SSE + POST.
Architecture
flowchart TB
browser["Web UI (Solid.js)"]
fleet["<b>omp-web</b> <br/>serves web UI, registry, supervisor, proxy"]
model["Model provider"]
log["session .jsonl — durable truth"]
subgraph daemons["agent daemons"]
daemon1["<b>omp-web session</b> <br/>omp SDK daemon"]
dots["…"]
end
browser <-->|"SSE + POST"| fleet
fleet <-->|"proxied SSE + POST"| daemons
daemons <--> model
daemons -.-> logDeep dive: docs/architecture.md — wire contract, module map, security model.
Requirements
- Bun (the runtime and the installer)
- The
ompCLI with at least one provider and a default model configured — runompand set it up in its/settings(oromp loginfor an OAuth provider). omp-web verifies this on first run and prompts fail until a model resolves.
Install
# One-liner (bun-only; installs bun >= 1.3.14 if missing):
curl -fsSL https://raw.githubusercontent.com/nibblebot/omp-web/main/scripts/install.sh | shThe installer downloads the latest release tarball, verifies its sha256 against the release manifest, and installs it into a pinned project dir (~/.omp-web/install/) with a ~/.bun/bin/omp-web symlink — then omp-web update keeps it current.
Verify:
omp-web --versionUsage
omp-web # start the fleet: registry + supervisor + UISelf-update
omp-web update # check the release channel and reinstall the latest
omp-web update --check # just report the newest version
omp-web update --version x.y.z # pin a specific releaseConfiguration and State
- Default data directory:
~/.omp-web/ config.json(defaults, written only by the first-run offer)fleet-state.json(roster + registered projects, atomic writes, exclusive pidfile lock)workspaces/(managed worktrees, created lazily). Chosen at first run; config, state, and workspaces always live together under it.
Develop
bun install
bun dev # roster mode: vite (HMR) + fleet — ports chosen per runIn a linked worktree, bun dev forks the dev fleet state from the main
worktree (copy-once, like a git fork), so the worktree's roster boots with the
main worktree's sessions/projects instead of empty; later runs keep the
diverged fork — delete the worktree's dev state file
(~/.omp-web/dev-fleets/<worktree>-<hash8>/fleet-state.json) to re-fork.
--state-from <path> forks from an explicit state file or directory; running
bun dev in the main worktree itself never self-seeds. --fresh skips all
seeding and starts on a clean state (removes the worktree's existing dev
state, so the roster boots empty); the next plain bun dev forks again.
Advanced
omp-web session [options] # run a single-session agent daemon
omp-web sessions | projects # roster / registered projects
omp-web spawn <path> # start a daemon on a directory
omp-web add-repo <path> [--start] # register a project (deduped on realpath)
omp-web add-worktree <project> <name> [--no-start] # create a managed worktree
omp-web add-worktree <project> --existing <path> # adopt an existing one
omp-web stop <selector> | remove <selector>
omp-web rm-project <selector> | rm-worktree <daemon-id> [--delete-branch]
omp-web prompt <selector> <text> [--wait <ms>]Manual install
Install from this repo (build → pack → install):
git clone <this-repo> && cd omp-web
bun install
bun run install:omp-web # build → pack → install into ~/.omp-web/install/
omp-web --version # verify: prints <version>