The easiest way to create safe agentic workflow and share them with your team
OpenWork is built on top of opencode it lets you turn your opencode config into usable experiences for non-technical users.
It's an extensible, open-source alternative to “Claude Work”.
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 (commands + skills)
The goal: make “agentic work” feel like a product, not a terminal.
- Owpenbot (WhatsApp bot): a lightweight WhatsApp bridge for a running OpenCode server. Install with:
curl -fsSL https://raw.githubusercontent.com/different-ai/openwork/dev/packages/owpenbot/install.sh | bash- run
owpenbot setup, thenowpenbot whatsapp login, thenowpenbot start - full setup: packages/owpenbot/README.md
Download the dmg here https://github.com/different-ai/openwork/releases (or install from source below)
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.
- 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/skillsfolders - install from OpenPackage (
opkg install ...) - import a local skill folder into
.opencode/skills/<skill-name>
- list installed
- 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
pnpm installOpenWork now lives in packages/app (UI) and packages/desktop (desktop shell).
pnpm devpnpm dev:uiyay -s opencode # Releases version- 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:
packages/desktop/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 dev
pnpm dev:ui
pnpm typecheck
pnpm build
pnpm build:ui
pnpm test:e2eIf OpenWork crashes on launch with WebKitGTK errors like Failed to create GBM buffer, disable dmabuf or compositing before launch. Try one of the following environment flags.
WEBKIT_DISABLE_DMABUF_RENDERER=1 openworkWEBKIT_DISABLE_COMPOSITING_MODE=1 openwork- OpenWork hides model reasoning and sensitive tool metadata by default.
- Host mode binds to
127.0.0.1by default.
- Review
AGENTS.mdplusVISION.md,PRINCIPLES.md,PRODUCT.md, andARCHITECTURE.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/skills/prd-conventions/SKILL.mdconventions described inAGENTS.md.
MIT — see LICENSE.