Files
openwork/packages/server/README.md
ben 4bcbf8aae0 feat: openwork sync v0 (#280)
* docs: add openwork server PRD

* feat: wire OpenWork server remote management

* feat: add OpenWork server settings panel
2026-01-26 23:00:47 -08:00

71 lines
2.0 KiB
Markdown

# OpenWork Server
Filesystem-backed API for OpenWork remote clients. This package provides the OpenWork server layer described in `packages/app/pr/openwork-server.md` and is intentionally independent from the desktop app.
## Quick start
```bash
pnpm --filter @different-ai/openwork-server dev -- \
--workspace /path/to/workspace \
--approval auto
```
The server logs the client token and host token on boot when they are auto-generated.
## Config file
Defaults to `~/.config/openwork/server.json` (override with `OPENWORK_SERVER_CONFIG` or `--config`).
```json
{
"host": "127.0.0.1",
"port": 8787,
"approval": { "mode": "manual", "timeoutMs": 30000 },
"workspaces": [
{ "path": "/Users/susan/Finance", "name": "Finance", "workspaceType": "local" }
],
"corsOrigins": ["http://localhost:5173"]
}
```
## Environment variables
- `OPENWORK_SERVER_CONFIG` path to config JSON
- `OPENWORK_HOST` / `OPENWORK_PORT`
- `OPENWORK_TOKEN` client bearer token
- `OPENWORK_HOST_TOKEN` host approval token
- `OPENWORK_APPROVAL_MODE` (`manual` | `auto`)
- `OPENWORK_APPROVAL_TIMEOUT_MS`
- `OPENWORK_WORKSPACES` (JSON array or comma-separated list of paths)
- `OPENWORK_CORS_ORIGINS` (comma-separated list or `*`)
## Endpoints (initial)
- `GET /health`
- `GET /capabilities`
- `GET /workspaces`
- `GET /workspace/:id/config`
- `PATCH /workspace/:id/config`
- `GET /workspace/:id/plugins`
- `POST /workspace/:id/plugins`
- `DELETE /workspace/:id/plugins/:name`
- `GET /workspace/:id/skills`
- `POST /workspace/:id/skills`
- `GET /workspace/:id/mcp`
- `POST /workspace/:id/mcp`
- `DELETE /workspace/:id/mcp/:name`
- `GET /workspace/:id/commands`
- `POST /workspace/:id/commands`
- `DELETE /workspace/:id/commands/:name`
- `GET /workspace/:id/export`
- `POST /workspace/:id/import`
## Approvals
All writes are gated by host approval. Host APIs require `X-OpenWork-Host-Token`:
- `GET /approvals`
- `POST /approvals/:id` with `{ "reply": "allow" | "deny" }`
Set `OPENWORK_APPROVAL_MODE=auto` to auto-approve during local development.