* feat(ui): display agent status in session sidebar - Update SessionView to accept sessionStatusById prop - Render status pill in session list sidebar - Pass status from App component to SessionView - Fix type errors in demo-state mocks * feat(ui): add chat visualization enhancements - Add 'flow' animation for new tasks, artifacts, and files moving to sidebar - Add minimalist jump rail to navigate between Agent and User messages - Add copy button to message bubbles - Add OnePlus-inspired colors for User interactions * feat(ui): implement fine-grained message minimap rail - Replaces simple jump buttons with a minimap rail showing individual message lines - Uses #EB0029 for user messages and theme-inverse for agent messages - Implements active state highlighting and hover expansion effects - Adds click-to-scroll navigation for each message line * style(ui): redesign minimap rail to horizontal bars with premium feel - Change lines from vertical to horizontal dashes - Remove rail border for cleaner look - Unify line thickness (2px default, 3px active) - Enhance active state with expansion and glow effect - Improve clickability with expanded hit areas - Use #EB0029 for user messages and theme-inverse for agent * style(ui): hide default scrollbar in chat view - Add no-scrollbar utility class and CSS rules - Ensure clean look with only the custom minimap rail visible * style(ui): increase minimap line width for better visibility - Default width: 2.5 (was 1.5) - Active width: 4 (was 3) - Hover width: 3.5 (was 2.5) - Keeps the same premium thin height * chore(pr): add minimap rail screenshots * fix(ui): harden minimap and copy interactions - debounce minimap line updates with raf scheduler - clean up timeouts and rafs on unmount - add retry logic for artifact flyout source lookup - ensure minimap markers are keyboard accessible * feat: unify slash command menu with input bar (#202) * feat: adjust session command list * chore: bump version to 0.3.3 * feat: keep users oriented during workspace switches (#204) * chore: bump version to 0.3.4 * feat: window sidecar (#205) * feat: enable windows sidecar bundling * fix: run sidecar prep from repo root * fix: run sidecar prep via workspace filter * refactor(ui): simplify session view with soft pill design and decomposed components --------- Co-authored-by: ben <ben@prologe.io>
OpenWork
OpenWork is an extensible, open-source “Claude Work” style system for knowledge workers.
It’s built on top of opencode and lets you turn your opencode workflows into usable experiences for non-technical users.
Openwork is desgined around the idea that you can easily ship your
It’s a native desktop app that runs OpenCode under the hood, but presents it as a clean, guided workflow:
- pick a workspace
- start a run
- watch progress + plan updates
- approve permissions when needed
- reuse what works (templates + skills)
The goal: make “agentic work” feel like a product, not a terminal.
Quick start
Download the dmg here https://github.com/different-ai/openwork/releases (or install from source below)
Why
Current CLI and GUIs for opencode are anchored around developers. That means a focus on file diffs, tool names, and hard to extend capabilities without relying on exposing some form of cli.
OpenWork is designed to be:
- Extensible: skill and opencode plugins are installable modules.
- Auditable: show what happened, when, and why.
- Permissioned: access to privileged flows.
- Local/Remote: OpenWork works locally as well as can connect to remote servers.
What’s Included
- Host mode: runs opencode locally on your computer
- Client mode: connect to an existing OpenCode server by URL.
- Sessions: create/select sessions and send prompts.
- Live streaming: SSE
/eventsubscription for realtime updates. - Execution plan: render OpenCode todos as a timeline.
- Permissions: surface permission requests and reply (allow once / always / deny).
- Templates: save and re-run common workflows (stored locally).
- Skills manager:
- list installed
.opencode/skillfolders - install from OpenPackage (
opkg install ...) - import a local skill folder into
.opencode/skill/<skill-name>
- list installed
Skill Manager
Works on local computer or servers
Quick Start
Requirements
- Node.js +
pnpm - Rust toolchain (for Tauri): install via
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Tauri CLI:
cargo install tauri-cli - OpenCode CLI installed and available on PATH:
opencode
Install
pnpm install
OpenWork now lives in packages/app (UI) and packages/desktop (desktop shell).
Run (Desktop)
pnpm dev
Run (Web UI only)
pnpm dev:ui
Architecture (high-level)
- In Host mode, OpenWork spawns:
opencode serve --hostname 127.0.0.1 --port <free-port>- with your selected project folder as the process working directory.
- The UI uses
@opencode-ai/sdk/v2/clientto:- connect to the server
- list/create sessions
- send prompts
- subscribe to SSE events
- read todos and permission requests
Folder Picker
The folder picker uses the Tauri dialog plugin. Capability permissions are defined in:
packages/desktop/src-tauri/capabilities/default.json
OpenPackage Notes
If opkg is not installed globally, OpenWork falls back to:
pnpm dlx opkg install <package>
OpenCode Plugins
Plugins are the native way to extend OpenCode. OpenWork now manages them from the Skills tab by
reading and writing opencode.json.
- Project scope:
<workspace>/opencode.json - Global scope:
~/.config/opencode/opencode.json(or$XDG_CONFIG_HOME/opencode/opencode.json)
You can still edit opencode.json manually; OpenWork uses the same format as the OpenCode CLI:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-wakatime"]
}
Useful Commands
pnpm dev
pnpm dev:ui
pnpm typecheck
pnpm build
pnpm build:ui
pnpm test:e2e
Security Notes
- OpenWork hides model reasoning and sensitive tool metadata by default.
- Host mode binds to
127.0.0.1by default.
Contributing
- Review
AGENTS.mdandMOTIVATIONS-PHILOSOPHY.mdto understand the product goals before making changes. - Ensure Node.js,
pnpm, the Rust toolchain, andopencodeare installed before working inside the repo. - Run
pnpm installonce per checkout, then verify your change withpnpm typecheckpluspnpm test:e2e(or the targeted subset of scripts) before opening a PR. - Add new PRDs to
packages/app/pr/<name>.mdfollowing the.opencode/skill/prd-conventions/SKILL.mdconventions described inAGENTS.md.
License
MIT — see LICENSE.