Releases: cell-observatory/oak-observatory
Release list
OAK v0.10.0
claude-observatory is now OAK. The command is oak, the npm package is oak-observatory, the
VS Code extension is cell-observatory.oak-observatory-vscode, the JetBrains plugin is
com.cell-observatory.oak-observatory, and the repository is
cell-observatory/oak-observatory. The terminal
app now runs on herdr, which OAK installs and manages.
Upgrading from claude-observatory
- Reinstall once with the installer. claude-observatory 0.9.5 and earlier, and the 0.10.0
pre-releases published under that name, cannot update themselves across the rename:
claude-observatory updatestops with an npmEEXISTerror (the old packages keep working), the
old VS Code extension's update notifier does not see this release, and JetBrains custom-repository
users are offered a new plugin id rather than an update. Run the installer, which removes the old
npm package first:
curl -fsSL https://raw.githubusercontent.com/cell-observatory/oak-observatory/main/scripts/bootstrap.sh | bash
(Windows:irm https://raw.githubusercontent.com/cell-observatory/oak-observatory/main/install.ps1 | iex).
If you install by hand, first download this release's CLI tarball, so a failed download leaves the
old CLI in place (npm 12 will not install the tarball from its URL):
curl -fLO https://github.com/cell-observatory/oak-observatory/releases/download/v0.10.0/oak-observatory-0.10.0.tgz
(in Windows PowerShell 5.1, typecurl.exe:curlthere is an alias ofInvoke-WebRequest).
Then runnpm uninstall -g claude-observatory, install the downloaded file with
npm install -g --allow-scripts=node-pty ./oak-observatory-0.10.0.tgz, and runoak doctor --fix
andoak install-extensions, which installs the renamed VS Code extension and JetBrains plugin. - The new extension and plugin retire the old ones. VS Code uninstalls
cell-observatory.claude-observatory-vscode; the JetBrains plugin disables
com.cell-observatory.claude-observatoryand offers a restart. JetBrains users who subscribed to
the custom plugin repository should replace its URL with
https://github.com/cell-observatory/oak-observatory/releases/latest/download/updatePlugins.xml. - Requirements: Node.js 20 or newer (was 18). Linux and macOS also need
python3, for herdr's
agent hooks and OAK's herdr plugin. Linux needsmakeand a C++ compiler as well (g++, or
whatever$CXXnames): npm compiles node-pty, which the terminal app's herdr tab runs herdr in,
and npm 12 runs that build only when it is allowed (--allow-scripts=node-pty). Without node-pty
the herdr tab cannot start;oak attachworks without it.
The installers,oak updateandoak doctor --fixinstall the herdr version pinned inherdr.lock
(0.9.1, checksum-verified) when a machine has none or an older one; a newer herdr is left in place. - Run
oak initwith Claude Code closed, even if you raniniton a pre-release. It rewrites
the capture hooks to the new command and hooks six events besidePreToolUseandPostToolUse:
PostToolUseFailure,Notification,Stop,PermissionRequest,UserPromptSubmitand
SessionEnd. UntilPostToolUseFailureis hooked, the file changes of a Bash command that fails
are not recorded.oak doctornames the events that are not hooked, andoak statusshows the
hook count with the command to run. Whencodexis on the PATH,oak initinstalls Codex capture
too (--no-codexskips it). - Unchanged: the store (
~/.claude/claude-observatory), prefs, editor settings
(claudeObservatory.*) and.observatoryignorefiles.claude-observatoryremains a deprecated
alias ofoak. - Machines configured for SSH session listing (
prefs.remotes,claude-observatory remotes) are
no longer read. Add each machine again withoak machine add <label> <ssh-target>. - Saved Timeline column widths reset once in both editors, because the Timeline gains a fourth tab.
Added
- The terminal app runs on herdr. Its tabs are herdr · Observatory · Review: herdr's own
client, where agents run in panes; a live view of every session; and the review workspace.ctrl+a
thenn/por1–3switches tabs,--tab <id>opens a named tab, andctrl+qtwice quits from
any tab (ctrl+ctwice andctrl+aqtwice share the same confirmation). Inside a herdr pane the
bar is Observatory · Review. The herdr tab passes the program's keyboard protocol, bracketed paste,
focus reports, mouse, text attributes and cursor through to the terminal. The terminal app opens on
the tab you used last, the Observatory the first time, or the herdr tab while the machine has no
session yet. - The Observatory. Sessions are grouped by machine, then by herdr workspace (sessions outside
herdr under their project, or under "Unknown workspace" when the project is unknown), with each
session's pane, agent kind, model, edits, tokens and last activity. Clicking a session, or Enter,
pins its conversation beside the list: prompts, replies, thinking, tool calls with their captured
diffs, Workers and Tasks. The pinned conversation follows its newest message until you scroll back
(Endor↓ newestreturns), follows its pane when the agent restarts, and has a reply box (i)
that sends through herdr.hjumps to the session's herdr pane andrscopes the Review tab to it.
The Review tab shows the session under the cursor, previewed or pinned.
Your prompts sit in boxes like the tool calls around them, on a grey ground that follows the colour
theme, as the Claude Code and Codex CLIs show them. Workers and Tasks list what is still going on
(working or waiting workers, with their model, effort and token split; pending and in-progress
tasks), each marked in its state's colour with its stats in the session list's colours, under a
header that counts the active entries out of the total, such asWorkers · 1/3 active; the finished
ones fold behind one row. A background agent counts as working until Claude Code logs it finished
(failed, killed or stopped reads as errored) and again once it is resumed; with no such notice, it is
done after it, its session and the session's other agents have all been quiet for five minutes, unless
it stopped on a tool call or a question, which reads as waiting. This holds in the terminal app and
both editors.Shift+Ashows archived sessions. - herdr tab housekeeping. Each herdr tab is named after the session running in it unless you named
it yourself, and follows the session's title when it changes. A session's capture hooks and OAK's
Claude Code status line rename its own tab even whenoak tuiis closed; whileoak tuiruns, it
names the tabs of every machine. On Linux and macOS,oak tuialso keeps abtoptab running a
system monitor (btop, bpytop or htop) in every machine'shomeworkspace, and OAK's herdr plugin
restarts the monitor when herdr's server starts. The plugin adds an Open in OAK action, which
selects the pane's conversation in the Observatory. OAK never closes a tab. The installers,
oak updateandoak doctor --fixset herdr's sidebar width (48–72 columns) and the gruvbox theme
when you have not chosen them. - Other machines.
oak machine add <label> <ssh-target>provisions a machine (herdr, OAK in
~/.local/lib/oak,~/.local/binon its PATH, the capture hooks);oak machine listlists them.
oak attach [machine]hands the terminal to herdr on that machine, andoak agent start --machine <label>starts an agent there.--machine <label>runsviews,review,list,sessions,
conversation,feed,multitask,subagents,diff,keep,undo,redo,resolve,
comment,quoteandignoreon that machine over SSH, with that machine's ownoakin the
session's own workspace, so the Review tab reviews a remote session where its store and files are;
nothing is copied between machines. The Review tab's session picker (b) and the find palette list
each saved machine's sessions under its name, read from that machine about every 15 seconds (a
machine that cannot be reached says so), andoak tui --tab review --session <id>reviews a session
that runs on a saved machine. Started outside any repo with no--sessionor--root, the Review
tab opens on the session that most recently took a turn on any machine, this one or a saved one (on a
machine running this version, a resume alone does not count), as the machines first answer and until you choose a session or act in
the tab.oak sessions --jsonrows carry that time aslastTurnMs.OAK_MACHINE_TIMEOUT_MS(default 120 s) and
OAK_HERDR_REMOTE_TIMEOUT_MS(default 30 s) extend the deadlines. The editors list and review the
sessions of the machine their workspace runs on. - Codex support.
oak init(oroak init --codexalone) installs capture for Codex 0.147.0 or
newer and pre-trusts only OAK's own hook commands in Codex's trust store. Codex sessions appear in
every session list with their thread names (or the heading of the brief a prompt hands off to, a
long one shortened to its first phrase),
their rollout's workspace, model and effort, and their token usage with the cache split.
oak statuslinealso turns on Codex's built-in status line items, and leaves astatus_lineyou
set alone. - New commands.
oak agent startstarts a Claude Code or Codex agent in a herdr pane;oak prompt
submits text to a session's live pane and keeps a draft when it cannot;oak conversationreads a
transcript from its tail (--limit,--since <cursor>);oak searchsearches conversations;
oak integrityreports capture gaps without rewriting records;oak modelslists the local ollama
models andoak models use <name>switches Codex to one;oak titlesshows o...
Pre-release 0.11.0-dev.15 (rolling, from dev)
Rolling build of the dev branch at 1cdcc0d — refreshed on every push. Install/follow it with oak update --channel dev or the editors' version dropdown.
Claude Observatory v0.9.5
What's Changed
Full Changelog: v0.9.4...v0.9.5
Claude Observatory v0.9.4
What's Changed
- build(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #49
- build(deps): bump github/codeql-action from 4 to 4.37.3 by @dependabot[bot] in #48
- build(deps-dev): bump @types/node from 26.1.1 to 26.1.2 in the dev-dependencies group across 1 directory by @dependabot[bot] in #47
- Get dev green: the privacy violation, the guard's placement, the tty reset, and Fleet's empty message by @thayeral in #54
- feat: the review unit becomes the product's unit of decision (0.9.4) by @thayeral in #56
- test(e2e): pin fixture transcripts out of the fleet-liveness window by @thayeral in #57
- release: 0.9.4 by @thayeral in #58
- build(deps): bump github/codeql-action from 4.37.3 to 4.37.6 by @dependabot[bot] in #55
- chore(deps): point dependabot at dev, where the work happens by @thayeral in #59
- chore(deps): group the GitHub Actions updates into one weekly PR by @thayeral in #62
Full Changelog: v0.9.3...v0.9.4
Claude Observatory v0.9.3
What's Changed
- 0.9.3 — the terminal app in its own package, a store that can move, and sessions on other machines by @thayeral in #50
- docs(site): move the interactive demo directly above the feature tour by @thayeral in #51
- 0.9.3 — the terminal app, a store that can move, and sessions on other machines by @thayeral in #52
Full Changelog: v0.9.2...v0.9.3
Claude Observatory v0.9.2
Upgrading — one breaking change
VS Code panel layout resets once. The claudeObservatory.prompts, claudeObservatory.actions and claudeObservatory.observations views no longer exist: they are consolidated into a single claudeObservatory.timeline webview whose tab strip carries Prompts · Observations · Actions — the shape the JetBrains plugin already had. VS Code remembers view placement per profile, so if you had dragged those three views somewhere, the Timeline reappears in the Observatory Timeline panel and has to be dragged back once. Nothing is lost; no other editor state changes.
The review bar comes into the editor
Both editors now put the review controls over the code itself while the open file has edits awaiting review.
- JetBrains draws a real floating toolbar on the platform's own floating-toolbar layer: Keep, Undo, the
Diff n/mcounter and its steppers, Accept/Reject File, Chat, View diff, Spotlight, Clear Resolved. It replaces the notification banner by default;editorReviewSurfacechooses the bar, the banner, both, or neither. - VS Code has no floating-widget API for extensions — that has not changed — so it gives the one surface that can float over code, a comment thread, a compact bar form: one row of Keep · Undo · steppers · Diff · Details under a live title. The detail bubble is now pinnable, and
pinnedPeekgoverns it alone. - Resolving one edit opens the next still awaiting review, crossing into another file when that is where it is. Bulk actions, redo and the diff editor's own buttons deliberately never move you.
- Pending badges: files with unreviewed edits carry the count in the project tree in both editors, and on the editor tab in VS Code.
- JetBrains inline review gained the two pieces it was missing: ghost text for removed lines and the
+A −Rchurn in its lens.
Reviewing by ask
- Rewind to before this prompt reverts every unreviewed edit from one ask onward, not only the edits that ask produced — the difference between undoing a prompt and undoing the state it created. Its confirmation names the ask and states both the raw records and the review units they collapse to, so the two editors cannot print different numbers for the same destructive operation.
- A session selector leads the Timeline, listing the sessions still active in the workspace; picking one switches the whole observatory.
Panels
A Group tabs toggle beside each tab strip lays the tabs out side by side as resizable columns (drag a divider, double-click to reset) that collapse to a named rail which is itself the button back.
Fixed
clean --all --dry-rundestroyed the store and reported success. An ignored--dry-runperforms the very mutation it was meant to preview, so every scope that cannot preview now refuses. The same trap is fixed forkeep,undoandredo, andkeep --from-prompt 2no longer keeps edit #2.- A rewind's Redo replayed the scope rather than what actually moved, resurrecting edits that had been rejected before the rewind.
- The rewind boundary blocked the VS Code extension host for 1.2 s on a 7,922-record session to report that nothing was pending; it is now ~50 ms.
- The Timeline feed states a bound (
showing 300 of 3,007 edits) instead of serializing a whole session on every refresh: 237–258 ms → 60–68 ms. Native tree views were virtualized by the platform; a webview is not.
Full terminal surface: claude-observatory undo --from-prompt <id> (add --dry-run to count without touching disk), redo --from-prompt <id>, and ids/delta on the existing --json shapes.
Full Changelog: v0.9.1...v0.9.2
Claude Observatory v0.9.1
Full Changelog: v0.9.0...v0.9.1
Claude Observatory v0.9.0
Claude Observatory v0.8.9
What's Changed
- build: TypeScript 7 — node16 resolution + the dev-dependency bump by @thayeral in #39
- build: hold TypeScript at 5.x so editors keep a language service by @thayeral in #40
- 0.8.9 — demo mode and a self-playing guided tour, in both editors by @thayeral in #41
Full Changelog: v0.8.8...v0.8.9
Claude Observatory v0.8.8
What's Changed
Full Changelog: v0.8.7...v0.8.8