Open Science v0.16.0
A token usage dashboard, a composer message queue, branching from completed agent messages, view-in-context artifact navigation, CLI plan and execution controls, host session diagnostics and model introspection, camelCase Host LLM results, notification attention reasons, and contextual GitHub star prompts — alongside enforced SQLite domain constraints, bounded local artifact and reviewer resources, connectivity probe diagnostics, reviewer recovery for incomplete runs, and session-state wait-reason preservation.
Open Science is an open-source, model-agnostic AI workbench for scientific discovery — a self-hosted desktop app pairing a plan-and-execute agent with persistent compute, durable project/session storage, and inspectable research artifacts.
v0.16.0 is a feature release. It adds a Usage dashboard in Settings with Today, This week, Last 30 days, and All time summaries for tokens, sessions, projects, runs, and artifacts — paired period-scoped new metrics with cumulative totals, a 30-day activity heatmap, and a stacked daily input/cache/output chart. The composer gains a session-scoped message queue so follow-up instructions can be staged, edited, reordered, and sent while a conversation is running. Completed agent messages gain Branch in new session and Copy actions, so a promising answer becomes the start of a new session with its full conversation context. Artifact previews gain View in context, jumping from a preview back to the conversation that produced it. The CLI gains plan and execution controls — plan show, approve, and reject commands plus plan-first turn intent, auto-review toggles, specialist binding, and delegation policies for headless automation. The Host SDK gains read-only session diagnostics and model introspection (host.currentModel, host.listModels), and host.llm results move to camelCase. Notifications now carry the bounded attention reason that produced them, and inbox rows for deleted sessions are visibly invalidated instead of silently disappearing. On the reliability side, SQLite CHECK constraints are enforced for review, finding, compute job, and granted-root domain state; local artifact and reviewer reads operate under one application-level resource policy with disk reserves; incomplete reviewer runs are recovered and correction rounds serialized; connectivity probes gain diagnostics; and session-state wait reasons and conversation branches are preserved across lifecycle transitions.
✨ Highlights
- Token usage dashboard. A new Usage panel in Settings summarizes tokens, sessions, projects, runs, and artifacts across Today, This week, Last 30 days, and All time — each period-scoped new metric paired with its cumulative total — plus a full-width 30-day activity heatmap and a single-screen stacked daily input/cache/output chart with detailed tooltips. (#1254)
- Composer message queue. Follow-up messages can be staged in a session-scoped queue while a conversation is running — edited, deleted, sent immediately, or reordered with pointer drag and keyboard controls — and expanded above the composer input so the next instructions are ready the moment the turn completes. (#1274)
- Branch from completed agent messages. Every completed agent message footer now carries Copy and Branch in new session actions, so continuing from a specific answer creates a new idle session with the conversation graph and activity history through that message — no prompt is sent, and the new session waits for the next instruction. (#1276)
- View in context for artifact previews. A View in context action beside Provenance on both the side preview panel and the full-screen dialog opens the artifact's origin session in the conversation panel — closing the loop when a preview was opened from another session or the project Files library. (#1256)
- CLI plan and execution controls. Headless automation gains
plan show,plan approve, andplan rejectCLI commands plus typed task-start controls for plan-first turns, auto-review toggles, specialist binding by stable id or name, and delegation policies — completing the approval handshake without parsing human text. (#1201)
🚀 New Features
- Token usage dashboard — a Usage panel in Workspace settings with period summaries for tokens, sessions, projects, runs, and artifacts; period-scoped new metrics paired with cumulative totals; a 30-day activity heatmap with selectable token and activity metrics; and a stacked daily input/cache/output chart; aggregates the already-hydrated stores, treats the conversation graph as authoritative including inactive branches, counts only provider-reported usage, and deduplicates artifacts. (#1254)
- Composer message queue — a session-scoped queue with edit, delete, send-now, pointer and keyboard reordering; compact vertically centered rows with truncation and coarse-pointer controls; the queue is hidden while side chat, permission, ask-user, or plan surfaces own the composer; queued messages are renderer-memory only and clear on restart. (#1274)
- Branch from completed agent messages — persistent Copy and Branch actions on every completed agent message footer; branching copies the conversation graph and activity history through the selected message into a new idle session with pending specialist intent and attachment reconciliation; disabled while the source session runs. (#1276)
- View in context for previews — an Eye action next to Provenance on the side panel action menu and the full-screen dialog header; opens the origin session via navigation and closes the full-screen dialog only after navigation succeeds; a no-op when the origin session is already selected. (#1256)
- CLI plan and execution controls — typed task-start
turnIntent,autoReviewEnabled,specialist, anddelegationPolicyoptions; plan read/respond HTTP and npm client methods;plan show,plan approve, andplan rejectCLI commands; a task-only delegation-policy application command routed through the queued session persistence owner. (#1201) - Host session diagnostics — read-only
host.sessions.listandhost.sessions.inspectcombining durable session metadata with a bounded, sanitized runtime overlay; scoped to the current project and exposed only to the main agent. (#1267) - Model introspection —
host.currentModel()resolves the calling session's actually-applied model from its owning runtime (requiring ACP-confirmed application where the framework defers), andhost.listModels()returns the configured catalog restricted to the active Host LLM provider and framework — no network refresh. (#1269) - Notification attention reasons — the three shared wait categories and four bounded task-stop categories persist a bounded
attentionReason; task terminal events record anagent-runtimesource instead of raw provider stop text; rows targeting deleted sessions are idempotently invalidated with preserved action state and translated "Session no longer available" copy instead of disappearing. Includes immutable migration0007_notification_attention_metadata. (#1292) - Contextual GitHub star prompts — token-aligned star treatments on Home and Workspace, with a dismissible Workspace encouragement popover five seconds after entering each project, thirty-second visibility, hover/focus pause, and reduced-motion support. (#1294)
⚠️ Breaking Changes
-
camelCase Host LLM results.
host.llm()single and batch calls returnstopReasonand camelCase usage fields —inputTokens,cacheTokens,outputTokens,cachedReadTokens,cachedWriteTokens, andturnCount. Legacy snake_case result bodies are rejected rather than aliased. Request fields, model selection, inference behavior, and stop-reason string values (such asend_turn) are unchanged. (#1263)Migration: any notebook code or skill script reading
stop_reason,input_tokens, or other snake_case fields fromhost.llm()results must switch to the camelCase spellings.
🔧 Improvements
- SQLite CHECK constraints are enforced for Review, Finding, ReviewFindingDisposition, ComputeJob, ComputeHost, and GrantedLocalRoot domain state, with a backup-protected migration rebuild; raw writes of unknown enum values, negative counters, or contradictory combinations are rejected. Includes migration
0006. (#1287) - One application-level local resource policy bounds authenticated HTTP/RPC and stdio MCP inputs (64 MiB request, 32 MiB inline artifact, 1 GiB file, 2 GiB turn, 10 GiB session), keeps a 2 GiB disk reserve, pages reviewer reads at 256 KiB with a 2 MiB cumulative return budget, and streams writes with cancellation and partial-output cleanup. (#1262)
- Session actionability projection is centralized in the session-state module. (#1288)
- Project identity is routed by stable id instead of name. (#1278)
- Host LLM documentation is registered in Host Help. (#1272)
🐛 Bug Fixes
- Incomplete reviews recovered and corrections serialized. An interrupted reviewer run could leave a review row stuck mid-flight, and concurrent correction rounds could collide. Incomplete runs are now recovered and correction rounds serialized. (#1282, #1259)
- Wait reasons and conversation branches preserved. Session-state transitions could drop wait reasons or lose conversation branch selection. Both are now preserved. (#1280)
- Connectivity IPC registered before renderer startup. The connectivity IPC channel could register after the renderer first asked, producing spurious offline indications. Registration now precedes renderer startup. (#1291)
- Connectivity preserved after probe rejection. A rejected connectivity probe could mark the app offline despite working network. Connectivity is now preserved. (#1266)
- Connectivity probe diagnostics added. Connectivity probes now record diagnostics, making network issues identifiable. (#1270)
- Waiting-for-user session status in SDK. The task SDK did not expose the waiting-for-user session status, leaving automation unable to detect blocked turns. It is now included. (#1283)
- Legacy delegation sessions adopt framework identity. Sessions created before framework identity tracking could not adopt it on resume. They now adopt it. (#1273)
- Specialist catalog load failures recovered. A specialist catalog load failure could leave the specialist picker empty. It is now recovered. (#1268)
- Side-chat initial hydration retried. The first side-chat hydration could race its session creation; it is now retried once. (#1265)
- Preview state not recreated after project deletion. Deleting a project could leave stale preview state that recreated entries. Preview state is now cleaned up. (#1258)
- Package installation logs bounded. Notebook package installation logs could grow unbounded; they are now bounded. (#1257)
- Rejected optimistic settings actions recovered. A rejected optimistic settings write could leave the UI out of sync with stored settings. Rejection is now recovered. (#1260)
- Full-screen panel collapses on view in context. Activating view-in-context from the full-screen preview now collapses the panel after navigation. (#1261)
- Claude Skill runtime access restored. A regression cut off Claude skill runtime access; it is restored. (#1255)
- viewImage execution paths clarified. The viewImage capability's execution paths no longer admit ambiguous workspace resolution. (#1222)
- Session id validated against file name. Session persistence now validates that a session id matches its file name, rejecting mismatches. (#1296)
- Run document ownership validated. Notebook run documents validate ownership before mutation. (#1295)
- Upload transaction connections waited longer. Short waits could drop in-flight upload transaction connections; the wait is extended. (#1286)
- R interrupt acknowledgement awaited. Interrupting an R kernel now waits for acknowledgement, preventing state divergence. (#1275)
- Renderer failure recovery paths restored. Renderer error-recovery paths lost in a refactor are restored. (#1277)
- Catalog repair surfaced before project actions. Storage catalog repair now surfaces before project actions so recovery precedes new work. (#1279)
- Composer model picker shrinks gracefully. The composer model picker now shrinks instead of overflowing in narrow layouts. (#1293)
📦 Install
Requirements: macOS 12+ (Apple Silicon or Intel), Linux x64, or Windows 10/11 x64. On first run, the onboarding wizard checks the environment and can install and configure an app-managed agent runtime. Once installed, the app can update itself in place.
Download the appropriate package from the Assets section below:
| Platform | Package |
|---|---|
| macOS (Apple Silicon) | DMG for ARM64 |
| macOS (Intel) | DMG for x64 |
| Linux | AppImage or Debian package for x64 |
| Windows | Installer for x64 |
macOS — first launch. Official release builds are Developer ID signed and notarized by Apple, so they open like other trusted applications. A locally built copy is not notarized and may require approval through macOS Privacy & Security.
Windows — first launch (unsigned build). No Authenticode certificate yet, so SmartScreen shows a bypassable "unrecognized app" prompt (More info → Run anyway). Verify that the package came from the official release page before continuing.
Build from source instead:
npm install
npm run build:mac # or: build:linux / build:win
🧭 What's in this release (maturity)
- ✅ Implemented: a local-first desktop, localhost-web, headless, CLI, and task-SDK surface over persistent projects and sessions with selectable message branches, branching into a new session from user messages or completed agent messages with persisted source lineage, reversible archiving, project pinning, and persistent side conversations; selectable Claude Code, OpenCode, and Codex agent frameworks behind a shared provider turn-adapter interface; production subagent delegation with durable messaging, restart recovery, structured output, artifact and review evidence, and camelCase delegation APIs; review-gated session plans with CLI plan controls; a unified composer lane with a session-scoped message queue; hot-switching of compatible models and providers; multi-provider model configuration with DeepSeek V4 Pro Responses and GLM-5.3 support; a configurable reviewer model policy with an isolated review runtime and durable assessment snapshots; a token usage dashboard; persistent Python/R/REPL kernels with bounded run-history payloads, separated approval and execution state, remote SSH execution with harvest ceilings, and a host viewImage capability; frame-scoped Host JavaScript artifact queries, session diagnostics, and model introspection with camelCase Host LLM results; immutable artifact versions with artifact lineage access; multi-format previews with view-in-context navigation; file-based skills with conversational creation, save-as-skill turns, direct user folder support, bulk management, and imports; permissioned scientific connectors with immutable invocation identities; opt-in review and bounded correction; personal specialist agent profiles; scoped permission management; local folder access with cross-drive browsing; Chinese (Simplified and Traditional) interface translations; global proxy settings with connectivity diagnostics; prominent update reminders; a run-marks navigation rail; notifications with attention reasons; contextual GitHub star prompts; conversation export as Markdown and PDF; a project-scoped command palette; CLI Codex device login; smooth live response rendering; collapsible side panels; split-view file preview; desktop notifications; a cross-surface notification message center; structured agent clarification cards; live session status; and session keyboard shortcuts.
- 🚧 Partial: R remains managed-only; provider choice remains constrained by the active framework's endpoint compatibility; remote compute is SSH-only; skills remain local; specialist roles are personal-only (no cross-machine sharing); and review is opt-in and record-scoped.
- 🗺️ Roadmap: a unified model gateway, a public skills commons and cross-machine specialist sharing, Slurm/cloud-GPU execution, stronger sandboxing and credential isolation, and collaborative research workflows.
🐢 Known Limitations
- R is managed-only. A bring-your-own R interpreter path is not built yet.
- Remote compute is SSH-only. Slurm and cloud GPU submission are not built yet.
- Provider choice is per framework, not one unified gateway. The available protocol depends on the selected agent backend.
- Hot-switching applies only to registered compatible targets. Framework, auth-lane, wire-route, or unsafe capability changes still require a reconnect.
- Code reconstruction is LLM-generated. It does not replace deterministic reproduction; portable environment locks and full-fidelity session replay remain open.
- Specialist roles are personal-only. There is no shared public commons or cross-machine specialist forking yet.
- The task SDK is a first-generation surface. Task creation, polling, artifact retrieval, run progress, and cancellation work; broader orchestration remains open.
- Switching agent backends cannot transfer in-flight tool state. Existing conversation history can replay, but a running action is not migrated.
- Skills are local only. There is no shared public commons, cross-machine forking, or user-facing version pinning yet.
- The reviewer is opt-in and record-scoped. It does not replace domain-specific validation of citations, units, statistics, or methods.
- Scoped permissions cover allow-grants only. Network sandboxing, directory-level file access control, and a credential vault are not built yet.
- Windows builds are unsigned. SmartScreen may warn on first launch; official macOS builds are notarized.
- No local GPU compute backend.
- No multi-user real-time collaboration.
🙏 Acknowledgements
Thanks to @ewen-poch, @wen2zhou, @roxi3906, @daanveer-tech, @justemu, and everyone in Discord, X, and Discussions.