Developers

Build with web tech. Add Mac power deliberately.

Keep your framework, your build pipeline, and your product UI. WebHarness adds the package shape, manifest, and native boundary that make it feel at home on Mac.

AcmeOps.harness

Web build plus native intent

Web builddist/index.html
Manifestidentity + icon
Boundaryapproved calls
OutputMac-ready Harness
Harness flow
npm create vite@latest my-app
cd my-app
npm install @mentu/webharness-sdk@beta
npx @mentu/webharness-cli@beta bundle . --out build/MyApp.harness
webharness.yml
name: My App
version: 1.0.0
developer: My Company
icon: public/AppIcon.icns
entry:
  bundle: dist/index.html
capabilities:
  - fs.read
  - vault.read
  - sql.query
optional_capabilities:
  - notify.send

SDK boundary

A native bridge that starts closed.

WebHarness exposes capability objects over one deliberate bridge. Nothing sensitive is available just because JavaScript asks for it.

  • Filesystem and packaged assets
  • Vault, SQLite, and local storage
  • PDF, screenshots, and desktop actions
  • Local models, workflows, and MCP surfaces

Product SDK

Designed for product teams, not release chores.

Developers stay in TypeScript for behavior and YAML for native intent. WebHarness keeps the Harness shape, capability boundary, and release path readable.

Web stack first

Bring a static production build from the framework you already use.

Manifest as product contract

Identity, entry point, icon, and capabilities live in one readable file.

Native calls earn access

Sensitive Mac capabilities stay behind explicit policy and consent.