From 2fad5007fdde85172956cc9a51a2e1dc55853cff Mon Sep 17 00:00:00 2001 From: "@mrubens" <2600+mrubens@users.noreply.github.com> Date: Sat, 19 Sep 2026 03:17:05 +0000 Subject: [PATCH] docs: correct recent workflow guidance --- apps/docs/automations.mdx | 66 +++++++++++-------- apps/docs/cookbook/ci-failure-auto-fix.mdx | 10 +-- .../cookbook/product-updates-newsletter.mdx | 2 +- apps/docs/cookbook/support-channel.mdx | 2 +- apps/docs/environment-variables.mdx | 2 +- apps/docs/integration-keys.mdx | 2 +- apps/docs/integrations/asana.mdx | 2 +- apps/docs/integrations/better-stack.mdx | 2 +- apps/docs/integrations/braintrust.mdx | 2 +- apps/docs/integrations/custom-mcp-servers.mdx | 6 +- apps/docs/integrations/elevenlabs.mdx | 6 +- apps/docs/integrations/exa.mdx | 4 +- apps/docs/integrations/grafana.mdx | 2 +- apps/docs/integrations/granola.mdx | 2 +- apps/docs/integrations/http-integrations.mdx | 2 +- apps/docs/integrations/index.mdx | 9 +-- apps/docs/integrations/jira.mdx | 2 +- apps/docs/integrations/linear.mdx | 6 +- apps/docs/integrations/monday.mdx | 4 +- apps/docs/integrations/neon.mdx | 2 +- apps/docs/integrations/notion.mdx | 2 +- apps/docs/integrations/posthog.mdx | 2 +- apps/docs/integrations/pylon.mdx | 2 +- apps/docs/integrations/railway.mdx | 2 +- apps/docs/integrations/resend.mdx | 4 +- apps/docs/integrations/rippling.mdx | 2 +- apps/docs/integrations/sentry.mdx | 2 +- apps/docs/integrations/snowflake.mdx | 4 +- apps/docs/integrations/supabase.mdx | 2 +- apps/docs/integrations/supermemory.mdx | 2 +- apps/docs/integrations/vercel.mdx | 2 +- apps/docs/integrations/voice.mdx | 10 +-- apps/docs/integrations/x.mdx | 2 +- apps/docs/integrations/zero.mdx | 2 +- apps/docs/personal-settings.mdx | 23 +++---- apps/docs/providers/communications/slack.mdx | 10 +-- 36 files changed, 108 insertions(+), 100 deletions(-) diff --git a/apps/docs/automations.mdx b/apps/docs/automations.mdx index aa08dabfb4..52b103ce33 100644 --- a/apps/docs/automations.mdx +++ b/apps/docs/automations.mdx @@ -111,8 +111,8 @@ provider is connected (GitHub, GitLab, or Gitea) and the repos you care about have configured Roomote environments. When an issue is opened or reopened, Roomote starts a task immediately, investigates the issue, and posts a concrete plan or clarifying questions as a comment on that issue. It does not need a -Manager Channel, does not post Slack digests, does not implement the fix, and -does not open a pull request automatically. Azure DevOps work items and +default destination, does not post Slack digests, does not implement the fix, +and does not open a pull request automatically. Azure DevOps work items and Bitbucket issues are not covered yet. For **Resolve PR Conflicts**, pick a schedule, PR age cap, and label. The @@ -124,8 +124,8 @@ skips PRs older than the age cap you set. For **Merge announcer**, connect a source-control provider and turn the toggle on. Choose Slack, Microsoft Teams, Telegram, or Discord, then select a channel -or **DM me**. Choose **Default** to use the shared Manager Channel or normal -primary-conversation fallback. Roomote reacts to provider-deduplicated push +or **DM me**. Choose **Default** to use the deployment's default destination. +Roomote reacts to provider-deduplicated push webhooks for each active repository's current default branch, uses the deployment helper model to write a brief commit summary, and includes the pusher and commit authors. Feature-branch pushes and branch deletions are ignored. @@ -144,6 +144,12 @@ searchable list. Filter the list to **All**, **Built-in**, or **Custom** when yo need a narrower view. Each row shows its current configuration and actions; select **Configure** to edit an automation. +The **Default destination** at the top of the page receives reports from +automations that do not have an explicit destination. An admin can choose a +Slack or Discord channel or direct message, or an Email recipient. A destination +saved on an individual automation takes precedence, and existing custom +automations keep the destination selected when they were created. + Members can list, inspect, edit, enable or disable, delete, and run their own custom automations. Admins can perform these actions on all custom automations, including those without a creator. These ownership rules apply in the dashboard @@ -410,12 +416,12 @@ See how channel instructions and launch criteria work together in the ## Manager automations -The manager section controls the shared Manager Channel plus recurring -manager-facing updates and suggestions. +The manager section controls the deployment's default destination plus +recurring manager-facing updates and suggestions. | Automation | What it posts | Typical cadence | | ---------------------------- | ---------------------------------------------------------------- | ------------------------------------------- | -| **Automation output** | The shared Manager Channel destination | Configure once | +| **Default destination** | The fallback destination for automations without their own | Configure once | | **Weekly Manager Stats** | A weekly summary of Roomote activity | Weekly | | **Inference Provider Usage Alerts** | Warnings when an inference-provider quota approaches exhaustion | Hourly | | **Triage Sentry Issues** | Prioritized Sentry follow-up work | Daily or weekly | @@ -443,14 +449,15 @@ than switching the report to another address or provider. Receiving these outbound reports does not require email verification, but replying still requires the account address to be verified and pass DMARC. -Set **Automation output** first. This is the shared Slack or Discord Manager -Channel for manager-facing posts, suggestions, summaries, and setup alerts. -Make sure the Roomote app can access the channel before you save it. +Set **Default destination** first. Choose a Slack or Discord channel or direct +message, or an Email recipient, for manager-facing posts, suggestions, +summaries, and setup alerts. Make sure Roomote can reach the destination before +you save it. For Slack, the first account connection after app installation automatically -sets up public `#roomote-managers` if no Slack or Discord Manager Channel is -configured. Existing automation destinations are unchanged, and no automations -are enabled by channel setup. See [Slack setup](/providers/communications/slack#automatic-manager-channel) +sets up public `#roomote-managers` if no default destination is configured. +Existing automation destinations are unchanged, and no automations +are enabled by channel setup. See [Slack setup](/providers/communications/slack#automatic-default-destination) for required permissions and retry instructions. **Inference Provider Usage Alerts** is enabled at an hourly cadence with an 85% threshold @@ -459,15 +466,15 @@ Roomote releases. Admins can disable it, choose a Slack, Discord, or Email desti and set the warning threshold from 5% through 95% in 5% increments. Roomote checks hourly, posts an alert card for each provider that crosses the threshold in a quota cycle, and sends a fresh critical alert if the quota later reaches -100%. The automation-specific destination wins, followed by the shared Manager -Channel and then the supported primary Teams, Telegram, or Discord conversation -fallback. The check is deterministic, supports **Run now**, and never starts a -Roomote task or session. +100%. The automation-specific destination wins, followed by the default +destination and then the supported primary Teams, Telegram, or Discord +conversation fallback. The check is deterministic, supports **Run now**, and +never starts a Roomote task or session. **Platform Issue Alerts** are enabled by default. Tasks and sessions use them for admin-fixable platform, configuration, and access defects. Their own -Slack, Discord, or Email destination wins, followed by the shared Manager Channel. If -neither channel is configured, Roomote sends the alert directly to active +Slack, Discord, or Email destination wins, followed by the default destination. +If neither destination is configured, Roomote sends the alert directly to active deployment admins using each admin's first linked provider in this order: Slack, Teams, Telegram, then Discord. Admins need a linked account and must be reachable by the bot for this fallback to work. When only some admins receive @@ -483,14 +490,16 @@ does not replay historical announcements. Restarts, retries of the same version, and rollbacks do not post. Patch-only updates also stay silent while still becoming the baseline for the next comparison. An update posts when its installed version crosses a major or minor boundary, including a patch release -such as `1.10.5` to `1.11.2`. When an update skips releases, the message selects -up to three authored highlights across the intervening changelog entries and -links to the full notes for the installed release. If that authoritative range -has no authored highlights, Roomote silently completes the announcement instead -of retrying it; missing or unreadable release data remains retryable. Leave its -destination on **Default** to use the standard automation destination, or choose -a Slack, Microsoft Teams, Telegram, or Discord channel or direct message, or -an Email identity. +such as `1.10.5` to `1.11.2`. Roomote announces the matching stable major or +minor release, using its authored summary and complete highlight list, and +links to that release's full notes. If the selected release has neither an +authored summary nor highlights, Roomote silently completes the announcement +instead of retrying it; missing or unreadable release data remains retryable. +Leave its destination on **Default** to use the standard automation destination, +or choose a Slack, Microsoft Teams, Telegram, or Discord channel or direct +message, or an Email identity. **Run now** sends a sample from the latest stable +major or minor release notes without changing the automatic announcement +baseline. Delivery failures remain pending for retry without reposting a destination already recorded as successful. @@ -502,7 +511,8 @@ an already submitted report do not create duplicates. Each automation card shows a **Reports to** line with the destination the next run will use and which setting produced it. Reports go to the automation's own -explicit destination when one is set, otherwise to the shared Manager Channel. +explicit destination when one is set, otherwise to the deployment's default +destination. An unavailable explicit Email destination fails closed and never enters the fallback waterfall. If Slack is not connected, fallback selection runs only when no destination is saved or the diff --git a/apps/docs/cookbook/ci-failure-auto-fix.mdx b/apps/docs/cookbook/ci-failure-auto-fix.mdx index 164c18231e..7ab1fb97dc 100644 --- a/apps/docs/cookbook/ci-failure-auto-fix.mdx +++ b/apps/docs/cookbook/ci-failure-auto-fix.mdx @@ -12,25 +12,25 @@ contributor_company_url: https://roomote.dev When CI fails on your default branch, Roomote reacts immediately. It checks that the failure is real, reproduces the failing job inside the repository's environment, finds the root cause, opens a PR with the fix, and posts one -summary to the Manager Channel. The team finds a green PR waiting instead of a +summary to the default destination. The team finds a green PR waiting instead of a red branch. This is a built-in automation, so the recipe is one toggle plus clear instructions. - **Trigger**: Webhook - **Setup time**: About 10 minutes -- **Requires**: Admin access, source control, Manager Channel +- **Requires**: Admin access, source control, default destination - **Serves**: Engineers - **Cooked By**: [Matt Rubens](https://github.com/mrubens) from [Roomote](https://roomote.dev) ## Ingredients - [CI Failure Triage](/automations#manager-automations) -- A Manager Channel destination configured under **Automation output** +- A destination configured under **Default destination** - An environment for every repository you want triaged. Repositories outside an environment are skipped. ## Steps -1. Set the Manager Channel under **Settings > Automations > Automation output**. +1. Set the destination under **Settings > Automations > Default destination**. 2. Enable **CI Failure Triage**. 3. Confirm each repository you care about belongs to a configured environment. 4. Use **Run now** to test the configuration, or wait for the next default-branch failure. @@ -38,7 +38,7 @@ clear instructions. ## Variations - Keep experimental repositories out of environments to exclude them from triage. -- Route the summary to a dedicated `#ci-triage` channel instead of the shared Manager Channel. +- Route the summary to a dedicated `#ci-triage` channel instead of the default destination. CI Failure Triage reacts only to failures on the default branch. It supports GitHub Actions, GitLab Pipelines, Azure DevOps builds, Bitbucket Pipelines, and diff --git a/apps/docs/cookbook/product-updates-newsletter.mdx b/apps/docs/cookbook/product-updates-newsletter.mdx index a27b01cd68..d6dbe8855e 100644 --- a/apps/docs/cookbook/product-updates-newsletter.mdx +++ b/apps/docs/cookbook/product-updates-newsletter.mdx @@ -27,7 +27,7 @@ It's how we actually generate the ones we send every Friday. - A [custom automation](/automations#custom-automations) - An environment covering the product repositories -- The Resend MCP server configured under **Settings > Integrations**, with a Resend API key +- The Resend MCP server configured under **Integrations**, with a Resend API key - A report destination such as `#product-updates`, so the draft lands in a replyable thread Members can create and manage their own custom automations once the environment diff --git a/apps/docs/cookbook/support-channel.mdx b/apps/docs/cookbook/support-channel.mdx index 9dcf8d3ace..c11e79e185 100644 --- a/apps/docs/cookbook/support-channel.mdx +++ b/apps/docs/cookbook/support-channel.mdx @@ -31,7 +31,7 @@ survives triage. ## Steps -1. Connect the integrations your triage needs under **Settings > Integrations**. +1. Connect the integrations your triage needs under **Integrations**. 2. Under **Settings > Skills**, add the custom skill below and enable it for the environment your product runs in. 3. Add the escalation channel under **Settings > Automations > Auto-respond to channels** and paste the launch criteria. 4. Repost a resolved historical ticket and compare Roomote's triage with what actually happened. diff --git a/apps/docs/environment-variables.mdx b/apps/docs/environment-variables.mdx index 55bfab1c78..13e2fc1261 100644 --- a/apps/docs/environment-variables.mdx +++ b/apps/docs/environment-variables.mdx @@ -133,7 +133,7 @@ as per-task auth tokens or workspace paths. | `R_BULLMQ_SHUTDOWN_DRAIN_MS` | Optional | Same window for the bullmq service, which executes the session turns the queue resumes. Defaults to `R_API_SHUTDOWN_DRAIN_MS`, then `20000`. | | `R_FAST_DURABLE_RETRY_DISABLED` | Optional | Set to `true` to keep inference retry waits in the current process instead of parking in-flight session turns durably. Durable admission remains enabled. | | `R_CLOUD_ENABLED` | Roomote Cloud only | Deployment-managed switch for Roomote Cloud behavior, including required anonymous analytics and Cloud support integrations. Do not set this for self-hosted deployments. | -| `R_CURATED_INTEGRATIONS_DISABLED` | Optional | Operator policy for the curated **Settings > Integrations** catalog, which is enabled by default. Set to `true` and restart Roomote to prevent those integrations from being configured or used. Existing connections remain stored while disabled and become available again once the value is unset. Communications, source-control, inference, sandbox providers, and environment-defined MCP servers are unaffected. | +| `R_CURATED_INTEGRATIONS_DISABLED` | Optional | Operator policy for the curated **Integrations** catalog, which is enabled by default. Set to `true` and restart Roomote to prevent those integrations from being configured or used. Existing connections remain stored while disabled and become available again once the value is unset. Communications, source-control, inference, sandbox providers, and environment-defined MCP servers are unaffected. | | `R_GITHUB_APP_SLUG` | GitHub setup | Primary GitHub App slug used by server-rendered setup, mentions, and GitHub integration flows. | | `R_GITHUB_ADDITIONAL_APP_SLUGS` | Optional GitHub setup | Comma-separated additional GitHub App slugs that Roomote should trust as managed bot identities for review attribution and notifications. | | `SETUP_TOKEN` | Required (non-local) | One-time bootstrap token that admits the first admin at `/setup`. Required on every non-local deployment — tokenless bootstrap is allowed only when `NODE_ENV` is not `production` and `R_APP_ENV` is `development`, so anything running with `NODE_ENV=production` needs it. Without it, first-admin bootstrap stays closed so nobody can claim the founding-admin slot by reaching the URL first. Optional only in local development. | diff --git a/apps/docs/integration-keys.mdx b/apps/docs/integration-keys.mdx index d304335695..86bff6e2c2 100644 --- a/apps/docs/integration-keys.mdx +++ b/apps/docs/integration-keys.mdx @@ -7,7 +7,7 @@ Integration keys let a Roomote agent use an API key you hold, for one HTTPS service, without the key ever entering chat, a prompt, a task environment, or a transcript. You enter the key once when an agent asks for it in a Session, under **Personal Settings → Personal integrations**, or, for administrators, -under **Settings → Integrations**. Personal integrations are available only to +under **Integrations**. Personal integrations are available only to their owner; deployment-wide integrations are available to active members. The agent works with an opaque reference or a substitute token, and Roomote's API adds the real key on the way out. Integration keys are for HTTPS services, not diff --git a/apps/docs/integrations/asana.mdx b/apps/docs/integrations/asana.mdx index 45e834067e..2031b427b3 100644 --- a/apps/docs/integrations/asana.mdx +++ b/apps/docs/integrations/asana.mdx @@ -15,7 +15,7 @@ inspect projects, tasks, teams, and comments during a task. ## How setup works -Admins connect Asana from **Settings > Integrations** with a shared token. After +Admins connect Asana from **Integrations** with a shared token. After that, Roomote can use the shared connection inside tasks for the deployment. ## What to expect diff --git a/apps/docs/integrations/better-stack.mdx b/apps/docs/integrations/better-stack.mdx index 62cc38b661..360f949fff 100644 --- a/apps/docs/integrations/better-stack.mdx +++ b/apps/docs/integrations/better-stack.mdx @@ -16,7 +16,7 @@ signals, or other monitoring context that already lives there. ## How setup works -Admins connect Better Stack once from **Settings > Integrations**. +Admins connect Better Stack once from **Integrations**. ## What to expect diff --git a/apps/docs/integrations/braintrust.mdx b/apps/docs/integrations/braintrust.mdx index 201f84071b..15b6a4f959 100644 --- a/apps/docs/integrations/braintrust.mdx +++ b/apps/docs/integrations/braintrust.mdx @@ -15,7 +15,7 @@ there and you want that context available in Roomote tasks. ## How setup works -Admins enable Braintrust from **Settings > Integrations**. Each teammate then +Admins enable Braintrust from **Integrations**. Each teammate then links their own Braintrust account from [Personal Settings](/personal-settings) when they need it. diff --git a/apps/docs/integrations/custom-mcp-servers.mdx b/apps/docs/integrations/custom-mcp-servers.mdx index 25a874007e..f6927b6bfc 100644 --- a/apps/docs/integrations/custom-mcp-servers.mdx +++ b/apps/docs/integrations/custom-mcp-servers.mdx @@ -56,7 +56,7 @@ OAuth client for the callback URL shown in the dialog secret manually. If a token refresh is rejected by the server, the connection is marked as -needing reconnection: agents get a clear error pointing at Settings, and the +needing reconnection: agents get a clear error pointing at Integrations, and the server card shows **Connect** again. Roomote sends the RFC 8707 `resource` indicator by default, as required by @@ -85,7 +85,7 @@ When you add a remote server you choose who can use it: - **Everyone in this deployment** (the default) shares it with every member. Agents in every Session and task can use its tools, acting with the account - that authorized it. It appears under **Settings → Integrations**. The member + that authorized it. It appears under **Integrations**. The member who added it and deployment admins can edit, connect, or remove it; everyone else sees it read-only. - **Only me** keeps it private. Only your own Sessions and tasks receive it, @@ -132,7 +132,7 @@ operator-configured URLs. Redirects from custom servers are never followed. - Any member can add a remote server and manages the ones they added. Deployment admins manage every shared server and are the only ones who can add local (stdio) servers. Personal servers are managed by their owner alone. -- `R_CUSTOM_MCP_DISABLED=true` disables the feature entirely: the Settings +- `R_CUSTOM_MCP_DISABLED=true` disables the feature entirely: the Integrations section, the proxy routes, and delivery to tasks. It is independent of `R_CURATED_INTEGRATIONS_DISABLED`, so a deployment can disable the built-in catalog while still using its own custom servers. diff --git a/apps/docs/integrations/elevenlabs.mdx b/apps/docs/integrations/elevenlabs.mdx index ab17da3af8..9c25c3d893 100644 --- a/apps/docs/integrations/elevenlabs.mdx +++ b/apps/docs/integrations/elevenlabs.mdx @@ -9,7 +9,7 @@ Connect ElevenLabs when you want Roomote to add voice-over narration to ## How setup works -A deployment admin connects ElevenLabs once from **Settings > Integrations** +A deployment admin connects ElevenLabs once from **Integrations** with: - an ElevenLabs API key scoped to text-to-speech only, preferably with a credit @@ -23,5 +23,5 @@ plane to synthesize narration; agents receive no ElevenLabs tools, and the API key is not sent to task sandboxes. Self-hosted operators can instead set `R_ELEVENLABS_API_KEY` and -`R_ELEVENLABS_VOICE_ID`. The connection configured in **Settings > -Integrations** takes precedence when both sources are available. +`R_ELEVENLABS_VOICE_ID`. The connection configured in **Integrations** takes +precedence when both sources are available. diff --git a/apps/docs/integrations/exa.mdx b/apps/docs/integrations/exa.mdx index dde848f280..e5c0a19bd4 100644 --- a/apps/docs/integrations/exa.mdx +++ b/apps/docs/integrations/exa.mdx @@ -16,8 +16,8 @@ advanced search controls, or multi-step research. ## How setup works -Exa is off by default. A deployment operator enables it from **Settings > -Integrations** without entering credentials. Enabled deployments immediately +Exa is off by default. A deployment operator enables it from **Integrations** +without entering credentials. Enabled deployments immediately get Exa's free keyless web search, page fetching, and advanced search. Exa's rate limits apply in this mode; Exa does not publish a fixed quota on the MCP setup page. diff --git a/apps/docs/integrations/grafana.mdx b/apps/docs/integrations/grafana.mdx index 32c0c0a913..56207a973f 100644 --- a/apps/docs/integrations/grafana.mdx +++ b/apps/docs/integrations/grafana.mdx @@ -17,7 +17,7 @@ dashboards, alerting, and operational annotations. ## How setup works -Admins connect Grafana from **Settings > Integrations** with the Grafana +Admins connect Grafana from **Integrations** with the Grafana instance URL and a shared service account token. ## What to expect diff --git a/apps/docs/integrations/granola.mdx b/apps/docs/integrations/granola.mdx index 378a2873dd..0ba4831582 100644 --- a/apps/docs/integrations/granola.mdx +++ b/apps/docs/integrations/granola.mdx @@ -15,7 +15,7 @@ your meeting notes and you want that context available in Roomote tasks. ## How setup works -A deployment operator connects Granola once from **Settings > Integrations** +A deployment operator connects Granola once from **Integrations** with an API key. Granola API keys require a Business or Enterprise plan. Prefer a **workspace API key** from **Granola Settings > Connectors > Workspace diff --git a/apps/docs/integrations/http-integrations.mdx b/apps/docs/integrations/http-integrations.mdx index 33a844edec..435363bd50 100644 --- a/apps/docs/integrations/http-integrations.mdx +++ b/apps/docs/integrations/http-integrations.mdx @@ -180,7 +180,7 @@ on the same control-plane services and restart them. The broker remains availabl for owner-approved integration keys, but no operator manifest entries are loaded. This does not cancel an already-running operator request. Revoke personal integration keys under **Personal Settings → Personal integrations**; -administrators revoke deployment-wide keys under **Settings → Integrations**. +administrators revoke deployment-wide keys under **Integrations**. Those changes are checked live before dispatch and before returning upstream responses, without reloading the manifest or restarting. diff --git a/apps/docs/integrations/index.mdx b/apps/docs/integrations/index.mdx index 0e928e7565..a497b59e10 100644 --- a/apps/docs/integrations/index.mdx +++ b/apps/docs/integrations/index.mdx @@ -26,7 +26,7 @@ MCP servers defined on an environment. You will usually see one of these setup models: - **Admin connection once**: an admin connects the integration for the - deployment from **Settings > Integrations** + deployment from **Integrations** - **Enable first, then teammates link accounts**: an admin enables the integration, then each teammate links their own account from [Personal Settings](/personal-settings) when they need it @@ -38,7 +38,8 @@ You can also ask Roomote to connect any integration in this catalog from a Session. Roomote starts the provider's OAuth flow when the integration supports OAuth, opens the existing secure configuration form when an admin-managed key or certificate is required, and enables keyless integrations directly. The -same admin, ownership, and deployment availability rules apply as in Settings. +same admin, ownership, and deployment availability rules apply as on the +**Integrations** page. Credentials are never collected in chat. Roomote can list the full built-in catalog and current connection status without @@ -51,7 +52,7 @@ silently bypassed with another connection method. ## Manage available tools Some connected integrations expose a **Manage tools** action in -**Settings > Integrations**. Admins can use it to restrict the types of +**Integrations**. Admins can use it to restrict the types of operations Roomote can make with the service. Use this as a coarse permissions system, for example allowing only read @@ -103,7 +104,7 @@ authorized requests. This opt-in feature does not change sandbox networking. Beyond the built-in catalog, you can connect your own MCP servers at two scopes: -- **Deployment-wide**, under Settings → Integrations → +- **Deployment-wide**, under **Integrations** → [Custom MCP Servers](/integrations/custom-mcp-servers): remote servers (with header or OAuth authentication, credentials held server-side) and local stdio servers, available to agents in every task. diff --git a/apps/docs/integrations/jira.mdx b/apps/docs/integrations/jira.mdx index fcca334485..ea61a11695 100644 --- a/apps/docs/integrations/jira.mdx +++ b/apps/docs/integrations/jira.mdx @@ -15,7 +15,7 @@ Roomote to read issue, project, workflow, and JQL-backed context directly. ## How setup works -Admins connect Jira from **Settings > Integrations** for the deployment. +Admins connect Jira from **Integrations** for the deployment. ## What to expect diff --git a/apps/docs/integrations/linear.mdx b/apps/docs/integrations/linear.mdx index 3807bd07e6..3e1dbda5be 100644 --- a/apps/docs/integrations/linear.mdx +++ b/apps/docs/integrations/linear.mdx @@ -17,8 +17,8 @@ priority, or discussion. - On a self-hosted deployment, an administrator goes to **Settings > - Integrations**, selects **Set up Linear**, and then selects **Create the + On a self-hosted deployment, an administrator goes to **Integrations**, + selects **Set up Linear**, and then selects **Create the app** to open the pre-filled manifest. The app name defaults to `Roomote`. After creating the private app, copy its client ID, client secret, and webhook secret back into Roomote. Roomote encrypts the saved credentials. @@ -33,7 +33,7 @@ priority, or discussion. `AgentSessionEvent` webhook URL. - A deployment administrator can return to **Settings > Integrations** and + A deployment administrator can return to **Integrations** and select **Configure** on Linear. Saving a new client ID or client secret disconnects the current workspace so it can be authorized again. Removing saved credentials disables Linear but does not delete the app in Linear. diff --git a/apps/docs/integrations/monday.mdx b/apps/docs/integrations/monday.mdx index e6aef34833..918e414cf6 100644 --- a/apps/docs/integrations/monday.mdx +++ b/apps/docs/integrations/monday.mdx @@ -19,7 +19,7 @@ Use it to inspect: - A deployment administrator opens **Settings > Integrations**, finds + A deployment administrator opens **Integrations**, finds **monday.com**, and selects **Enable**. The administrator can also manage which read-only monday.com tools are available to tasks. @@ -54,7 +54,7 @@ or other monday.com data. If monday.com is unavailable in a task: -- confirm an administrator enabled it in **Settings > Integrations** +- confirm an administrator enabled it in **Integrations** - confirm you linked your account in **Personal Settings** - reconnect your account if monday.com reports that authorization expired or was revoked diff --git a/apps/docs/integrations/neon.mdx b/apps/docs/integrations/neon.mdx index 08c2a33106..0c9a6a49ab 100644 --- a/apps/docs/integrations/neon.mdx +++ b/apps/docs/integrations/neon.mdx @@ -15,7 +15,7 @@ while it investigates, plans, or explains a change. ## How setup works -Admins enable Neon from **Settings > Integrations**. Each teammate then links +Admins enable Neon from **Integrations**. Each teammate then links their own Neon account from [Personal Settings](/personal-settings) when they need it. diff --git a/apps/docs/integrations/notion.mdx b/apps/docs/integrations/notion.mdx index 38e93693bb..5befa46b22 100644 --- a/apps/docs/integrations/notion.mdx +++ b/apps/docs/integrations/notion.mdx @@ -33,7 +33,7 @@ access list in Notion whenever the page hierarchy changes. integration. You can manage this from the integration's **Content access** settings or a page's **Connections** menu. 4. Copy the internal integration secret. -5. In Roomote, open **Settings > Integrations**, choose **Configure Notion**, +5. In Roomote, open **Integrations**, choose **Configure Notion**, and paste the secret. The secret is encrypted server-side and is never sent to task sandboxes. diff --git a/apps/docs/integrations/posthog.mdx b/apps/docs/integrations/posthog.mdx index 798494105f..19ba1d168c 100644 --- a/apps/docs/integrations/posthog.mdx +++ b/apps/docs/integrations/posthog.mdx @@ -15,7 +15,7 @@ experiments, or error-tracking context that already exists there. ## How setup works -Admins connect PostHog once from **Settings > Integrations**. +Admins connect PostHog once from **Integrations**. ## What to expect diff --git a/apps/docs/integrations/pylon.mdx b/apps/docs/integrations/pylon.mdx index 74caf199b3..3a3a06b68f 100644 --- a/apps/docs/integrations/pylon.mdx +++ b/apps/docs/integrations/pylon.mdx @@ -15,7 +15,7 @@ Roomote to start with the customer history and account context already attached. ## How setup works -Admins connect Pylon once from **Settings > Integrations**. +Admins connect Pylon once from **Integrations**. ## What to expect diff --git a/apps/docs/integrations/railway.mdx b/apps/docs/integrations/railway.mdx index ca41446157..46caf401a0 100644 --- a/apps/docs/integrations/railway.mdx +++ b/apps/docs/integrations/railway.mdx @@ -15,7 +15,7 @@ inspect the project and service context that surrounds a task. ## How setup works -Admins connect Railway once from **Settings > Integrations**. +Admins connect Railway once from **Integrations**. ## What to expect diff --git a/apps/docs/integrations/resend.mdx b/apps/docs/integrations/resend.mdx index 16d617dfb5..aba525ebb8 100644 --- a/apps/docs/integrations/resend.mdx +++ b/apps/docs/integrations/resend.mdx @@ -9,7 +9,7 @@ domains, contacts, templates, broadcasts, or other email infrastructure. ## How setup works -An admin connects Resend once from **Settings > Integrations** using OAuth. The +An admin connects Resend once from **Integrations** using OAuth. The connection is shared across the deployment and requests Resend's `full_access` scope so Roomote can use inspection and management tools. @@ -33,7 +33,7 @@ The disabled tools include: - changing contact segment or topic membership - importing contacts from CSV -An admin can opt in to individual tools from **Settings > Integrations > +An admin can opt in to individual tools from **Integrations > Resend > Manage tools**. Disabled tools are hidden from tasks and rejected by the server if called directly. Admin choices persist when Resend is reconnected or disabled and enabled again. diff --git a/apps/docs/integrations/rippling.mdx b/apps/docs/integrations/rippling.mdx index 29cb162b9c..c983533bf8 100644 --- a/apps/docs/integrations/rippling.mdx +++ b/apps/docs/integrations/rippling.mdx @@ -37,7 +37,7 @@ for the current account requirements. ## Connect Rippling 1. Create a company-wide API token in Rippling with the required read scopes. -2. In Roomote, open **Settings > Integrations** and choose **Configure +2. In Roomote, open **Integrations** and choose **Configure Rippling**. 3. Paste the API token and save. diff --git a/apps/docs/integrations/sentry.mdx b/apps/docs/integrations/sentry.mdx index cb3b854dc7..05ba39115d 100644 --- a/apps/docs/integrations/sentry.mdx +++ b/apps/docs/integrations/sentry.mdx @@ -15,7 +15,7 @@ performance context from production. ## How setup works -Admins connect Sentry once from **Settings > Integrations**. Sentry's consent +Admins connect Sentry once from **Integrations**. Sentry's consent screen lists four access groups, all selected by default: - **Inspect Issues & Events** is read-only: issues, events, traces, replays, diff --git a/apps/docs/integrations/snowflake.mdx b/apps/docs/integrations/snowflake.mdx index 58bf3b15f3..9186092984 100644 --- a/apps/docs/integrations/snowflake.mdx +++ b/apps/docs/integrations/snowflake.mdx @@ -15,7 +15,7 @@ questions or support an investigation. ## How setup works -Admins connect Snowflake from **Settings > Integrations** with an account +Admins connect Snowflake from **Integrations** with an account identifier, username, role, and PKCS8 PEM-encoded private key. Add the matching public key to the Snowflake user first. Supply the private-key passphrase too when the key is encrypted. @@ -34,7 +34,7 @@ run `umask 077`, then use `openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bi ## Rotate from an existing credential 1. Install the new public key in Snowflake's unused `RSA_PUBLIC_KEY_2` slot and verify its fingerprint before changing Roomote. -2. Enter the encrypted PKCS8 private key and passphrase in **Settings > Integrations > Snowflake**. Leave both fields blank on later edits to keep the stored key. +2. Enter the encrypted PKCS8 private key and passphrase in **Integrations > Snowflake**. Leave both fields blank on later edits to keep the stored key. 3. Run a Roomote task that calls `list_databases`, `list_schemas`, and `execute_sql` with `SELECT CURRENT_USER(), CURRENT_ROLE(), CURRENT_WAREHOUSE()`. Confirm the configured role can read only the intended data. 4. Review Roomote and Snowflake login logs for a successful JWT login without credential material. A saved connection is not proof that Snowflake accepted it. 5. After an observation window, revoke the previous public-key slot and verify a fresh Roomote task still connects. diff --git a/apps/docs/integrations/supabase.mdx b/apps/docs/integrations/supabase.mdx index 8581ff3c99..2be67767a3 100644 --- a/apps/docs/integrations/supabase.mdx +++ b/apps/docs/integrations/supabase.mdx @@ -15,7 +15,7 @@ project while it investigates, plans, or explains work. ## How setup works -Admins enable Supabase from **Settings > Integrations**. Each teammate then +Admins enable Supabase from **Integrations**. Each teammate then links their own Supabase account from [Personal Settings](/personal-settings) when they need it. diff --git a/apps/docs/integrations/supermemory.mdx b/apps/docs/integrations/supermemory.mdx index bc78a5519f..db255b1f43 100644 --- a/apps/docs/integrations/supermemory.mdx +++ b/apps/docs/integrations/supermemory.mdx @@ -17,7 +17,7 @@ decisions, or important project conventions. ## How setup works -Admins connect Supermemory once from **Settings > Integrations**. +Admins connect Supermemory once from **Integrations**. ## What to expect diff --git a/apps/docs/integrations/vercel.mdx b/apps/docs/integrations/vercel.mdx index b69808e3b5..7e98cc9019 100644 --- a/apps/docs/integrations/vercel.mdx +++ b/apps/docs/integrations/vercel.mdx @@ -17,7 +17,7 @@ already lives in your Vercel workspace. ## How setup works -Admins connect Vercel from **Settings > Integrations** with a shared Vercel +Admins connect Vercel from **Integrations** with a shared Vercel access token. They can also save an optional default team ID or slug so tool calls stay scoped to the shared workspace by default. diff --git a/apps/docs/integrations/voice.mdx b/apps/docs/integrations/voice.mdx index 1c21eb4a3d..869d047ee8 100644 --- a/apps/docs/integrations/voice.mdx +++ b/apps/docs/integrations/voice.mdx @@ -9,7 +9,7 @@ any session, on the home page, or in the **New Session** dialog. ## How setup works -A deployment admin connects Voice once from **Settings > Integrations** with an +A deployment admin connects Voice once from **Integrations** with an OpenAI API key from a project that has GPT-Live access. We recommend a key separate from any key used for task inference, so voice can be billed and revoked on its own. @@ -32,7 +32,7 @@ its WebRTC connection offer to Roomote and receives only the negotiated answer. Self-hosted operators can instead set `R_VOICE_OPENAI_API_KEY`. When both are present the environment variable is used. Roomote's general `OPENAI_API_KEY` is never used for voice, so enabling OpenAI for task inference does not turn -voice on. An environment-managed key cannot be edited or disconnected in -Settings and uses Marin because it has no stored voice selection, but a -deployment admin can still turn Voice off and back on for the deployment from -the Voice card. A key saved in Settings is kept while Voice is off. +voice on. An environment-managed key cannot be edited or disconnected in the +Integrations page and uses Marin because it has no stored voice selection, but +a deployment admin can still turn Voice off and back on for the deployment from +the Voice card. A key saved in Integrations is kept while Voice is off. diff --git a/apps/docs/integrations/x.mdx b/apps/docs/integrations/x.mdx index f98a316b10..6b71d77bdb 100644 --- a/apps/docs/integrations/x.mdx +++ b/apps/docs/integrations/x.mdx @@ -18,7 +18,7 @@ what's trending. ## How setup works -Admins connect X from **Settings > Integrations** with an app-only bearer +Admins connect X from **Integrations** with an app-only bearer token from the [X Developer Console](https://console.x.com/): go to **Apps**, open your app, then generate the Bearer Token from its **Keys and tokens** tab. One deployment-wide connection covers every task. diff --git a/apps/docs/integrations/zero.mdx b/apps/docs/integrations/zero.mdx index a531dc8b68..d7af8a23b7 100644 --- a/apps/docs/integrations/zero.mdx +++ b/apps/docs/integrations/zero.mdx @@ -17,7 +17,7 @@ a Zero wallet connected once for the deployment. ## How setup works -1. An admin enables Zero from **Settings > Integrations**. +1. An admin enables Zero from **Integrations**. 2. That admin connects Zero once for the workspace via OAuth. When Zero is enabled for the deployment, Roomote installs the `zero` CLI for diff --git a/apps/docs/personal-settings.mdx b/apps/docs/personal-settings.mdx index cdd87a8d1a..3f3c5f6d2d 100644 --- a/apps/docs/personal-settings.mdx +++ b/apps/docs/personal-settings.mdx @@ -49,8 +49,8 @@ agents receive an opaque reference or a task-scoped substitute rather than the key itself. An integration-key approval created from a Session also appears here when you -choose **Only me**. Deployment-wide integration keys instead appear under the -administrator's **Settings → Integrations** page. If an administrator changes a +choose **Only me**. Deployment-wide integration keys instead appear on the +administrator's **Integrations** page. If an administrator changes a shared integration to owner-only access, Roomote moves it to that owner's Personal integrations card. @@ -65,7 +65,7 @@ account. Roomote reaches the server through its proxy and keeps headers and OAuth tokens server-side. A server you ask Roomote to connect privately in a Session appears here too. Open a server to edit it, manage which tools agents may use, or share it with everyone in the deployment; Roomote then moves it to -**Settings → Integrations**. +**Integrations**. See [Custom MCP servers](/integrations/custom-mcp-servers) for authentication options and security boundaries. @@ -98,21 +98,18 @@ Personal Settings also include app preferences such as: Most teammates only need profile, linked accounts, and theme settings. -### Try personalized Home suggestions +### Use personalized Home suggestions -**Home suggestions** is a deployment-wide experiment. When an admin enables it -under **Settings > Experimental**, Roomote uses up to -five of your recent successfully completed and ingested task memories to prepare -short ideas for what to do next in the Home composer. Suggestions are prepared -in the background when possible and rotate until you focus the composer; press -Tab to accept the current suggestion. +When [Memory](/memory) is configured, Roomote uses up to five of your recent +successfully completed and ingested task memories to prepare short ideas for +what to do next in the Home composer. Suggestions are prepared in the +background when possible and rotate until you focus the composer; press Tab to +accept the current suggestion. Only your visible, manually initiated work is eligible. Roomote excludes other members' work, automations, system tasks, hidden or deleted tasks, incomplete runs, and memories that have not finished ingesting. If Memory or helper-model generation is unavailable, Home keeps the standard non-personalized suggestions. -An admin can turn the experiment off to stop personalized suggestion requests -for every member. ### Continue peer conversations @@ -173,7 +170,7 @@ feature. ## Common issues - **A linked account is missing.** Ask an admin to enable the integration from - **Settings > Integrations**. + **Integrations**. - **A task uses the wrong identity.** Check that the relevant account is linked and that you started the task from the expected chat, source-control, or dashboard user. diff --git a/apps/docs/providers/communications/slack.mdx b/apps/docs/providers/communications/slack.mdx index e571e6a221..fa3804d217 100644 --- a/apps/docs/providers/communications/slack.mdx +++ b/apps/docs/providers/communications/slack.mdx @@ -72,16 +72,16 @@ During OAuth install, Roomote also records the installed bot display name when Slack exposes it, so setup and automation guidance can show the actual Slack app users should mention instead of assuming `@Roomote`. -## Automatic manager channel +## Automatic default destination After the app is installed, the first user who links their Slack account to Roomote triggers setup of a public `#roomote-managers` channel in that workspace. Installing the app alone does not trigger setup. Roomote creates the channel or reuses an existing public, unarchived, nonshared channel with that exact name, -ensures the bot is a member, and sets it as the shared **Manager Channel** under -**Settings > Automations > Automation output**. +ensures the bot is a member, and sets it as the **Default destination** under +**Settings > Automations > Default destination**. -Existing Slack or Discord Manager Channel settings and explicit automation +An existing default destination and explicit automation destinations are preserved. This setup does not create or enable automations. Private channels are not selected, converted, or read by automatic setup; they remain available for manual configuration with the appropriate bot access. @@ -90,7 +90,7 @@ Automatic setup requires the bot scopes `channels:manage` and `channels:join`. For an existing installation, use **Update app**, then **Reinstall in Slack** to approve these permissions. If workspace restrictions, unavailable permissions, or Slack errors prevent setup, account authentication still succeeds. Link your -Slack account again to retry, or configure the Manager Channel manually. +Slack account again to retry, or configure the default destination manually. ## Redirect URLs