docs: restructure the docs entrypoint around user intent (#1465)

* docs: rewrite intro with privacy-first positioning

Lead with "privacy-first, open-source alternative to Claude Cowork" and
cut the coding-agent framing. Reorganize the page into three scannable
sections (Start / For teams / For developers), keep the existing
self-host/orchestrator steps under a dedicated section below.

* docs: regroup sidebar into outcome-based clusters

Rename tabs "Cloud docs" → "Cloud" and "Cloud API" → "API" for shorter,
clearer labels.

Replace the generic "Desktop App" and "Tutorials" groups in Start here
with two outcome-based clusters: "Connect your stack" (providers, MCPs,
search) and "Do work with it" (browser, automations, skills, sharing).

Reorganize the flat Cloud list into three clusters that map to real
admin questions: "Share with your team" (templates, skill hubs,
providers), "Run in the cloud" (shared workspaces, Slack), and
"Manage access" (members & RBAC). Enterprise stays at the tail as
a standalone contact-sales page.

Slack moves from Start here to Cloud "Run in the cloud" since the
Slack setup doc itself recommends pairing Slack with a remote
workspace.

* docs: surface changelog and roadmap on the intro

Add a one-liner in the developers section pointing to the changelog
and roadmap, and include both in the footer links. Developers
evaluating the project want to see shipping velocity and direction.

* docs(self-host): add dedicated self-host page with cloud/enterprise upsells

Extract the openwork-orchestrator install steps out of the intro into
a dedicated Self-host page. Keeps the intro short and gives
self-hosters a direct, linkable entry point.

The page includes two upsell paths:

- Cloud, for readers who realize mid-read they don't want to run
  infra. Links into the team primitives (skill hubs, providers, RBAC,
  shared workspaces) that are hardest to replicate on your own box.
- Enterprise, framed around concrete scale pressures (SSO, audit,
  allowlists, VPC, support) rather than a generic 'talk to sales'
  pitch. Links to the existing cloud-enterprise contact page.

Add the page to the Start here tab as a top-level sibling of the
intro so self-hosters find it immediately.

* docs: move self-host below the outcome clusters

Self-hosting is what people reach for after they've installed the
desktop app and tried the basic flow, not before. Move it below
"Connect your stack" and "Do work with it" so the sidebar reflects
that progression.

* docs: rename intro page title to "Introduction"

"OpenWork" as a sidebar label is tautological — every page is about
OpenWork. "Introduction" tells the reader what the page is, which is
what a sidebar label is for. The in-page hero copy still carries the
positioning.

* docs: rewrite page titles as actions

Sidebar labels should describe what the reader wants to do, not what
the page is. Rename every page title to start with (or imply) a verb:

- Introduction → Get started
- How to connect ChatGPT to Openwork → Connect ChatGPT
- How to get an Anthropic API key → Connect Anthropic
- Adding a custom LLM provider/model → Connect a custom LLM
- Adding a custom MCP → Add an MCP server
- Enable Advanced Search with Exa → Enable Exa search
- Controlling your browser with OpenWork → Control the browser
- Automating Tasks → Automate tasks
- Importing a skill → Import a skill
- How to share your agents with others → Share your setup
- Self-host OpenWork → Self-host
- Missing Documentation? → Report missing docs

Makes the sidebar scannable by intent: each label is a thing the
reader is trying to accomplish.

* docs: restore precision in provider titles

"Connect X" flattened two different setup flows into one label.
Readers scanning the sidebar need to know what they'll do before
clicking:

- Sign in with ChatGPT  (OAuth, no key needed)
- Add Anthropic API key (paste a secret from Anthropic)
- Add a custom LLM      (config, not auth)

MCP and Exa labels already carry their own distinct verbs and are
left unchanged.

* docs: turn missing-docs into a question with two paths

"Missing docs?" as a question invites the click. Inside, offer both
the low-effort path (email us) and the contributor path (open a PR
against the docs folder). Drops the "A message from the Openwork
Developers" preamble, which was noise.

* docs: reorganize into tab folders, rename files to match titles

Mirrors the tab/group structure in docs.json so files are easier to
locate. Filenames now track page titles (prefixes like how-to- and
cloud- dropped since folders provide that context). Single-page groups
stay flat at the tab root; roadmap and changelog remain at repo root as
their own tabs. Cross-links in mdx files and docs.json redirects
updated for the new paths.

* docs: add roadmap/changelog folders, rename images, deprecate unused assets

Moves roadmap.mdx and changelog.mdx into their own tab folders for
consistency with the rest of the reorg, and removes the orphaned
introduction.mdx. Renames CleanShot/Screenshot/image-* files to
descriptive names based on content and updates the corresponding
alt text. Unused images and a stray .mov land in images/deprecated/
rather than being deleted. docs.json gains /roadmap and /changelog
redirects so old inbound URLs still resolve.

* more clear get starter docs

* docs: render get-started paths as Mintlify cards

* no need to have the same title twice

* edits

* more concise
This commit is contained in:
Jan Carbonell
2026-04-16 14:55:32 -07:00
committed by GitHub
parent a6bbedcbe0
commit 494bc89330
44 changed files with 198 additions and 140 deletions

View File

@@ -183,7 +183,7 @@ title: "Changelog"
- Shared skills can now be imported into existing workers.
- ChatGPT Oath added to "New chat Session"
<img src="/images/chatgptOauth.png" alt="ChatGPT Oauth" />
<img src="/images/chatgpt-new-session-cta.png" alt="New session with Connect ChatGPT for free CTA" />
</Update>

View File

@@ -33,7 +33,7 @@ The selected org controls which `Cloud workers`, `Team templates`, `Org skills`,
## What to do next
- Use [Skill hubs](/cloud-skill-hubs) to publish grouped skills for teams, or save a single skill directly from the desktop app and install it from `Skills -> Cloud`.
- Use [Shared workspaces](/cloud-shared-workspaces) to deploy hosted OpenWork runtimes that teammates can open from the desktop app.
- Use [LLM providers](/cloud-llm-providers) or [custom LLM providers](/cloud-custom-llm-providers) to manage shared model access.
- Use [Members and RBAC](/cloud-members-and-rbac) to invite people, create teams, and control access.
- Use [Skill hubs](/cloud/share-with-your-team/skill-hubs) to publish grouped skills for teams, or save a single skill directly from the desktop app and install it from `Skills -> Cloud`.
- Use [Shared workspaces](/cloud/run-in-the-cloud/shared-workspace) to deploy hosted OpenWork runtimes that teammates can open from the desktop app.
- Use [LLM providers](/cloud/share-with-your-team/managed-llm-provider) or [custom LLM providers](/cloud/share-with-your-team/custom-llm-provider) to manage shared model access.
- Use [Members and RBAC](/cloud/members-and-rbac) to invite people, create teams, and control access.

View File

@@ -13,7 +13,7 @@ This is one of the most relevant and meaningful applications of Openwork, and we
> **Disclaimer:** We recommend setting the slackbot with a remote workspace instead of in your local machine to ensure there's `hardware isolation` between the remote workspace the ai can access and your local machine.
For team-owned Slack or other long-running connectors, you can host the runtime in an OpenWork Cloud [shared workspace](/cloud-shared-workspaces) instead of keeping it on a laptop or self-managed server.
For team-owned Slack or other long-running connectors, you can host the runtime in an OpenWork Cloud [shared workspace](/cloud/run-in-the-cloud/shared-workspace) instead of keeping it on a laptop or self-managed server.
## Having the right slack permissions
@@ -42,7 +42,7 @@ Go to [Create new app](https://api.slack.com/apps?new_app=1) in Slack. What you
Now, once you have both of these tokens, you can directly paste them into the app.
<Frame>
![Clean Shot 2026 03 24 At 17 15 15@2x](/images/CleanShot2026-03-24at17.15.15@2x.png)
![Slack messaging settings with bot and app token fields](/images/slack-connect-tokens.png)
Paste you `xorb-` and `xapp-` tokens into `Settings` \> `messaging`
</Frame>
@@ -52,7 +52,7 @@ Now, once you have both of these tokens, you can directly paste them into the ap
Test the bot by sending a message. It should respond instantly indicating that a new session has been initiatied and then send the actual response afterwards. For now, you will have to use `@slack-bot-name` every time you want to talk to it.
<Frame>
![Clean Shot 2026 03 24 At 17 16 43@2x](/images/CleanShot2026-03-24at17.16.43@2x.png)
![Slack thread showing the bot reply to a test message](/images/slack-test-message-thread.png)
</Frame>
## Template Manifest Example

View File

@@ -32,4 +32,4 @@ Use a shared workspace when your team needs a hosted OpenWork runtime, a stable
- This area is currently marked `Alpha` in the Cloud dashboard.
- A workspace must be `Ready` before the desktop app can open it.
- OpenWork Cloud plan limits apply to hosted workspaces.
- If you prefer to self-host, the desktop [Get Started](/get-started) guide still works with `openwork-orchestrator`.
- If you prefer to self-host, the desktop [Get Started](/start-here/get-started) guide still works with `openwork-orchestrator`.

View File

@@ -37,4 +37,4 @@ OpenWork writes the imported provider into the workspace `opencode.jsonc` and st
- If the provider was deleted in Cloud, the desktop app shows `Removed from cloud` and lets you `Uninstall` the local config.
- The provider must have a stored org credential before the desktop app can import it.
If you only need a one-off local setup, use the desktop guide at [Adding a custom LLM provider/model](/how-to-connect-a-custom-provider).
If you only need a one-off local setup, use the desktop guide at [Adding a custom LLM provider/model](/start-here/connect-your-stack/add-a-custom-llm).

View File

@@ -17,62 +17,68 @@
{
"tab": "Start here",
"pages": [
"get-started",
"start-here/get-started",
{
"group": "Desktop App",
"group": "Connect your stack",
"pages": [
"enable-advanced-search-with-exa",
"how-to-connect-chat-gpt",
"how-to-connect-mcps",
"computer-use",
"sharing-ow-setup",
"accessing-ow-from-slack",
"automating-tasks"
"start-here/connect-your-stack/sign-in-with-chatgpt",
"start-here/connect-your-stack/add-anthropic-api-key",
"start-here/connect-your-stack/add-a-custom-llm",
"start-here/connect-your-stack/add-an-mcp-server",
"start-here/connect-your-stack/enable-exa-search"
]
},
{
"group": "Tutorials",
"group": "Do work with it",
"pages": [
"how-to-get-an-anthropic-api-key",
"how-to-connect-a-custom-provider",
"importing-a-skill"
"start-here/do-work-with-it/control-the-browser",
"start-here/do-work-with-it/automate-tasks",
"start-here/do-work-with-it/import-a-skill",
"start-here/do-work-with-it/share-your-setup"
]
},
{
"group": "Improve this doc",
"pages": [
"missing-docs"
]
}
"start-here/self-host",
"start-here/missing-docs"
]
},
{
"tab": "Cloud docs",
"tab": "Cloud",
"pages": [
"get-started-cloud",
"team-provisioning",
"cloud-skill-hubs",
"cloud-shared-workspaces",
"cloud-llm-providers",
"cloud-custom-llm-providers",
"cloud-members-and-rbac",
"cloud-enterprise"
"cloud/get-started",
{
"group": "Share with your team",
"pages": [
"cloud/share-with-your-team/team-templates",
"cloud/share-with-your-team/skill-hubs",
"cloud/share-with-your-team/managed-llm-provider",
"cloud/share-with-your-team/custom-llm-provider"
]
},
{
"group": "Run in the cloud",
"pages": [
"cloud/run-in-the-cloud/shared-workspace",
"cloud/run-in-the-cloud/connect-slack"
]
},
"cloud/members-and-rbac",
"cloud/enterprise"
]
},
{
"tab": "Cloud API",
"tab": "API",
"openapi": "https://api.openworklabs.com/openapi.json"
},
{
"tab": "Roadmap",
"pages": [
"roadmap"
"roadmap/roadmap"
]
},
{
"tab": "Changelog",
"pages": [
"changelog"
"changelog/changelog"
]
}
]
@@ -80,15 +86,23 @@
"redirects": [
{
"source": "/",
"destination": "/get-started"
"destination": "/start-here/get-started"
},
{
"source": "/quickstart",
"destination": "/get-started"
"destination": "/start-here/get-started"
},
{
"source": "/introduction",
"destination": "/get-started-cloud"
"destination": "/cloud/get-started"
},
{
"source": "/roadmap",
"destination": "/roadmap/roadmap"
},
{
"source": "/changelog",
"destination": "/changelog/changelog"
}
],
"errors": {

View File

@@ -1,51 +0,0 @@
---
title: "Get Started"
description: "OpenWork is the open source alternative to Claude Cowork. "
---
Most users use our [desktop app](https://openworklabs.com). This guide helps you setup OpenWork via the CLI so that you can run OpenWork tasks in the background on your infra.
If you want OpenWork-hosted shared workspaces, org-managed skill hubs, or shared providers for a team, use the [Cloud docs](/get-started-cloud) instead of self-hosting this flow. If you're an enterprise looking to self-host, please [book a call here](https://cal.com/team/openwork/enterprise)
## Step 1: Install on your remote server
Install the npm package:
```bash
npm install -g openwork-orchestrator
```
## Step 2: Start OpenWork in your workspace
Run OpenWork where your code lives:
```bash
openwork start --workspace /path/to/your/workspace --approval auto
```
<Frame>
![OpenWork CLI terminal output showing URL and owner token](/images/get-started-cli-output.png)
</Frame>
Copy:
- `OpenWork URL`
- `OpenWork Owner Token`
## Step 3: Connect the OpenWork desktop app
On your local machine, open the OpenWork desktop app and connect into a remote workspace with:
- On the bottom left click `+ Add workspace`
- Then click `+ Connect Remote workspace`
- Type in the `OpenWork URL and OpenWork Owner Token` from earlier
<Frame>
![Add Remote Workspace dialog in OpenWork desktop app](/images/get-started-add-remote-workspace.png)
</Frame>
## What this gives you right away
- Your code and services stay on the remote machine.
- Your local machine stays light.
- You get a fast path from install to a connected remote OpenWork workspace.

View File

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 105 KiB

View File

Before

Width:  |  Height:  |  Size: 532 KiB

After

Width:  |  Height:  |  Size: 532 KiB

View File

Before

Width:  |  Height:  |  Size: 513 KiB

After

Width:  |  Height:  |  Size: 513 KiB

View File

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 275 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 572 KiB

After

Width:  |  Height:  |  Size: 572 KiB

View File

Before

Width:  |  Height:  |  Size: 487 KiB

After

Width:  |  Height:  |  Size: 487 KiB

View File

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View File

Before

Width:  |  Height:  |  Size: 698 KiB

After

Width:  |  Height:  |  Size: 698 KiB

View File

Before

Width:  |  Height:  |  Size: 289 KiB

After

Width:  |  Height:  |  Size: 289 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 1018 KiB

After

Width:  |  Height:  |  Size: 1018 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

@@ -1,16 +0,0 @@
---
title: "Introduction"
---
OpenWork Cloud enables team to move faster by making it easy to share your setup across your org.
[https://app.openworklabs.com/](https://app.openworklabs.com/)
- \*\*Team Templates: \*\*make it easy to share your setup across your team so they spend less time copy and pasting configs.
- \*\*Members: \*\*Makes it easy to invite members to your org.
- \*\*Shared Workspace: \*\*Are cloud instances you can use to perform long-running tasks or connect permanent connection to messaging channels like Slack or Telegram.
- \*\*Custom LLMs: \*\*(coming soon)
<Frame>
![OpenWork Cloud dashboard overview](/images/cloud-dashboard-overview.png)
</Frame>

View File

@@ -1,8 +0,0 @@
---
title: "Missing Documentation?"
description: "Let us know if you're missing Openwork documentation"
---
# A message from the Openwork Developers
If you're technical and want to use a specific part of the app that is not documented well yet, [send us a quick email](mailto:team@openworklabs.com?subject=missing%20documentation&body=hey%20my%20github%20is%20%7Busername%7D%2C%20I%27m%20interested%20in%20%7Bfeature%7D%20from%20openwork%20but%20I%27m%20missing%20documentation%20on%20it%2C%20could%20you%20create%20it%3F%0A%0AThanks) and tell us what you're missing.

View File

@@ -1,5 +1,5 @@
---
title: "Adding a custom LLM provider/model"
title: "Add a custom LLM"
description: "How to connect a custom provider with OpenWork"
---
@@ -25,7 +25,7 @@ Inside `/path-to-your-workspace/.config/opencode/opencode.json`:
}
```
We've also built a [custom skill](https://share.openworklabs.com/b/01KNBQDQAK41VZSZDF5G9MW4MW) that you can import in OpenWork following [this guide](/importing-a-skill).
We've also built a [custom skill](https://share.openworklabs.com/b/01KNBQDQAK41VZSZDF5G9MW4MW) that you can import in OpenWork following [this guide](/start-here/do-work-with-it/import-a-skill).
The following tutorial covers how to [import a custom provider using the skill](https://x.com/getopenwork/status/2034129039317995908?s=20).
@@ -56,4 +56,4 @@ Pull the model first with `ollama pull qwen3:8b`, then make sure the Ollama serv
Open your desktop, change the provider name and voila! You have an fully local LLM running in your machine.
For teams, you can manage the provider in OpenWork Cloud under [LLM Providers](/cloud-llm-providers), then import it into each workspace from `Settings -> Cloud`.
For teams, you can manage the provider in OpenWork Cloud under [LLM Providers](/cloud/share-with-your-team/managed-llm-provider), then import it into each workspace from `Settings -> Cloud`.

View File

@@ -1,5 +1,5 @@
---
title: "Adding a custom MCP"
title: "Add an MCP server"
description: "How to connect a custom MCP server with openwork"
---

View File

@@ -1,5 +1,5 @@
---
title: "How to get an Anthropic API key"
title: "Add Anthropic API key"
description: "Create an Anthropic API key and use it in OpenWork"
---
@@ -12,7 +12,7 @@ That means you create the key in Anthropic first, then paste it into OpenWork.
- Your Claude subscription and your Anthropic API billing are not always the same thing, so make sure API access is enabled on your Anthropic account.
- Treat the key like a password. Anthropic will only show the full value when you create it.
If this key should be shared across a team, add Anthropic once in OpenWork Cloud `LLM Providers` and import it from [Settings -> Cloud](/cloud-llm-providers) instead of pasting it into each workspace separately.
If this key should be shared across a team, add Anthropic once in OpenWork Cloud `LLM Providers` and import it from [Settings -> Cloud](/cloud/share-with-your-team/managed-llm-provider) instead of pasting it into each workspace separately.
## Create the key in Anthropic

View File

@@ -1,10 +1,10 @@
---
title: "Enable Advanced Search with Exa"
title: "Enable Exa search"
---
[Exa](https://exa.ai) is a very fast search engine for AI. We support it as part of a global setting that is currently in `Settings` -> `Advanced`.
<Frame>
![Image](/images/image-2.png)
![Enable Exa web search toggle in Settings > Advanced](/images/exa-search-toggle.png)
</Frame>

View File

@@ -1,5 +1,5 @@
---
title: "How to connect ChatGPT to Openwork"
title: "Sign in with ChatGPT"
description: "How to use ChatGPT OAuth with Openwork"
---

View File

@@ -1,5 +1,5 @@
---
title: "Automating Tasks"
title: "Automate tasks"
---
Automations allow you to run prompts on a schedule
@@ -9,7 +9,7 @@ You can find them in `Settings → Automations`
Automations are just prompts!
<Frame>
![Image](/images/image-1.png)
![Automations page in OpenWork settings](/images/automations-page.png)
</Frame>
To create an automation you can simply say something like:
@@ -17,17 +17,17 @@ To create an automation you can simply say something like:
`Create a schedule job that is going to go to facebook.com every day take a screenshot and report back to me`
<Frame>
![Image](/images/image-3.png)
![Chat composer drafting a scheduled task](/images/automation-run-task-composer.png)
</Frame>
If it works you'll see the chat response positively:
<Frame>
![Image](/images/image-4.png)
![Generated automation config for the scheduled job](/images/automation-scheduled-job-config.png)
</Frame>
And you'll then see it listed here:
<Frame>
![Image](/images/image-5.png)
![Scheduled task visible in the Automations list](/images/automations-scheduled-list.png)
</Frame>

View File

@@ -1,5 +1,5 @@
---
title: "Controlling your browser with OpenWork"
title: "Control the browser"
description: "How to use OpenWork to automate your Chrome Browser"
---
@@ -15,11 +15,11 @@ Today, the supported path is `Control Chrome`, which uses Chrome DevTools MCP.
- In `Settings > Extensions > Control Chrome`
<Frame>
![Screenshot 2026 03 25 At 11 47 52](/images/Screenshot2026-03-25at11.47.52.png)
![Extensions page with Control Chrome MCP app](/images/extensions-control-chrome-app.png)
- Enable it and follow the instructions in the configuration screen _Note_: _do note use "Use my existing Chrome profile". It's currently not well supported._
<Frame>
![Image](/images/image.png)
![Set up Control Chrome dialog](/images/control-chrome-setup-modal.png)
</Frame>
Go back to the session view and ask it to open a website
</Frame>

View File

@@ -1,5 +1,5 @@
---
title: "Importing a skill"
title: "Import a skill"
description: "How to import an external skill into your workspace in OpenWork"
---
@@ -14,7 +14,7 @@ There is another option if you're technical: place it directly in `.opencode/ski
We recommend (1) and (3) because they match the built-in OpenWork flows most closely.
For teams, OpenWork Cloud can publish shared skills either as standalone org skills or inside a skill hub. Each desktop workspace can install them from the `Cloud` tab on the Skills page or from [Settings -> Cloud](/cloud-skill-hubs).
For teams, OpenWork Cloud can publish shared skills either as standalone org skills or inside a skill hub. Each desktop workspace can install them from the `Cloud` tab on the Skills page or from [Settings -> Cloud](/cloud/share-with-your-team/skill-hubs).
## Installing a skill from OpenWork Cloud

View File

@@ -1,11 +1,11 @@
---
title: "How to share your agents with others"
title: "Share your setup"
description: "Learn how to share your MCP, agents, skills with others"
---
There are two main primitives for a template that you can share: `Workspace` and a `Skill`.
For team-wide reuse inside an org, you can also save templates or skills to OpenWork Cloud and let teammates open them from the `Cloud` tab on the Skills page or from [Settings -> Cloud](/get-started-cloud).
For team-wide reuse inside an org, you can also save templates or skills to OpenWork Cloud and let teammates open them from the `Cloud` tab on the Skills page or from [Settings -> Cloud](/cloud/get-started).
## Sharing your entire configuration

View File

@@ -0,0 +1,35 @@
---
title: "Get started"
description: "Privacy-first, open-source alternative to Claude Cowork."
---
Our [app](https://openworklabs.com/download) lets you use any LLM, Skill and Plugin and share the setup with your team.
## Start
Get started by connecting your LLM provider of choice and send your first message:
<CardGroup cols={3}>
<Card title="Connect a provider" icon="plug" href="/start-here/connect-your-stack/sign-in-with-chatgpt">
Sign in with ChatGPT or bring your own LLM key in a few clicks.
</Card>
<Card title="Add an MCP" icon="puzzle-piece" href="/start-here/connect-your-stack/add-an-mcp-server">
Plug custom MCP servers into your workspace in minutes.
</Card>
<Card title="Control the browser" icon="globe" href="/start-here/do-work-with-it/control-the-browser">
Let OpenWork run and screenshot tasks in Chrome for you.
</Card>
</CardGroup>
## For teams
[OpenWork Cloud →](/cloud/get-started) shared workspaces, org skill hubs, managed providers, RBAC.
## Self-hosting
The first step for self-hosting is to [Start the CLI](/start-here/self-host).
If you're an enterprise looking for support in a private deployment, check out [Enterprise](/cloud/enterprise) or [book a call directly](https://cal.com/team/openwork/enterprise).
---
[GitHub](https://github.com/different-ai/openwork) · [Changelog](/changelog/changelog) · [Product Roadmap](/roadmap/roadmap) · [Missing docs](/start-here/missing-docs)

View File

@@ -0,0 +1,14 @@
---
title: "Missing docs?"
description: "Request a page or contribute one yourself."
---
Two ways to fix it.
## Ask us to write it
[Email the team](mailto:team@openworklabs.com?subject=missing%20documentation&body=hey%20my%20github%20is%20%7Busername%7D%2C%20I%27m%20interested%20in%20%7Bfeature%7D%20from%20openwork%20but%20I%27m%20missing%20documentation%20on%20it%2C%20could%20you%20create%20it%3F%0A%0AThanks) with the feature you're trying to use and we'll write the page.
## Write it yourself
OpenWork docs live in the [openwork repo](https://github.com/different-ai/openwork/tree/dev/packages/docs). Open a PR with a new `.mdx` page and we'll review it.

View File

@@ -0,0 +1,70 @@
---
title: "Self-host"
description: "Run OpenWork on your own server with openwork-orchestrator."
---
Most users just use the [desktop app](https://openworklabs.com/download). This guide covers self-hosting OpenWork via the CLI so you can run tasks on your own server and connect the desktop app to it remotely.
Want hosted workspaces, team skill hubs, or shared providers without running infra? Use [OpenWork Cloud](/cloud/get-started) instead. Rolling this out across a company? [Book a call](https://cal.com/team/openwork/enterprise) about [Enterprise](/cloud/enterprise).
## Step 1: Install on your server
```bash
npm install -g openwork-orchestrator
```
## Step 2: Start OpenWork in your workspace
Run it where your code lives:
```bash
openwork start --workspace /path/to/your/workspace --approval auto
```
<Frame>
![OpenWork CLI terminal output showing URL and owner token](/images/get-started-cli-output.png)
</Frame>
Copy:
- `OpenWork URL`
- `OpenWork Owner Token`
## Step 3: Connect the desktop app
On your local machine, open the OpenWork desktop app and connect to the remote workspace:
- Click `+ Add workspace` (bottom left)
- Click `+ Connect Remote workspace`
- Paste the `OpenWork URL` and `OpenWork Owner Token` from Step 2
<Frame>
![Add Remote Workspace dialog in OpenWork desktop app](/images/get-started-add-remote-workspace.png)
</Frame>
## What this gives you
- Your code, data, models, and credentials stay on your machine.
- Your local machine stays light — work runs on the server.
- A fast path from install to a connected remote OpenWork workspace.
## Don't want to run infra?
Skip the server. [**OpenWork Cloud**](/cloud/get-started) runs hosted workers for your team.
Cloud also gives you org-wide primitives you'd otherwise have to build: [team skill hubs](/cloud/share-with-your-team/skill-hubs), [shared LLM providers](/cloud/share-with-your-team/managed-llm-provider), [RBAC](/cloud/members-and-rbac), and [shared workspaces](/cloud/run-in-the-cloud/shared-workspace).
## Looking for support for a larger rollout?
If you're rolling OpenWork out across a company of 150+ employees, the orchestrator on a single VM might be harder to manage.
At that scale our customers typically want:
- **SSO (SAML/OIDC)** so people sign in with the identity your company already uses
- **Audit logs** across sessions, tool calls, and model usage
- **Model and tool allowlists** enforced centrally, not per-workspace
- **VPC / on-prem deployment** with your own networking and compliance constraints
- **Support and rollout help** from our team and custom deployment, not just in GitHub.
You can check the [**Enterprise**](/cloud/enterprise) page or [book a 30-minute call](https://cal.com/team/openwork/enterprise).