OpenWork is an extensible, open-source “Claude Work” style system for knowledge workers.
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.
Download the dmg here https://github.com/different-ai/openwork/releases (or install from source below)
Knowledge workers don’t want to learn a CLI, fight config sprawl, or rebuild the same workflows in every repo. 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.
- Host mode: start
opencode servelocally in a chosen folder. - 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
- Node.js +
pnpm - Rust toolchain (for Tauri):
cargo,rustc - OpenCode CLI installed and available on PATH:
opencode
pnpm installpnpm devpnpm dev:web- 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
The folder picker uses the Tauri dialog plugin. Capability permissions are defined in:
src-tauri/capabilities/default.json
If opkg is not installed globally, OpenWork falls back to:
pnpm dlx opkg install <package>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"]
}pnpm typecheck
pnpm build:web
pnpm test:e2e- OpenWork hides model reasoning and sensitive tool metadata by default.
- Host mode binds to
127.0.0.1by default.
TBD.