# Main Services and Applications in OpenWork: Desktop, MCP Gateway, and Den

> Explore OpenWork's core services: Desktop app, MCP gateway for LLM access, and Den cloud for team management and plugins. Discover key OpenWork applications.

- Repository: [Different AI/openwork](https://github.com/different-ai/openwork)
- Tags: overview
- Published: 2026-08-14

---

**OpenWork delivers three core surfaces: a local-first Desktop application, an MCP gateway that exposes LLM capabilities over HTTP, and the Den cloud control plane for team management and plugin distribution.**

The `different-ai/openwork` repository provides a free, open-source workspace that combines local execution with optional cloud-backed collaboration. Understanding the main services and applications within OpenWork is essential for developers extending the desktop client, integrating custom LLM tooling, or managing organizational resources through the Den backend. The architecture is documented in the root [`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md) file and follows a strict separation between local runtimes and cloud services.

## Core Services and Applications in OpenWork

### Desktop Application (Local-First Workspace)

The **Desktop app** is a local-first agent workspace that runs on macOS, Windows, and Linux. It hosts the React-based UI under `apps/`, a core Node backend at [`apps/server/src/server.ts`](https://github.com/different-ai/openwork/blob/main/apps/server/src/server.ts), and a demo client entry point at [`apps/ui-demo/src/main.tsx`](https://github.com/different-ai/openwork/blob/main/apps/ui-demo/src/main.tsx). Users can chat over files, run skills, schedule automations, and load Anthropic-compatible plugins directly on their machine.

### OpenWork MCP Gateway (LLM Integration Layer)

The **OpenWork MCP gateway** provides a single HTTP endpoint—`api.openworklabs.com/mcp/agent`—implemented in [`ee/apps/den-api/src/index.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-api/src/index.ts). It accepts `search_capabilities` and `execute_capability` payloads from LLM clients such as Codex, Claude Code, or Cursor. The gateway injects org-assigned skills, plugins, and external connections including Google Workspace and Microsoft 365 before forwarding requests to the appropriate Den service.

### OpenWork Den Control Plane (Cloud Backend)

The **Den** is the organizational control plane located under `ee/apps/den-*`. It provisions inference resources, manages teams and permissions, defines desktop policies, and publishes skills through internal marketplaces. Workspace management is handled by controllers such as [`ee/apps/den-workspaces/src/controllers/workspace.controller.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-workspaces/src/controllers/workspace.controller.ts), which exposes the multi-tenant API consumed by both the Desktop app and the gateway.

## How the Surfaces Interact

According to [`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md) and [`dev/AGENTS.md`](https://github.com/different-ai/openwork/blob/main/dev/AGENTS.md), the architecture follows a clear separation of concerns. The **local runtime** stores workspace data and executes skills on the user’s device. The **gateway** translates LLM client queries into concrete API calls. The **control plane** authenticates users, enforces policies, and distributes plugins. This design lets developers reuse any OpenCode skill locally while leveraging a centralized marketplace for enterprise-wide sharing.

## Practical Usage Examples

### Running the Desktop Application Locally

```bash

# Install dependencies (pnpm is required)

pnpm install

# Start the development server – launches the Electron UI and backend

pnpm dev

```

This command spins up the Electron window, starts [`apps/server/src/server.ts`](https://github.com/different-ai/openwork/blob/main/apps/server/src/server.ts), and watches the `apps/` source tree for hot-reloading.

### Calling the MCP Gateway from an LLM Client

```http
POST https://api.openworklabs.com/mcp/agent
Content-Type: application/json

{
  "search_capabilities": {"query": "list my plugins"},
  "execute_capability": {"plugin_id": "my-plugin", "action": "run", "input": {}}
}

```

The gateway forwards the request to the appropriate Den service, resolves the capability, and returns a structured response as implemented in [`ee/apps/den-api/src/index.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-api/src/index.ts).

### Creating a Workspace via the Den API

```bash
curl -X POST https://den.openworklabs.com/api/v1/workspaces \
  -H "Authorization: Bearer $OPENWORK_TOKEN" \
  -d '{"name":"My Project","org_id":"org_123"}'

```

This request reaches the workspace controller at [`ee/apps/den-workspaces/src/controllers/workspace.controller.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-workspaces/src/controllers/workspace.controller.ts) to provision a new multi-tenant workspace.

## Key Source Files to Explore

- **[`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md)** — High-level description of the three architectural surfaces.
- **[`apps/server/src/server.ts`](https://github.com/different-ai/openwork/blob/main/apps/server/src/server.ts)** — Entry point for the local backend that powers the Desktop UI.
- **[`apps/ui-demo/src/main.tsx`](https://github.com/different-ai/openwork/blob/main/apps/ui-demo/src/main.tsx)** — Minimal React UI used for the demo desktop client.
- **[`ee/apps/den-api/src/index.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-api/src/index.ts)** — HTTP gateway that exposes the MCP endpoint.
- **[`ee/apps/den-workspaces/src/controllers/workspace.controller.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-workspaces/src/controllers/workspace.controller.ts)** — Den controller for creating and managing workspaces.
- **`packages/`** — Shared TypeScript utilities and model definitions used by both the Desktop app and the Den.
- **[`dev/AGENTS.md`](https://github.com/different-ai/openwork/blob/main/dev/AGENTS.md)** — Detailed agent orchestration documentation used by the OpenCode runtime.

## Summary

- OpenWork is composed of three core surfaces: the **Desktop app**, the **MCP gateway**, and the **Den control plane**.
- The **Desktop app** under `apps/` provides a local-first workspace with a Node backend in [`apps/server/src/server.ts`](https://github.com/different-ai/openwork/blob/main/apps/server/src/server.ts).
- The **MCP gateway** at [`ee/apps/den-api/src/index.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-api/src/index.ts) exposes `api.openworklabs.com/mcp/agent` to integrate external LLM clients.
- The **Den** under `ee/apps/den-*` manages multi-tenant workspaces, policies, and plugin distribution.
- Shared logic and models live in `packages/`, while [`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md) documents the overall architecture.

## Frequently Asked Questions

### What are the main services and applications within OpenWork?

OpenWork delivers three primary services: the **Desktop application** for local workspace management, the **MCP gateway** for LLM client integration, and the **Den** for cloud-based team and plugin administration. Together they create a local-first environment with optional enterprise cloud backing.

### How does the OpenWork MCP gateway work?

The gateway is an HTTP endpoint implemented in [`ee/apps/den-api/src/index.ts`](https://github.com/different-ai/openwork/blob/main/ee/apps/den-api/src/index.ts) that accepts `search_capabilities` and `execute_capability` requests. It translates these into concrete calls to Den services after injecting organization-specific plugins and external connections.

### What is the difference between the OpenWork Desktop app and the Den?

The **Desktop app** is a local runtime under `apps/` that executes skills and stores data on the user’s machine. The **Den** is the remote control plane under `ee/apps/den-*` that handles authentication, workspace provisioning, and policy enforcement for teams.

### How do I run the OpenWork Desktop application locally?

Clone the `different-ai/openwork` repository, install dependencies with `pnpm install`, and run `pnpm dev`. This starts the Electron UI and the backend server defined in [`apps/server/src/server.ts`](https://github.com/different-ai/openwork/blob/main/apps/server/src/server.ts) with hot-reloading enabled.