ben 28b1ff39e4 feat: host mode prefers OpenWork server for skills/plugins management (#304)
* feat: host mode prefers OpenWork server for skills/plugins management

- Add hostToken support to OpenWork server client (X-OpenWork-Host-Token header)
- Add includeGlobal query param to listSkills and listPlugins
- Host mode now uses OpenWork server first for:
  - refreshSkills (with includeGlobal for global skills)
  - refreshPlugins (project scope)
  - addPlugin (project scope)
  - installSkillCreator
- Falls back to local filesystem if OpenWork server unavailable
- Fix missing WorkspaceInfo import in dashboard.tsx

* feat: add server binary build script and prefer opencode.jsonc

- Add packages/server/script/build.ts for compiling standalone server binary
- Add build:bin and build:bin:all scripts to server package.json
- Update workspace-files.ts to prefer opencode.jsonc over opencode.json

* fix: compile openwork-server as standalone binary on all platforms

Replace shell launcher script with bun build --compile to create
a standalone binary that doesn't require Bun at runtime.

* feat: host mode uses OpenWork server for commands, MCP, and default model

- Prefer OpenWork server for command save/delete/list in host mode
- Use OpenWork server for Notion MCP setup and MCP refresh/connect when available
- Resolve host workspace id via OpenWork server in host mode
- Fetch host capabilities and pass host token to server client
- Read/write default model via OpenWork server when connected

* fix: rebuild openwork-server sidecar reliably

- Use bun build CLI for compiled server binary
- Detect and replace stub launcher before building

* fix: create target-specific openwork-server sidecar

- Copy compiled openwork-server to platform triple name
- Regenerate stub targets when needed
2026-01-28 19:11:03 -08:00
2026-01-25 23:40:15 -08:00
2026-01-15 11:07:33 -08:00

Discord

OpenWork

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”.

Screenshot 2026-01-13 at 7 19 02 PM

Openwork is desgined around the idea that you can easily ship your

Its 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.

Alternate UIs

  • 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, then owpenbot whatsapp login, then owpenbot start
    • full setup: packages/owpenbot/README.md

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.

Whats 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 /event subscription 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/skills folders
    • install from OpenPackage (opkg install ...)
    • import a local skill folder into .opencode/skills/<skill-name>

Skill Manager

image

Works on local computer or servers

Screenshot 2026-01-13 at 7 05 16 PM

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

Arch Users:

yay -s opencode # Releases version

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/client to:
    • 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

Troubleshooting

Linux / Wayland (Hyprland)

If 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 openwork
WEBKIT_DISABLE_COMPOSITING_MODE=1 openwork

Security Notes

  • OpenWork hides model reasoning and sensitive tool metadata by default.
  • Host mode binds to 127.0.0.1 by default.

Contributing

  • Review AGENTS.md plus VISION.md, PRINCIPLES.md, PRODUCT.md, and ARCHITECTURE.md to understand the product goals before making changes.
  • Ensure Node.js, pnpm, the Rust toolchain, and opencode are installed before working inside the repo.
  • Run pnpm install once per checkout, then verify your change with pnpm typecheck plus pnpm test:e2e (or the targeted subset of scripts) before opening a PR.
  • Add new PRDs to packages/app/pr/<name>.md following the .opencode/skills/prd-conventions/SKILL.md conventions described in AGENTS.md.

License

MIT — see LICENSE.

Description
Mirrored from GitHub
Readme MIT 1.1 GiB
Languages
TypeScript 86.4%
JavaScript 9.3%
CSS 2.6%
Shell 0.9%
MDX 0.7%