- Test opencode:
bun dev(runs inpackages/opencodeby default) - Test against specific directory:
bun dev <directory> - Regenerate JavaScript SDK:
./script/generate.ts - Build standalone binary:
./packages/opencode/script/build.ts --single - Run web app:
bun run --cwd packages/app dev - Run desktop app:
bun run --cwd packages/desktop tauri dev
- ALWAYS USE PARALLEL TOOLS when applicable (multiple independent file operations, searches, etc.)
- Default branch:
dev(notmain) - Package manager: Bun 1.3+
- Type checking:
bun run typecheck(uses turbo from repo root)
- Monorepo: Bun workspaces with Turborepo
- CLI:
packages/opencode- Core business logic and TUI - Web UI:
packages/app- Shared SolidJS components - Desktop:
packages/desktop- Tauri wrapper - SDK:
packages/sdk/js- TypeScript/JavaScript SDK - Plugin:
packages/plugin- Plugin system
Follow STYLE_GUIDE.md:
- No
letstatements (useconstwith ternary) - No
elsestatements (prefer early returns) - Single-word variable names when possible
- Avoid unnecessary destructuring
- Use Bun APIs (
Bun.file(),Bun.$) - Prefer
.catch()overtry/catch
- Tests are in
packages/opencode/test/ - Run from package directory:
bun test - Specific test:
bun test test/tool/bash.test.ts
- Main docs: CONTRIBUTING.md
- Style guide: STYLE_GUIDE.md
- Package docs:
packages/*/README.mdorpackages/*/AGENTS.md