Custom OpenAnalyst Plugin Setup
Use this guide when you need to install or enable a custom OpenAnalyst plugin for a 10x handle or workspace.
This is an end-user setup guide, not a plugin authoring guide. It assumes the plugin already exists, has been approved or trusted, and is ready to install into OpenAnalyst.
When to use this guide
Use this when:
- 10x has enabled a custom OpenAnalyst plugin for your handle, workspace, or project.
- You need to install a 10x-hosted plugin from the OpenAnalyst plugin catalog.
- You have an advanced BYO plugin source, such as an npm package, local path, or file URL, and you understand the trust boundary.
- You need to verify whether a plugin is visible, installed, loaded, and rendering correctly.
Do not use this guide for hosted MCP tools. If you want to expose tools to ChatGPT, OpenAI, or another MCP client, use MCP Builder and Hosted Tools instead.
Do not use this guide to update hosted 10x skills through the control-plane API. For JWT-backed hosted skill metadata, runtime, publish, and delete operations, use JWT Skill Management.
What is being set up
10x and OpenAnalyst split responsibility:
| Area | 10x controls | OpenAnalyst controls |
|---|---|---|
| Availability | Which hosted plugins are visible or enabled for your account, handle, workspace, or project | Which plugins are installed into the local workspace |
| Profile intent | Which app/profile references should be available for the launch context | How those trusted references become local config |
| Runtime | Hosted 10x routes, handle authorization, and upstream records | Plugin loading, page rendering, actions, local validation, and local plugin state |
| Safety | Hosted eligibility, revocation, and route authorization | Explicit install approval, workspace reload, token-free UI payloads, and action confirmation |
Think about setup in four states:
| State | What it means |
|---|---|
available | 10x says the plugin can be shown for the current account, handle, or workspace. |
desired | A 10x app or Smartwork profile wants this workspace to use the plugin. |
installed | OpenAnalyst local config contains the plugin entry. |
loaded | OpenAnalyst exposes the plugin through its local app runtime after reload. |
A plugin is not usable just because it is visible in a catalog. It must be installed locally, the workspace must be reloaded, and the plugin app must appear in OpenAnalyst.
Before you start
You need:
- Access to
https://app.10x.in. - The correct 10x handle, workspace, or project selected.
- OpenAnalyst launched or paired from the 10x/Smartwork flow. Use Smartwork and OpenAnalyst Access if pairing is not complete.
- A trusted plugin source.
Path A: 10x-hosted custom plugin
Use this path for the normal 10x-approved flow.
Open the correct 10x context
Open
https://app.10x.in, sign in, and select the handle, workspace, or Smartwork project that should receive the plugin.Launch or pair OpenAnalyst
Start OpenAnalyst from the browser flow or finish desktop pairing. The selected 10x context should be available to the local runtime after launch.
Open plugin settings or catalog
In OpenAnalyst, open the plugin settings/catalog surface. Hosted 10x entries are displayed through the local OpenAnalyst catalog, even when 10x is the source of the hosted decision.
Install the approved plugin
Select the custom plugin that 10x has enabled for your context. Confirm the install approval prompt. Hosted installs should use the approved catalog entry instead of copying arbitrary package metadata.
Reload the workspace
Reload or restart the active workspace after install. Installing changes local config; loading the plugin happens after the workspace refreshes.
Open the plugin app
Open the new plugin app from the OpenAnalyst app list. Confirm the page renders and shows the expected handle, workspace, or missing-context notice.
Path B: BYO/local plugin
Use this path only when support, your team, or the plugin creator has given you a trusted package source.
BYO/local plugins are outside the hosted 10x catalog guarantee. You are approving local executable plugin code directly.
Confirm the plugin source
Verify the exact npm package, local path, or file URL you intend to install. Do not install from a mutable or unknown source.
Choose project or global scope
Use project scope when the plugin should apply only to one workspace. Use global scope only when you want the plugin available across local OpenAnalyst workspaces.
Approve the local install
OpenAnalyst requires explicit approval for non-built-in plugin installs. Confirm only after checking the source and intended scope.
Reload the workspace
Reload or restart the workspace so OpenAnalyst can load the newly installed plugin.
Verify the app appears
Open the app list and confirm the custom plugin appears. If it is installed but not visible, use the troubleshooting section below.
What good looks like
A healthy setup has these signals:
- The plugin is visible for the correct account, handle, workspace, or project.
- The install flow requires explicit user approval.
- The workspace was reloaded after install.
- The plugin appears in the OpenAnalyst app list.
- The plugin page renders with the expected app title and content.
- If 10x context is missing, the plugin shows a clear notice instead of a misleading empty table or zero-count dashboard.
- Risky actions such as publish, delete, refund, or external write ask for confirmation before they run.
For 10x-backed plugins, the browser UI should never show, store, or ask you to paste the runtime token used by the plugin server.
Optional validation checks
These checks are for support, advanced users, or local validation. They target the local OpenAnalyst runtime, not the hosted 10x catalog resolver.
Set OPENANALYST_LOCAL_URL to the local OpenAnalyst server URL support gives you.
Check the local catalog
curl "$OPENANALYST_LOCAL_URL/plugin/catalog"
Expected result: the response includes the plugin entry if it is visible locally.
Check installed plugins
curl "$OPENANALYST_LOCAL_URL/plugin/installed"
Expected result: the response includes the plugin after install approval.
Check loaded plugin apps
curl "$OPENANALYST_LOCAL_URL/plugin/apps"
Expected result: the response includes the custom plugin app id after workspace reload.
Check the plugin page manifest
Replace PLUGIN_APP_ID with the app id shown by /plugin/apps.
curl "$OPENANALYST_LOCAL_URL/plugin/apps/PLUGIN_APP_ID/page"
Expected result: the response includes a descriptor and a view. If the plugin needs 10x context and the context is missing, the view should explain that with a visible notice.
Check risky action confirmation
Only run this against a safe test record support has approved.
curl -X POST "$OPENANALYST_LOCAL_URL/plugin/apps/PLUGIN_APP_ID/action/ACTION_ID" \
-H "Content-Type: application/json" \
-d '{"blockId":"BLOCK_ID","rowId":"ROW_ID","confirmed":false}'
Expected result: risky actions reject the request until confirmation is supplied.
Troubleshooting
| Problem | Likely cause | What to do |
|---|---|---|
| Plugin is not visible in the catalog | Wrong handle/workspace, missing entitlement, blocked plugin, or expired 10x session | Return to https://app.10x.in, select the correct context, refresh sign-in, then reopen OpenAnalyst plugin settings |
| Plugin is visible but not installable | The hosted entry is not eligible for this context or the plugin was revoked/blocked | Check the displayed reason and contact support with the handle/workspace name |
| Plugin says installed but does not appear in apps | Workspace was not reloaded, install scope is different from the active workspace, or the plugin failed to load | Reload the workspace, confirm the scope, then check /plugin/apps |
| Plugin page renders empty data | Missing 10x base URL, handle, token, project, or workspace context | Relaunch from the 10x/Smartwork context instead of opening the workspace directly |
| BYO/local plugin fails to install | Package spec, path, file URL, or approval state is invalid | Verify the source, use the intended project/global scope, and approve the install explicitly |
Risky action returns confirmation_required | The action is intentionally protected | Re-run only after reading the confirmation copy and confirming the side effect is safe |
| Hosted MCP tool appears, but no OpenAnalyst plugin appears | Hosted MCP tools and local OpenAnalyst plugins are separate systems | Use MCP Builder and Hosted Tools for hosted MCP, or this guide for local OpenAnalyst plugins |
Related guides
Updated Jun 19, 2026
