Files
openwork/README.md
ben f59126374e Add Quick Start section to README
Added a Quick Start section with download instructions.
2026-01-13 22:24:35 -08:00

140 lines
3.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenWork
OpenWork is an **extensible, open-source “Claude Work” style system for knowledge workers**.
<img width="1292" height="932" alt="Screenshot 2026-01-13 at 7 19 02PM" src="https://github.com/user-attachments/assets/7a1b8662-19a0-4327-87c9-c0295a0d54f1" />
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 (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
Knowledge workers dont 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.
## Whats Included (v0.1)
- **Host mode**: start `opencode serve` locally in a chosen folder.
- **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/skill` folders
- install from OpenPackage (`opkg install ...`)
- import a local skill folder into `.opencode/skill/<skill-name>`
## Skill Manager
<img width="1292" height="932" alt="image" src="https://github.com/user-attachments/assets/b500c1c6-a218-42ce-8a11-52787f5642b6" />
## Works on local computer or servers
<img width="1292" height="932" alt="Screenshot 2026-01-13 at 7 05 16PM" src="https://github.com/user-attachments/assets/9c864390-de69-48f2-82c1-93b328dd60c3" />
## Quick Start
### Requirements
- Node.js + `pnpm`
- Rust toolchain (for Tauri): `cargo`, `rustc`
- OpenCode CLI installed and available on PATH: `opencode`
### Install
```bash
pnpm install
```
### Run (Desktop)
```bash
pnpm dev
```
### Run (Web UI only)
```bash
pnpm dev:web
```
## 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:
- `src-tauri/capabilities/default.json`
## OpenPackage Notes
If `opkg` is not installed globally, OpenWork falls back to:
```bash
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:
```json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-wakatime"]
}
```
## Useful Commands
```bash
pnpm typecheck
pnpm build:web
pnpm test:e2e
```
## Security Notes
- OpenWork hides model reasoning and sensitive tool metadata by default.
- Host mode binds to `127.0.0.1` by default.
## License
TBD.