# openwork
**Repository Path**: qianglegend/openwork
## Basic Information
- **Project Name**: openwork
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-26
- **Last Updated**: 2026-01-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://discord.gg/VEhNQXxYMB)
# 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 (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](./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.
## 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 `/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 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
```bash
pnpm install
```
OpenWork now lives in `packages/app` (UI) and `packages/desktop` (desktop shell).
### Run (Desktop)
```bash
pnpm dev
```
### Run (Web UI only)
```bash
pnpm dev:ui
```
### Arch Users:
```bash
yay -s opencode # Releases version
```
## Architecture (high-level)
- In **Host mode**, OpenWork spawns:
- `opencode serve --hostname 127.0.0.1 --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:
```bash
pnpm dlx opkg install
```
## 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**: `/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:
```json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-wakatime"]
}
```
## Useful Commands
```bash
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.
```bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 openwork
```
```bash
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` and `MOTIVATIONS-PHILOSOPHY.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/.md` following the `.opencode/skills/prd-conventions/SKILL.md` conventions described in `AGENTS.md`.
## License
MIT — see `LICENSE`.