From 68318cdfb41e92c90807a49e8e13952408bcb232 Mon Sep 17 00:00:00 2001 From: Roomote Date: Sun, 2 Aug 2026 19:45:49 +0000 Subject: [PATCH 1/2] docs: correct public documentation accuracy --- apps/docs/README.md | 4 +-- apps/docs/anonymous-analytics.mdx | 10 +++--- apps/docs/automations.mdx | 14 ++++---- apps/docs/compute.mdx | 9 +++--- apps/docs/cost-analytics.mdx | 4 +-- apps/docs/environment-variables.mdx | 23 +++++++++---- apps/docs/environments.mdx | 32 +++++++++++-------- apps/docs/environments/definition.mdx | 23 ++++++------- apps/docs/file-attachments.mdx | 7 ++-- apps/docs/integrations/index.mdx | 4 +-- apps/docs/integrations/neon.mdx | 14 ++++---- apps/docs/integrations/notion.mdx | 12 ++++--- apps/docs/models.mdx | 6 ++-- .../docs/providers/communications/discord.mdx | 2 +- .../communications/microsoft-teams.mdx | 6 ++-- apps/docs/providers/compute/blaxel.mdx | 5 +++ apps/docs/providers/compute/daytona.mdx | 5 +++ apps/docs/providers/compute/e2b.mdx | 5 +++ apps/docs/providers/inference/litellm.mdx | 4 +-- apps/docs/providers/inference/ollama.mdx | 6 ++-- .../providers/inference/openai-compatible.mdx | 4 +-- apps/docs/providers/inference/opencode.mdx | 13 +++++--- apps/docs/providers/inference/vllm.mdx | 4 +-- .../providers/source-control/azure-devops.mdx | 5 ++- .../providers/source-control/bitbucket.mdx | 6 ++-- apps/docs/providers/source-control/gitea.mdx | 6 ++-- apps/docs/providers/source-control/github.mdx | 4 +-- apps/docs/providers/source-control/gitlab.mdx | 7 ++-- apps/docs/self-hosting.mdx | 22 +++++++++++-- 29 files changed, 160 insertions(+), 106 deletions(-) diff --git a/apps/docs/README.md b/apps/docs/README.md index dcaaea11e..4554d7ea7 100644 --- a/apps/docs/README.md +++ b/apps/docs/README.md @@ -7,8 +7,8 @@ and assets all live in this directory and do not depend on `@roomote/web`. ## Structure -- `docs.json` — the single source of truth for navigation, theme, branding, and - the navbar CTA. +- `docs.json` — the source of truth for navigation, primary theme configuration, + and the navbar CTA. - `*.mdx` — the documentation pages. Each page is referenced by its file name (without extension) in the `docs.json` navigation. Add `icon` frontmatter with a Lucide icon name to show an icon for the page in the sidebar. diff --git a/apps/docs/anonymous-analytics.mdx b/apps/docs/anonymous-analytics.mdx index b2053d7c2..de967fbb1 100644 --- a/apps/docs/anonymous-analytics.mdx +++ b/apps/docs/anonymous-analytics.mdx @@ -6,8 +6,8 @@ description: What anonymous usage data a Roomote deployment can share, how it is Roomote can share **anonymous telemetry** with the Roomote team to help improve the product. This is on by default, controlled entirely by -deployment admins, and designed so that Roomote-generated identifiers and the -default payload cannot identify your company, users, code, or repositories. +deployment admins. Roomote-generated identifiers are random, and the default +payload excludes direct company, user, code, and repository identifiers. ## What gets sent @@ -23,8 +23,10 @@ When anonymous telemetry is enabled, your deployment sends: for the past week; configured provider types; and enabled built-in integrations. -What is **never** sent: names, emails, repository names, task contents, -prompts, code, tokens, or credentials. +Roomote does not send names, emails, repository names, task contents, prompts, +code, tokens, or credentials. Usage events do include configured model provider +and model identifiers, so avoid identifying names in custom provider labels or +model slugs. ## How it is identified diff --git a/apps/docs/automations.mdx b/apps/docs/automations.mdx index 36c492948..bfe59fcf1 100644 --- a/apps/docs/automations.mdx +++ b/apps/docs/automations.mdx @@ -158,16 +158,16 @@ manager-facing updates and suggestions. | **CI Failure Triage** | Automatic repro-and-fix tasks for failing default-branch CI runs | Immediate via webhook | | **Summarize Merged PRs** | A digest of recently merged pull requests | Daily or weekly | -Set **Automation output** first. This is the shared Slack channel for -manager-facing posts, suggestions, summaries, and setup alerts. Invite Roomote -to that channel before you save it. +Set **Automation output** first. This is the shared Slack or Discord channel for +manager-facing posts, suggestions, summaries, and setup alerts. Make sure the +Roomote app is added to that channel before you save it. 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 -channel when one is set, otherwise to the shared Manager Channel. When Slack -is not connected at all, reports fall back automatically to your primary -Microsoft Teams conversation, the configured Telegram chat, or the configured -Discord channel (see +channel when one is set, otherwise to the shared Manager Channel. Discord can +be selected directly for either destination. When neither Slack nor Discord is +selected, reports can fall back to your primary Microsoft Teams conversation, +the configured Telegram chat, or the configured Discord channel (see [Communications](/communications#supported-providers) for connecting those surfaces). diff --git a/apps/docs/compute.mdx b/apps/docs/compute.mdx index b7520a1a3..5f9658040 100644 --- a/apps/docs/compute.mdx +++ b/apps/docs/compute.mdx @@ -69,10 +69,11 @@ This is a good fit when: The tradeoff is that Docker uses the same host that runs the rest of your deployment. Heavy tasks can compete with the web app, API, database, queues, or -other local services. Docker also depends on a restricted socket proxy that -can create and manage worker containers on the host. The proxy is still -privileged infrastructure, but the controller does not receive the raw host -socket and unrelated Docker API sections remain blocked. Docker is not a +other local services. Installer-managed production deployments use a restricted +socket proxy that can create and manage worker containers on the host. The +proxy is still privileged infrastructure, but the controller does not receive +the raw host socket and unrelated Docker API sections remain blocked. Local +development Compose mounts the host socket directly instead. Docker is not a multi-host scheduler. Hosted providers move the task sandbox into a provider-managed environment. diff --git a/apps/docs/cost-analytics.mdx b/apps/docs/cost-analytics.mdx index bc31aa14a..31e73beca 100644 --- a/apps/docs/cost-analytics.mdx +++ b/apps/docs/cost-analytics.mdx @@ -9,8 +9,8 @@ across tasks and automations. It reports the cost of recorded model usage in US dollars, so you can spot the environments, models, and work types that drive spend. -Any signed-in deployment user can open **Analytics** from the dashboard, then -select **Costs**. +Deployment admins can open **Analytics** from the dashboard, then select +**Costs**. ## What you can review diff --git a/apps/docs/environment-variables.mdx b/apps/docs/environment-variables.mdx index 6ee6f6445..45a345d90 100644 --- a/apps/docs/environment-variables.mdx +++ b/apps/docs/environment-variables.mdx @@ -200,7 +200,7 @@ as per-task auth tokens or workspace paths. | `ZAI_REGION` | Provider key | Z.AI region: `global` (International) or `china`. Defaults to `global` when unset. | | `ZAI_CODING_PLAN_API_KEY` | Provider key | Z.AI Coding Plan API key for `zai-coding-plan/...` models. Not a general platform key. | | `ZAI_CODING_PLAN_REGION` | Provider key | Z.AI Coding Plan region: `global` (International) or `china`. Defaults to `global` when unset. | -| `OPENCODE_API_KEY` | Provider key | OpenCode Zen / Go API key. | +| `OPENCODE_API_KEY` | Provider key | OpenCode Zen API key. | | `GEMINI_API_KEY` | Provider key | Google Gemini API key. Can also be saved from **Settings > Models**. | | `GOOGLE_GENERATIVE_AI_API_KEY` | Provider key | Alternate Google/Gemini provider key forwarded when configured or inferred. | | `AWS_BEARER_TOKEN_BEDROCK` | Provider key | Amazon Bedrock Mantle API key. Can also be saved from **Settings > Models**. | @@ -241,16 +241,24 @@ as per-task auth tokens or workspace paths. | `MODAL_ENDPOINT` | Optional | Modal endpoint override. | | `MODAL_ENVIRONMENT` | Optional | Modal environment name. | | `MODAL_APP_NAME` | Optional | Modal app name override. | +| `MODAL_BASE_IMAGE_REF` | Optional | Base worker image reference used when provisioning Modal sandboxes. | +| `MODAL_REGISTRY_USERNAME` | Optional | Username for pulling a private Modal base image. | +| `MODAL_REGISTRY_PASSWORD` | Optional | Password or token for pulling a private Modal base image. | +| `MODAL_ECR_OIDC_ROLE_ARN` | Optional | AWS IAM role ARN used for OIDC-authenticated pulls from Amazon ECR. | +| `MODAL_ECR_REGION` | Optional | AWS region for the ECR registry used with `MODAL_ECR_OIDC_ROLE_ARN`. | | `MODAL_REGIONS` | Optional | Comma-separated Modal sandbox placement regions (for example `us` or `us-west`). Unset keeps Modal default placement. | | `MODAL_VM_MEMORY_MIB` | Optional | Memory allocated to Modal VM sandboxes used for nested Docker workloads. Defaults to `8192` MiB. | | `E2B_API_KEY` | E2B | E2B API key. Can also be saved from **Settings > Sandboxes**. | +| `E2B_TEMPLATE_ID` | E2B | Provisioned worker template ID. Saved automatically by UI setup; required for environment-only setup. | | `E2B_DOMAIN` | Optional | E2B domain for self-hosted or custom E2B clusters. | | `E2B_MAX_SANDBOX_TIMEOUT_MS` | Optional | Maximum E2B sandbox timeout Roomote will request. Defaults to one hour. | | `DAYTONA_API_KEY` | Daytona | Daytona API key. Can also be saved from **Settings > Sandboxes**. | | `DAYTONA_API_URL` | Optional | Daytona API URL override. | | `DAYTONA_TARGET` | Optional | Daytona target or region. | +| `DAYTONA_SNAPSHOT_NAME` | Daytona | Provisioned worker snapshot name. Saved automatically by UI setup; required for environment-only setup. | | `BL_API_KEY` | Blaxel | Blaxel API key. Can also be saved from **Settings > Sandboxes**. | | `BL_WORKSPACE` | Blaxel | Blaxel workspace name. | +| `BLAXEL_IMAGE` | Blaxel | Provisioned worker image name. Saved automatically by UI setup; required for environment-only setup. | | `BLAXEL_REGION` | Optional | Blaxel sandbox placement region. Unset lets Blaxel choose the closest region. | | `BLAXEL_STANDBY_MAX_COUNT` | Optional | Maximum Blaxel standby sandboxes retained for resume. Defaults to `25`; `0` disables retention. | | `BLAXEL_STANDBY_MAX_AGE_HOURS` | Optional | Maximum age of a Blaxel standby sandbox. Defaults to `168`, capped at `168`. | @@ -403,10 +411,11 @@ apply semantics. ## Environment variables versus environment settings -Roomote also has **environment variables** inside **Settings > Environments**. -Those are task workspace variables: they are made available to Roomote tasks -running in that environment. +Roomote also has per-environment **environment variables** inside **Settings > +Environments**. Those task workspace variables are stored with that environment +and configure the codebase Roomote is working on. -This page is about deployment configuration variables. Deployment variables -configure Roomote itself; environment variables inside an environment configure -the codebase Roomote is working on. +The encrypted deployment variables managed under **Deployment Environment +Variables** can configure Roomote services and are also available to tasks in +every environment. Per-environment values can reference them as `$KEY` or +`${KEY}`, which keeps raw secrets out of environment definitions. diff --git a/apps/docs/environments.mdx b/apps/docs/environments.mdx index eead94d4b..3ce3276ae 100644 --- a/apps/docs/environments.mdx +++ b/apps/docs/environments.mdx @@ -145,9 +145,10 @@ Keep commands focused on setup, not final verification. Put test expectations in agent instructions when you want Roomote to run them before finishing a task, and include the exact command, package, or path when it matters. -Use **Don't block setup even if it fails** only for helpful-but-optional -steps. If the app cannot run without the command, let setup fail so the issue -is visible. +Repository setup runs in the background and records command failures as +readiness warnings, so a task can begin before setup finishes. Review the setup +status and logs before relying on a failed step; **Don't block setup even if it +fails** does not currently change whether an ordinary task can start. ## Use an existing Docker setup @@ -156,12 +157,15 @@ a **Docker project** (`docker_projects` in YAML) instead of duplicating that setup as Roomote-managed services. A project can use one or more Compose files or build a single Dockerfile. Roomote starts it after the repository is cloned and waits for its services to become healthy before repository setup commands -run. +run where the sandbox supports health checks. Blaxel starts Compose services +without the health wait. Map container ports to named environment ports when a service should have a live preview. Compose mappings also identify the service that owns the port. -Startup is required by default; mark a project optional only when tasks can -still work usefully without it. +Startup is required by default. A required project's failure stops later Docker +projects, but ordinary tasks surface background setup failures as readiness +warnings rather than blocking task start. Mark a project optional when later +projects should still start after it fails. Docker projects are supported by all sandbox providers. They are isolated with the task and are removed when the task sandbox is destroyed. They are still @@ -217,15 +221,15 @@ on the next restart (every overwrite is kept in version history). Removing a definition never deletes the environment; it just returns it to normal manual management. -Definitions may reference repositories that are not linked yet; the -environment is created anyway and repository mappings backfill on the next -startup after linking. Keep secrets out of definition files — the -per-environment `env` map is stored in plaintext, so use deployment -environment variables under **Settings > Environments > Deployment Environment -Variables** for secret values. +Definitions that reference repositories not yet linked to the deployment are +skipped. Link every repository, then restart Roomote to apply the definition. +Keep secrets out of definition files: the per-environment `env` map is stored +in plaintext. Store secrets as encrypted deployment variables under **Settings +> Environments > Deployment Environment Variables**, then reference them as +`$KEY` or `${KEY}` from the environment definition. -See the [self-hosting guide](/self-hosting) for the compose mount pattern and -operational details. +See [Mount declarative environments](/self-hosting#mount-declarative-environments) +for the Compose pattern. ## Make verification possible diff --git a/apps/docs/environments/definition.mdx b/apps/docs/environments/definition.mdx index 9df82f8d7..805f273ca 100644 --- a/apps/docs/environments/definition.mdx +++ b/apps/docs/environments/definition.mdx @@ -201,7 +201,7 @@ starting long-running services. | `cwd` | string | no | Alias for `working_dir`. | | `timeout` | number | no | Seconds before the command is killed. Defaults to `600`. | | `retries` | integer | no | Extra attempts for a failing command, with a 1-second delay. Use only for idempotent commands. Defaults to `0`. | -| `continue_on_error` | boolean | no | When `true`, setup continues even if this command fails. Defaults to `false`. | +| `continue_on_error` | boolean | no | Accepted command metadata. Ordinary task setup currently records command failures as warnings and continues regardless. Defaults to `false`. | | `detached` | boolean | no | Run in the background under supervision. Use for long-running servers. Defaults to `false`. | | `logfile` | string | no | Path to capture stdout and stderr. Used with `detached: true`. | @@ -211,8 +211,8 @@ Guidance: before finishing" expectations in `agentInstructions` instead. - use `detached: true` with a `logfile` for servers such as `pnpm dev`, so the process keeps running and its output is debuggable. -- use `continue_on_error: true` only for helpful-but-optional steps. If the app - cannot run without a command, let it fail so the problem is visible. +- repository setup runs in the background for ordinary tasks. Check setup + status and logs for readiness warnings before relying on a failed command. ## Services @@ -242,8 +242,9 @@ A service name cannot collide with a port name in the same environment. `docker_projects` runs Docker Compose or Dockerfile definitions already owned by a configured repository. Roomote validates the Compose model, builds images, -starts services with `docker compose up --wait`, and treats startup as required -unless `required: false` is set. +and starts services with `docker compose up --wait` where health checks are +supported. Blaxel starts Compose services without `--wait` because it does not +support Docker health checks. Common fields: @@ -255,7 +256,7 @@ Common fields: | `working_dir` | string | no | Relative directory inside the repository. Defaults to `.`. | | `env` | map | no | Variables passed to Compose. Deployment-variable references are supported. | | `ports` | list | no | Maps container ports to names from the top-level `ports` list. | -| `required` | boolean | no | Fail task startup when the project fails. Defaults to `true`. | +| `required` | boolean | no | Stop later Docker projects when this project fails. Ordinary tasks report the background failure as a readiness warning. Defaults to `true`. | | `startup_timeout_seconds` | integer | no | Build and health-wait timeout. Defaults to 600, maximum 3600. | For `type: compose`, `files` is a required list of relative Compose file paths. @@ -333,11 +334,11 @@ ports: ## Environment variables and tool versions -`env` provides workspace-level variables that every task can read. These are -workspace variables for the code Roomote is working on, distinct from the -[deployment environment variables](/environment-variables) that configure -Roomote itself. Secrets are typically added through the editor rather than -committed to a definition you share. +`env` provides workspace-level variables that every task can read. The map is +stored with the environment definition, so do not put raw secrets in it. +[Deployment environment variables](/environment-variables) are encrypted and +available to tasks in every environment as well as to Roomote services. Store +secrets there, then reference them from `env` as `$KEY` or `${KEY}`. Tool versions can be set at two levels: diff --git a/apps/docs/file-attachments.mdx b/apps/docs/file-attachments.mdx index c45cff231..79436923f 100644 --- a/apps/docs/file-attachments.mdx +++ b/apps/docs/file-attachments.mdx @@ -10,8 +10,7 @@ threads where you start or continue a Roomote task. Support varies by chat provider. The web app, Slack, and Telegram can read the formats below. Discord supports images and a smaller text and code subset, but not Office documents, PDFs, or presentations. Microsoft Teams currently -supports image attachments only. Slack can also describe one supported video -attachment per message. +supports image attachments only. Video attachments are not currently processed. Use attachments when the file itself is the fastest way to show the problem: a bug report export, a config file, a markdown handoff, a spreadsheet, or a PDF @@ -34,8 +33,8 @@ If the attachments are large, Roomote reads them in the order you attach them and applies a shared text budget so the task stays responsive. Very large earlier files can leave later files included by name only. -Text-extracted files are limited to 8 MB each. Image, video, and provider -transport limits vary by surface. +Text-extracted files are limited to 8 MB each. Image and provider transport +limits vary by surface. ## Accepted file types diff --git a/apps/docs/integrations/index.mdx b/apps/docs/integrations/index.mdx index afecc1d97..89a0dd355 100644 --- a/apps/docs/integrations/index.mdx +++ b/apps/docs/integrations/index.mdx @@ -51,8 +51,8 @@ from [Personal Settings](/personal-settings). | | Issues, projects, and JQL-backed issue context | Admin connection once | | | Turning issues into Roomote work | Workspace plus user identity | | | Board, item, and workspace context | Enable first, then teammates link accounts | -| | Database inspection in Neon | Enable first, then teammates link accounts | -| | Shared docs and database context | Enable first, then teammates link accounts | +| | Querying and managing Neon databases | Enable first, then teammates link accounts | +| | Reading and updating shared docs and databases | Enable first, then teammates link accounts | | | Product analytics, experiments, and error context | Admin connection once | | | Customer issue and account context | Admin connection once | | | Project and service context from Railway | Admin connection once | diff --git a/apps/docs/integrations/neon.mdx b/apps/docs/integrations/neon.mdx index e7236bcf8..501f2491d 100644 --- a/apps/docs/integrations/neon.mdx +++ b/apps/docs/integrations/neon.mdx @@ -1,17 +1,17 @@ --- title: Neon -description: Let Roomote inspect Neon databases during a task. +description: Let Roomote query and manage Neon databases during a task. icon: 'https://api.iconify.design/simple-icons:neon.svg?color=currentColor' --- -Connect Neon when Roomote needs direct database context from your Neon projects -while it investigates, plans, or explains a change. +Connect Neon when Roomote needs to query or manage your Neon projects while it +investigates, plans, or implements a change. ## When to use it - Inspect database state while debugging - Answer schema or data questions tied to a task -- Connect repository work to the database environment it depends on +- Create or manage projects and branches, run SQL, or change schemas and data ## How setup works @@ -21,5 +21,7 @@ need it. ## What to expect -Neon gives Roomote database context inside the task. Keep any repository changes -and human review on the normal Roomote and Git workflow. +Neon exposes mutating tools as well as read access. Neon recommends using its +MCP server only with development and testing projects, not production data. +Review tool calls carefully and limit the connected account to the projects the +task needs. diff --git a/apps/docs/integrations/notion.mdx b/apps/docs/integrations/notion.mdx index 2a5909f1f..cf60bdf9c 100644 --- a/apps/docs/integrations/notion.mdx +++ b/apps/docs/integrations/notion.mdx @@ -1,17 +1,18 @@ --- title: Notion -description: Bring Notion pages and databases into Roomote tasks. +description: Read and update Notion pages and databases from Roomote tasks. icon: 'https://api.iconify.design/simple-icons:notion.svg?color=currentColor' --- Connect Notion when product specs, runbooks, notes, or operating context already -live there and Roomote should be able to inspect that material during a task. +live there and Roomote should be able to read or update that material during a +task. ## When to use it - Pull a spec or runbook into a planning or debugging task - Inspect database-backed project context without copying it into the prompt -- Keep task context close to the docs your team already maintains +- Create or update pages and databases as part of the requested work ## How setup works @@ -21,5 +22,6 @@ need it. ## What to expect -Notion gives Roomote shared document context. The resulting engineering work -still gets reviewed in the Roomote task view and normal repository workflow. +Notion's hosted MCP server can read and write content with the connected user's +permissions. Limit the connected account's access to the content Roomote needs +and review mutating tool calls carefully. diff --git a/apps/docs/models.mdx b/apps/docs/models.mdx index 959f84f64..104b67725 100644 --- a/apps/docs/models.mdx +++ b/apps/docs/models.mdx @@ -51,7 +51,7 @@ These connections use metered API billing or a provider-managed gateway: | [MiniMax](/providers/inference/minimax) | MiniMax API key | MiniMax account | | [Moonshot AI (Kimi)](/providers/inference/moonshot-ai) | Kimi Open Platform key | Moonshot Open Platform balance | | [OpenAI](/providers/inference/openai) | OpenAI API key | OpenAI API project | -| [OpenCode Zen / Go](/providers/inference/opencode) | OpenCode API key | OpenCode account | +| [OpenCode Zen](/providers/inference/opencode) | OpenCode API key | OpenCode account | | [OpenRouter](/providers/inference/openrouter) | OpenRouter API key | OpenRouter balance and key limit | | [Together AI](/providers/inference/together-ai) | Together AI API key | Together AI account | | [Vercel AI Gateway](/providers/inference/vercel-ai-gateway) | AI Gateway API key | Vercel team | @@ -131,7 +131,7 @@ platform, secret manager, or local development shell. At minimum, set a default coding model and the matching provider key: ```sh -R_MODEL=openrouter/anthropic/claude-sonnet-4 +R_MODEL=openrouter/anthropic/claude-sonnet-5 OPENROUTER_API_KEY=... ``` @@ -139,7 +139,7 @@ The provider is the first segment of the model ID. Direct-provider access uses the provider's normal key: ```sh -R_MODEL=anthropic/claude-sonnet-4 +R_MODEL=anthropic/claude-sonnet-5 ANTHROPIC_API_KEY=... ``` diff --git a/apps/docs/providers/communications/discord.mdx b/apps/docs/providers/communications/discord.mdx index b1198a59b..a8fb37fad 100644 --- a/apps/docs/providers/communications/discord.mdx +++ b/apps/docs/providers/communications/discord.mdx @@ -101,7 +101,7 @@ unmoderated tag, or a moderated tag when the bot has Manage Threads. Individual automations can also report to their own Discord channel instead of the default: pick a Discord channel in that automation's destination selector -under **Settings > Automations**, the same way you would pick a Slack channel. +under **Automations**, the same way you would pick a Slack channel. ## Start and continue tasks diff --git a/apps/docs/providers/communications/microsoft-teams.mdx b/apps/docs/providers/communications/microsoft-teams.mdx index 68e7ec448..303609a24 100644 --- a/apps/docs/providers/communications/microsoft-teams.mdx +++ b/apps/docs/providers/communications/microsoft-teams.mdx @@ -42,9 +42,9 @@ has a different bot app ID from the Entra app ID, choose **Show advanced config* after the Directory (Tenant) ID field during setup and enter the bot-specific values there. -After Microsoft sign-in, **Settings > Linked Accounts** shows the Microsoft -Teams account. Users who signed in with another provider can link Microsoft -from that settings page. +After Microsoft sign-in, **Settings > Personal > Linked Accounts** shows the +Microsoft Teams account. Users who signed in with another provider can link +Microsoft from that settings page. ## Teams bot registration diff --git a/apps/docs/providers/compute/blaxel.mdx b/apps/docs/providers/compute/blaxel.mdx index 77149a656..0cc7437c4 100644 --- a/apps/docs/providers/compute/blaxel.mdx +++ b/apps/docs/providers/compute/blaxel.mdx @@ -21,6 +21,7 @@ then add Blaxel from **Settings > Sandboxes** or provide: ```sh BL_API_KEY=... BL_WORKSPACE=my-workspace +BLAXEL_IMAGE=... ``` You can optionally select a region: @@ -40,6 +41,10 @@ Region and standby retention are also editable under **Settings > Sandboxes > Blaxel > Advanced settings**. Process environment variables take precedence and appear as locked values in Settings. +When you connect Blaxel from **Settings > Sandboxes**, Roomote provisions the +worker image and saves its name. Environment-only deployments must build or +provision that worker image separately and set `BLAXEL_IMAGE`. + Roomote's provisioned Blaxel worker image includes Docker, Docker Compose, and the legacy iptables backend required for [Docker projects](/environments/definition#docker-projects). Container diff --git a/apps/docs/providers/compute/daytona.mdx b/apps/docs/providers/compute/daytona.mdx index 352a8ff4b..3decaaa21 100644 --- a/apps/docs/providers/compute/daytona.mdx +++ b/apps/docs/providers/compute/daytona.mdx @@ -29,6 +29,7 @@ scopes are needed. ```sh DAYTONA_API_KEY=... +DAYTONA_SNAPSHOT_NAME=... ``` Optional values: @@ -41,6 +42,10 @@ DAYTONA_TARGET=... Use `DAYTONA_API_URL` for custom Daytona endpoints. Use `DAYTONA_TARGET` when your account or deployment needs a specific target or region. +When you connect Daytona from **Settings > Sandboxes**, Roomote provisions the +worker snapshot and saves its name. Environment-only deployments must build or +provision that worker snapshot separately and set `DAYTONA_SNAPSHOT_NAME`. + Roomote's Daytona worker snapshot includes Docker and Docker Compose, so environments can run [Docker projects](/environments/definition#docker-projects). Daytona diff --git a/apps/docs/providers/compute/e2b.mdx b/apps/docs/providers/compute/e2b.mdx index 94779429a..70a326cd8 100644 --- a/apps/docs/providers/compute/e2b.mdx +++ b/apps/docs/providers/compute/e2b.mdx @@ -23,6 +23,7 @@ as deployment env vars: ```sh E2B_API_KEY=... +E2B_TEMPLATE_ID=... ``` Optional values: @@ -35,6 +36,10 @@ E2B_MAX_SANDBOX_TIMEOUT_MS=3600000 Use `E2B_DOMAIN` only for self-hosted or custom E2B clusters. The default E2B domain is enough for standard hosted E2B. +When you connect E2B from **Settings > Sandboxes**, Roomote provisions the +worker template and saves its ID. Environment-only deployments must build or +provision that worker template separately and set `E2B_TEMPLATE_ID`. + Roomote's provisioned E2B worker template includes Docker and Docker Compose, so environments can run [Docker projects](/environments/definition#docker-projects). Container builds share the task's CPU and memory; use an appropriately sized diff --git a/apps/docs/providers/inference/litellm.mdx b/apps/docs/providers/inference/litellm.mdx index a21cd8437..e46d00378 100644 --- a/apps/docs/providers/inference/litellm.mdx +++ b/apps/docs/providers/inference/litellm.mdx @@ -73,8 +73,8 @@ overrides. ## Common issues -- **No models appear.** Confirm the endpoint URL includes the LiteLLM `/v1` - API path and that the API key can list models. +- **No models appear.** Roomote accepts either the service root or a URL ending + in `/v1`. Confirm the API key can list models. - **Tasks cannot reach LiteLLM.** Check DNS, container networking, firewall rules, and whether the endpoint is reachable from the Roomote deployment. - **Costs are missing or unexpected.** Check LiteLLM's model pricing and diff --git a/apps/docs/providers/inference/ollama.mdx b/apps/docs/providers/inference/ollama.mdx index 7f6f72170..3f2586a15 100644 --- a/apps/docs/providers/inference/ollama.mdx +++ b/apps/docs/providers/inference/ollama.mdx @@ -17,9 +17,9 @@ not require an API key. You can also set the endpoint as a deployment variable: OLLAMA_BASE_URL=http://ollama:11434 ``` -Use the Ollama service root, not its `/v1` path. The local default is -`http://127.0.0.1:11434`; in a container deployment, use a hostname that -Roomote can resolve, such as `http://ollama:11434`. +Roomote accepts either the Ollama service root or a URL ending in `/v1`. The +local default is `http://127.0.0.1:11434`; in a container deployment, use a +hostname that Roomote can resolve, such as `http://ollama:11434`. After saving the provider, Roomote discovers available Ollama models. Enable the models you need and select them using `ollama/`, for example diff --git a/apps/docs/providers/inference/openai-compatible.mdx b/apps/docs/providers/inference/openai-compatible.mdx index 90f7c6c58..64c6c6ac5 100644 --- a/apps/docs/providers/inference/openai-compatible.mdx +++ b/apps/docs/providers/inference/openai-compatible.mdx @@ -68,8 +68,8 @@ do not need direct network access to the endpoint or the API key. ## Common issues -- **No models appear.** Confirm the endpoint URL includes the OpenAI `/v1` API - path and that the API key can list models when auth is required. +- **No models appear.** Roomote accepts either the service root or a URL ending + in `/v1`. Confirm the API key can list models when auth is required. - **Tasks cannot reach the endpoint.** Check DNS, container networking, firewall rules, and whether the endpoint is reachable from the Roomote deployment. - **Tool calling fails.** Roomote needs models that support tool calling. Confirm diff --git a/apps/docs/providers/inference/opencode.mdx b/apps/docs/providers/inference/opencode.mdx index cf8b8093c..1d6a0c88e 100644 --- a/apps/docs/providers/inference/opencode.mdx +++ b/apps/docs/providers/inference/opencode.mdx @@ -1,5 +1,5 @@ --- -title: OpenCode Zen / Go +title: OpenCode Zen icon: 'https://unpkg.com/@lobehub/icons-static-svg@1.94.0/icons/opencode.svg' description: Use OpenCode's routed Zen model service with Roomote. --- @@ -16,15 +16,18 @@ selected models. ## Configuration -Add **OpenCode Zen / Go** in **Settings > Models** and paste the key, or set: +Add the **OpenCode Zen / Go** option in **Settings > Models** and paste the key, +or set: ```sh OPENCODE_API_KEY=... ``` -Roomote exposes routed models under the `opencode/` prefix and adds a recommended -set after connection. The preset can use inexpensive routed models for helper -work and stronger models for coding, planning, vision, and review. +Roomote exposes routed Zen models under the `opencode/` prefix. OpenCode Go's +separate `opencode-go/` models and endpoint are not currently supported. In +task sandboxes, use Zen models that support the OpenAI-compatible chat +completions endpoint; models that require OpenCode's Anthropic, Gemini, or +Responses API routes are not currently available through Roomote's gateway. ## Cost behavior diff --git a/apps/docs/providers/inference/vllm.mdx b/apps/docs/providers/inference/vllm.mdx index 67919d65b..0cf6cbac4 100644 --- a/apps/docs/providers/inference/vllm.mdx +++ b/apps/docs/providers/inference/vllm.mdx @@ -68,8 +68,8 @@ your infrastructure monitoring to set the cost per token or per task. ## Common issues -- **No models appear.** Confirm the endpoint includes `/v1` and that Roomote - can call the server's models endpoint. +- **No models appear.** Roomote accepts either the service root or a URL ending + in `/v1`. Confirm Roomote can call the server's models endpoint. - **Requests return unauthorized.** Check `VLLM_API_KEY`, its bearer-token configuration on vLLM, and any reverse-proxy authentication. - **Tasks are slow or queue.** Check GPU memory, batch and concurrency settings, diff --git a/apps/docs/providers/source-control/azure-devops.mdx b/apps/docs/providers/source-control/azure-devops.mdx index 5bb98cef8..764f2ca04 100644 --- a/apps/docs/providers/source-control/azure-devops.mdx +++ b/apps/docs/providers/source-control/azure-devops.mdx @@ -88,9 +88,8 @@ deployment configuration. ## Sync repositories -After the Azure DevOps values are available, open Settings, go to the -Environments page, and use the Source Control section's Azure DevOps sync -button. Roomote lists repositories from: +After the Azure DevOps values are available, open **Settings > Source Control** +and refresh Azure DevOps. Roomote lists repositories from: ```text https://dev.azure.com//_apis/git/repositories?api-version=7.1 diff --git a/apps/docs/providers/source-control/bitbucket.mdx b/apps/docs/providers/source-control/bitbucket.mdx index ad3502fab..1e8c918dd 100644 --- a/apps/docs/providers/source-control/bitbucket.mdx +++ b/apps/docs/providers/source-control/bitbucket.mdx @@ -4,14 +4,14 @@ icon: 'https://api.iconify.design/simple-icons:bitbucket.svg?color=currentColor' description: Configure Bitbucket Cloud repository sync and pull request webhooks and pipeline failure triage for Roomote. --- -Bitbucket Cloud support uses one deployment-scoped OAuth client. The +Bitbucket Cloud support uses one deployment-scoped OAuth consumer. The authorized account's accessible workspaces define the repositories Roomote can sync. Bitbucket Server and Data Center are not supported. -## Create a Bitbucket OAuth client +## Create a Bitbucket OAuth consumer In the Bitbucket Cloud workspace that owns the repositories, open **Workspace -settings → Apps and features → OAuth clients**, then create an OAuth client. +settings → Apps and features → OAuth consumers**, then add a consumer. Set its callback URL to: ```text diff --git a/apps/docs/providers/source-control/gitea.mdx b/apps/docs/providers/source-control/gitea.mdx index bbf4c7936..340f69f5c 100644 --- a/apps/docs/providers/source-control/gitea.mdx +++ b/apps/docs/providers/source-control/gitea.mdx @@ -50,9 +50,9 @@ generates the webhook secret during repository sync. ## Sync repositories -After the Gitea values are available, open Settings, go to the Environments -page, and use the Source Control section's Gitea sync button. Roomote lists -repositories from the Gitea API and stores them as Gitea repository rows. +After the Gitea values are available, open **Settings > Source Control** and +refresh Gitea. Roomote lists repositories from the Gitea API and stores them as +Gitea repository rows. Gitea-backed tasks clone from the synced repository row, so sync must run before launching a Gitea-backed task. Worker tasks route selected Gitea HTTPS diff --git a/apps/docs/providers/source-control/github.mdx b/apps/docs/providers/source-control/github.mdx index f2c5ed5cf..15da4d226 100644 --- a/apps/docs/providers/source-control/github.mdx +++ b/apps/docs/providers/source-control/github.mdx @@ -199,8 +199,8 @@ Once the app is installed and an environment maps the repository: comment to start PR review or follow-up work - mention the same handle in a GitHub issue comment, or in a new issue body, to start a standard task against that repository -- link your GitHub account under Settings -> Linked Accounts so Roomote can - attribute the task to you +- link your GitHub account under **Settings > Personal > Linked Accounts** so + Roomote can attribute the task to you Issue mentions use the environment mapped to the repository. Map the repository to an environment before mentioning Roomote on issues. diff --git a/apps/docs/providers/source-control/gitlab.mdx b/apps/docs/providers/source-control/gitlab.mdx index 320b8d34e..b17371eea 100644 --- a/apps/docs/providers/source-control/gitlab.mdx +++ b/apps/docs/providers/source-control/gitlab.mdx @@ -33,10 +33,9 @@ For self-managed GitLab, also set `GITLAB_BASE_URL`. ## Sync repositories -After the application credentials are configured, open Settings, go to the -Environments page, authorize GitLab, and use the Source Control section's sync -button. Roomote lists the projects visible to the authorized GitLab account and -stores them as GitLab repository rows. +After the application credentials are configured, open **Settings > Source +Control**, authorize GitLab, and refresh it. Roomote lists the projects visible +to the authorized GitLab account and stores them as GitLab repository rows. GitLab-backed tasks clone from the synced repository row, so sync must run before launching a GitLab-backed task. diff --git a/apps/docs/self-hosting.mdx b/apps/docs/self-hosting.mdx index 9eef67544..248f27647 100644 --- a/apps/docs/self-hosting.mdx +++ b/apps/docs/self-hosting.mdx @@ -34,7 +34,7 @@ By the end of setup, you should have a reachable Roomote URL, sign-in, a source-control provider, a ChatGPT subscription or inference provider, at least one environment, and a first reviewable Roomote task. -The canonical, always up-to-date guide for operating your own server lives in +The detailed guide for operating your own server lives in [`SELF_HOSTING.md`](https://github.com/RooCodeInc/Roomote/blob/main/SELF_HOSTING.md) in the repository. @@ -43,7 +43,7 @@ in the repository. SSH into a fresh Ubuntu or Debian server (x86_64 or arm64, 4 GB+ RAM) and run: ```sh -curl -fsSL https://get.roomote.dev | bash +curl -fsSL https://get.roomote.dev | sudo bash ``` The installer brings up the full stack from published images and prints a setup @@ -158,6 +158,24 @@ After you upgrade, Roomote can surface the new release in the web app: runs the containerized stack in production mode with per-install secrets (locally or on a server). +## Mount declarative environments + +To provision [environments from definition files](/environments#provision-environments-declaratively), +mount the directory into the `api` service and point +`ROOMOTE_ENVIRONMENTS_DIR` at the container path: + +```yaml +services: + api: + volumes: + - ./environments:/roomote/environments:ro + environment: + ROOMOTE_ENVIRONMENTS_DIR: /roomote/environments +``` + +Only the API service reads these files. Restart Roomote after changing them. +Definitions are skipped until all repositories they reference are linked. + ## Requirements - A ChatGPT subscription or inference provider API key (OpenRouter, Anthropic, From 8b8e42d7588b296fb34cd93e3701ccdafdb113b6 Mon Sep 17 00:00:00 2001 From: Matt Rubens <2600+mrubens@users.noreply.github.com> Date: Sun, 2 Aug 2026 20:09:53 +0000 Subject: [PATCH 2/2] docs: restore Slack video attachment guidance --- apps/docs/file-attachments.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/docs/file-attachments.mdx b/apps/docs/file-attachments.mdx index 79436923f..d4179abc3 100644 --- a/apps/docs/file-attachments.mdx +++ b/apps/docs/file-attachments.mdx @@ -10,7 +10,9 @@ threads where you start or continue a Roomote task. Support varies by chat provider. The web app, Slack, and Telegram can read the formats below. Discord supports images and a smaller text and code subset, but not Office documents, PDFs, or presentations. Microsoft Teams currently -supports image attachments only. Video attachments are not currently processed. +supports image attachments only. On Slack, Roomote accepts the first supported +video attachment per message, describes it, and appends the result to the task +prompt. Use attachments when the file itself is the fastest way to show the problem: a bug report export, a config file, a markdown handoff, a spreadsheet, or a PDF