Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ca3bd76
[Fix] Discord automation replies disappear after task resume (#1017)
roomote-community[bot] Aug 3, 2026
40b0c7c
[Improve] Add personal settings shortcut to user menu (#1019)
roomote-roomote[bot] Aug 3, 2026
9c5e488
[Improve] Rework Automations settings experience (#1020)
roomote-roomote[bot] Aug 3, 2026
d8bcecd
docs: guide agents through self-hosting setup (#976)
roomote-roomote[bot] Aug 3, 2026
395ec5a
[Docs] Add homelab deployment guide (#977)
roomote-roomote[bot] Aug 3, 2026
e0ff87f
[Feat] Add self-hosted license purchase entry points (#937)
roomote-roomote[bot] Aug 3, 2026
9491478
[Fix] Discord drops task request when user links account (#1022)
roomote-community[bot] Aug 3, 2026
99911da
fix: focus Discord setup on account linking (#1023)
roomote-roomote[bot] Aug 3, 2026
aa69e73
[Chore] Use Sonnet 5 for default code reviews (#1024)
roomote-community[bot] Aug 3, 2026
542a639
[Fix] ChatGPT device-code dialog waits forever on codes that can neve…
daniel-lxs Aug 3, 2026
dc1a005
refactor: extract shared device-code polling lifecycle into useDevice…
daniel-lxs Aug 3, 2026
36e5569
[Improve] Share product tips while task environments start (#1021)
roomote-roomote[bot] Aug 3, 2026
0415eb7
feat: report automation usage in instance ping (#1030)
roomote-roomote[bot] Aug 3, 2026
576da8f
feat: hide fully used invites from settings (#1032)
roomote-roomote[bot] Aug 3, 2026
46282f2
Stop premature sandbox aborts and offer retry on late failures (#1026)
mrubens Aug 3, 2026
6556126
[Improve] Catch visual inconsistencies in UI proof (#1031)
roomote-community[bot] Aug 3, 2026
09819a6
[Improve] Refine Automations filtering and editing (#1036)
roomote-roomote[bot] Aug 3, 2026
4e1c966
[Fix] ACA Sandboxes wake-loop fix and improved suspend state manageme…
tebieshi Aug 3, 2026
2187995
[Fix] Upgrade retries reject backups after a failed image pull (#1009)
roomote-community[bot] Aug 3, 2026
92ce134
[Fix] Restore command output display in the web task view (#1054)
mrubens Aug 3, 2026
39c6202
[Feat] Add native Amazon Bedrock models alongside Mantle (#1055)
roomote-roomote[bot] Aug 3, 2026
be10fa5
[Feat] Let operators disable curated integrations (#1033)
roomote-community[bot] Aug 3, 2026
4538fad
[Docs] Add copyable Roomote Cookbook recipes (#1035)
roomote-roomote[bot] Aug 3, 2026
cff848c
Release Roomote 0.31.0 (#1059)
roomote-roomote[bot] Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .env.production.example
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,9 @@ DEFAULT_COMPUTE_PROVIDER=docker
# GITLAB_WEBHOOK_SIGNING_TOKEN=

# Optional integrations.
# Set to true to prevent curated integrations from being configured or used.
# Existing connections remain stored and become available again once unset.
# R_CURATED_INTEGRATIONS_DISABLED=true
# SLACK_APP_ID=
# R_SLACK_SIGNING_SECRET=
# R_TELEGRAM_BOT_TOKEN=
Expand Down
103 changes: 103 additions & 0 deletions .github/ISSUE_TEMPLATE/cookbook-recipe.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: Cookbook recipe
description: Propose a reusable Roomote workflow for the public Cookbook.
title: "[Cookbook]: "
labels: ["documentation", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Use this form to propose a complete, reusable Roomote workflow for the Cookbook.
Start with the [contributing recipes guide](https://docs.roomote.dev/cookbook/template),
paste the completed recipe below, and keep credentials, customer data, and
private operational details out of the example.
- type: checkboxes
id: preflight
attributes:
label: Preflight
options:
- label: I searched the existing Cookbook and docs for a duplicate or closely related recipe.
required: true
- label: I removed secrets, tokens, private keys, customer data, and private repository details.
required: true
- label: I stated provider support, permission boundaries, and other limitations plainly.
required: true
- type: textarea
id: recipe
attributes:
label: Recipe
description: Paste the completed Markdown recipe from the contributing recipes guide.
placeholder: |
---
title: Outcome-first recipe title
description: One sentence explaining the finished system and why it matters.
icon: lucide-icon-name
contributor: Name or team
contributor_url: https://example.com/contributor
contributor_company: Company
contributor_company_url: https://example.com/company
---

## Overview

Explain the recurring problem and the outcome this recipe creates.

- **Trigger**: Trigger type
- **Setup time**: About N minutes
- **Requires**: Product access, integrations, permissions
- **Serves**: Teams or roles
- **Cooked By**: Name or team from Company

## Ingredients

- Ingredient

## Steps

1. First step.

## Paste-ready configuration

```text
Configuration or prompt
```

## Variations

- Variation
validations:
required: true
- type: textarea
id: validation
attributes:
label: Validation and limitations
description: Explain what you tested, which providers or integrations it requires, and any known limitations.
validations:
required: true
- type: input
id: contributor
attributes:
label: Contributor
description: Name the person or team contributing this recipe.
validations:
required: true
- type: input
id: contributor_url
attributes:
label: Contributor URL
description: Link to the contributor's public profile or website, if available.
validations:
required: false
- type: input
id: contributor_company
attributes:
label: Contributor company
description: Name of the contributor's company, if applicable.
validations:
required: false
- type: input
id: contributor_company_url
attributes:
label: Contributor company URL
description: Link to the contributor's company website, if available.
validations:
required: false
2 changes: 2 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Verify a failed image pull preserves deployment metadata
run: bash deploy/host/tests/upgrade-failed-pull.sh
- name: Restore an encrypted bundle onto empty volumes
run: bash deploy/host/tests/backup-restore.integration.sh

Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Docs

on:
push:
branches: [main, develop]
paths:
- "apps/docs/**"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/actions/setup-environment/**"
- ".github/workflows/docs.yml"
pull_request:
branches: [main, develop]
paths:
- "apps/docs/**"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- ".github/actions/setup-environment/**"
- ".github/workflows/docs.yml"

permissions:
contents: read

env:
NODE_VERSION: 24.13.1
PNPM_VERSION: 10.29.3

jobs:
docs:
name: Validate docs
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Setup environment
uses: ./.github/actions/setup-environment
with:
frozen-lockfile: 'true'
node-version: ${{ env.NODE_VERSION }}
pnpm-version: ${{ env.PNPM_VERSION }}
- name: Check generated Cookbook index
run: pnpm --filter @roomote/docs check-cookbook-index
- name: Validate docs and links
run: pnpm --filter @roomote/docs check
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,40 @@

This file tracks product releases for Roomote (single monorepo version). Automated release entries are prepended by `pnpm run version`.

## 0.31.0 (2026-08-03)

This release expands Amazon Bedrock and deployment controls, refreshes Automations and self-hosted licensing, and adds copyable Cookbook recipes for common workflows.

### Highlights

- Use native Amazon Bedrock Runtime models alongside Mantle, including regional inference profiles and supported reasoning settings.
- Find and manage custom and built-in automations through a redesigned, filterable Automations experience.
- Disable curated integrations through a deployment policy without deleting saved credentials or affecting other provider types.
- Copy ready-to-use Cookbook recipes for outage triage, support investigations, CI fixes, product updates, and scheduled maintenance.

### Minor changes

- Redesign Automations settings around scannable Custom, Enabled, and Available sections, with permalinked configuration dialogs, responsive custom automation controls, and category and provider-aware filtering.
- Let deployment operators disable the curated integrations catalog and its existing connections through an environment policy without deleting saved credentials or affecting other provider types.
- Let operators use native Amazon Bedrock Runtime models alongside Mantle, including regional inference profiles and supported reasoning settings, without changing existing Mantle configurations.
- Add direct Roomote Cloud purchase and renewal paths to self-hosted License settings, including low-seat and upcoming-expiry guidance for administrators.
- Show useful, dismissible product tips alongside task startup progress so users can discover Roomote capabilities while an environment boots.
- Add a copyable Roomote Cookbook with ready-to-use recipes for vendor outage triage, support investigations, CI failure fixes, product update newsletters, and scheduled maintenance.

### Patch changes

- Keep Azure Container Apps sandboxes suspended until Roomote deliberately wakes them, recover cleanly from leftover workers, and stop retrying runs whose sandboxes were deleted. Thanks to @tebieshi for contributing this improvement.
- Stop ChatGPT subscription connections from waiting forever on expired or blocked device codes, explain why authorization stopped, and offer a clean restart. Thanks to @daniel-lxs for contributing this improvement.
- Recommend Claude Sonnet 5 at medium reasoning for code review when operators apply supported provider presets, while retaining Opus for planning.
- Keep Discord task requests through account linking, focus onboarding on the required personal account connection, and preserve automation reply threads when tasks resume.
- Keep the Users settings invite list focused on links that still have uses remaining while retaining consumed invite records.
- Add a direct Personal settings shortcut to the signed-in user menu.
- Make ChatGPT, xAI, and GitHub Copilot device connections handle expiry, rate limits, restarts, and stale polling consistently, with clearer terminal errors across all three providers. Thanks to @daniel-lxs for contributing this improvement.
- Give sandbox providers more time to finish rate-limited starts before aborting, and offer a retry when a task start fails before producing output.
- Show terminal command output again in the web task view, with collapsible details and a copy button for easier inspection.
- Restore the previous deployment metadata and controller after a failed self-hosted image pull so operators can retry upgrades without breaking the next backup.
- Make UI proof reject obvious visual defects elsewhere in captured frames instead of accepting evidence that only satisfies the focal claim.

## 0.30.2 (2026-08-03)

This patch improves GitHub App recovery and Discord automation follow-ups, refreshes the DeepSeek recommendation, and retires the current experimental toggles.
Expand Down
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,8 @@ copy-pasting.
or bring API keys from any supported provider. Switch models per task. No
markup on tokens.
- **Read every line.** The full source is here. Audit it, extend it, fork it.
- **No per-seat SaaS pricing.** Free for up to 10 users. Need more? Email
[help@roomote.dev](mailto:help@roomote.dev) for a license.
- **No per-seat SaaS pricing.** Free for up to 10 users. Need more? [Buy a
self-hosted license on Roomote Cloud](https://cloud.roomote.dev/sign-up).

---

Expand Down Expand Up @@ -213,7 +213,9 @@ Need SSO, custom SLAs, or dedicated support? Get in touch:
It is source-available under the [Fair Core License 1.0](LICENSE) (FCL-1.0-ALv2).
You can read, modify, and self-host the code. Free for up to 10 users. Larger
deployments need a license. Email
[help@roomote.dev](mailto:help@roomote.dev). After the license period, the code
[help@roomote.dev](mailto:help@roomote.dev) for teams larger than 100 users, or
[buy a self-hosted license on Roomote Cloud](https://cloud.roomote.dev/sign-up).
After the license period, the code
converts to Apache 2.0.

**How is this different from Cursor / Copilot / Claude Code?**
Expand Down Expand Up @@ -244,7 +246,8 @@ GitHub, GitLab, Gitea, Azure DevOps, and Bitbucket Cloud. Connect one or many.
Self-hosting is free for up to 10 registered users. You pay your own model
provider for tokens (or use the models bundled with your ChatGPT subscription).
Cloud starts at $49/mo, depending on total user count.
For larger teams, licenses are available by emailing
For 11–100 users, [buy a self-hosted license on Roomote
Cloud](https://cloud.roomote.dev/sign-up). For larger teams, email
[help@roomote.dev](mailto:help@roomote.dev).

**I already pay for ChatGPT Plus. Do I need an API key too?**
Expand Down Expand Up @@ -281,7 +284,10 @@ Report vulnerabilities privately. See [SECURITY.md](SECURITY.md).
## License

[Fair Core License 1.0 (FCL-1.0-ALv2)](LICENSE). Free for up to 10 users.
Licenses for larger deployments are available by emailing
[help@roomote.dev](mailto:help@roomote.dev). The license key functionality may
not be disabled or circumvented. [TRADEMARKS.md](TRADEMARKS.md) covers trademark
usage.
Licenses for 11–100 users are available through [Roomote
Cloud](https://cloud.roomote.dev/sign-up); larger teams can email
[help@roomote.dev](mailto:help@roomote.dev). Purchased licenses report their
current user count for subscription billing. Refresh purchased keys annually in
the Roomote Cloud portal, then replace the key in Settings or `R_LICENSE_KEY`.
The license key functionality may not be disabled or circumvented.
[TRADEMARKS.md](TRADEMARKS.md) covers trademark usage.
16 changes: 13 additions & 3 deletions SELF_HOSTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -943,15 +943,25 @@ Roomote is licensed under the Fair Core License 1.0 (FCL-1.0-ALv2, see
registered user account counts toward the limit, whichever sign-in path or
surface it uses. Removing a user frees their seat.

To go beyond 10 users, obtain a license key from the Roomote maintainers and
apply it in either of these ways:
To go beyond 10 users, [buy a self-hosted license on Roomote
Cloud](https://cloud.roomote.dev/sign-up) and apply its key in either of these
ways:

- Enter it in **Settings → Users → License** as an admin, or
- Set `R_LICENSE_KEY` in the deployment environment (for example
`.env.production` / Compose). When set, the env var takes precedence over
any key stored in Settings.

Keys are verified offline; your deployment never phones home.
Purchased keys are issued annually. While the subscription is active, refresh
the key in the Roomote Cloud portal and replace the value in Settings or
`R_LICENSE_KEY` before its displayed expiry date. Keys are verified offline;
usage reporting does not activate or validate them.

Licensed deployments report the license ID and current registered-user count to
Roomote's Ping service for subscription billing, even when anonymous analytics
is disabled. Other instance statistics remain controlled by the anonymous
analytics setting. Contact [help@roomote.dev](mailto:help@roomote.dev) for teams
larger than 100 users.

When a deployment is at its seat limit, existing users are unaffected — only
new sign-ups are blocked until a seat is freed (Settings → Users → remove a
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading