mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
3.4 KiB
3.4 KiB
AGENTS.md
OpenWork exists to bring OpenCode's agentic power to non-technical people through an accessible, transparent native GUI. It is an open-source competitor to Anthropic's Cowork and must stay faithful to OpenCode's principles: self-building, self-referential, standards-first, and graceful degradation.
Why OpenWork Exists
- OpenCode is powerful but terminal-only. Non-technical users can't access it.
- Cowork is closed-source and locked to Claude Max. We need an open alternative.
- Mobile-first matters. People want to run tasks from their phones.
- Slick UI is non-negotiable. The experience must feel premium, not utilitarian.
Core Expectations
- Purpose-first UI: prioritize clarity, safety, and approachability for non-technical users.
- Parity with OpenCode: anything the UI can do must map cleanly to OpenCode tools.
- Self-referential: maintain a gitignored mirror of OpenCode at
vendor/opencodefor inspection. - Self-building: prefer prompts, skills, and composable primitives over bespoke logic.
- Open source: keep the repo portable; no secrets committed.
- Slick and fluid: 60fps animations, micro-interactions, premium feel.
- Mobile-native: touch targets, gestures, and layouts optimized for small screens.
Technology Stack
| Layer | Technology |
|---|---|
| Desktop/Mobile shell | Tauri 2.x |
| Frontend | SolidJS + TailwindCSS |
| State | Solid stores + IndexedDB |
| IPC | Tauri commands + events |
| OpenCode integration | Spawn CLI or embed binary |
Repository Guidance
- Always read
design-prd.mdat session start for product intent and user flows. - Keep
design-prd.mdand.opencode/skill/*/SKILL.mdupdated when behavior changes. - Use
.opencode/skill/for repeatable workflows and domain vocabulary.
Local Structure
apps/openwork/
AGENTS.md # This file
design-prd.md # Exhaustive PRD and user flow map
.gitignore # Ignores vendor/opencode, node_modules, etc.
.opencode/
skill/ # Skills for product workflows
vendor/
opencode/ # Gitignored OpenCode mirror for self-inspection
src-tauri/ # Rust backend (Tauri)
src/ # SolidJS frontend
package.json # Frontend dependencies
Cargo.toml # Rust dependencies
OpenCode SDK Usage
OpenWork integrates with OpenCode via:
- Non-interactive mode:
opencode -p "prompt" -f json -q - Database access: Read
.opencode/opencode.dbfor sessions and messages. - MCP bridge: OpenWork as an MCP server for real-time permissions and streaming.
Key primitives to expose:
session.Service— Task runs, historymessage.Service— Chat bubbles, tool callsagent.Service— Task execution, progresspermission.Service— Permission promptstools.BaseTool— Step-level actions
Safety + Accessibility
- Default to least-privilege permissions and explicit user approvals.
- Provide transparent status, progress, and reasoning at every step.
- Use progressive disclosure for advanced controls.
- WCAG 2.1 AA compliance.
- Screen reader labels for all interactive elements.
Performance Targets
| Metric | Target |
|---|---|
| First contentful paint | <500ms |
| Time to interactive | <1s |
| Animation frame rate | 60fps |
| Interaction latency | <100ms |
| Bundle size (JS) | <200KB gzipped |