Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 3 additions & 4 deletions .env.production.example
Original file line number Diff line number Diff line change
Expand Up @@ -149,15 +149,14 @@ DEFAULT_COMPUTE_PROVIDER=docker
# serves, and the embedding pair is create-time: set everything BEFORE the
# Brain's first boot. gbrain's defaults (text-embedding-3-small, 1536) name
# models the bundled server does not serve, so the URLs alone are not a
# working configuration. The openrouter: prefix on the reranker routes it
# through this deployment's gateway, which strips the prefix before
# forwarding.
# working configuration. Self-run model names pass through unchanged and
# must exactly match the ids served by the upstream.
# R_BRAIN_EMBEDDINGS_UPSTREAM_URL=http://infinity:7997
# R_BRAIN_RERANK_UPSTREAM_URL=http://infinity:7997
# R_BRAIN_INFERENCE_UPSTREAM_API_KEY=
# R_BRAIN_EMBEDDING_MODEL=BAAI/bge-m3
# R_BRAIN_EMBEDDING_DIMENSIONS=1024
# R_BRAIN_RERANKER_MODEL=openrouter:BAAI/bge-reranker-v2-m3
# R_BRAIN_RERANKER_MODEL=BAAI/bge-reranker-v2-m3
# R_GITHUB_APP_ID=
# Raw GitHub App private-key PEM with newlines escaped as \n; do not base64 it.
# R_GITHUB_APP_PRIVATE_KEY=
Expand Down
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.45.0 (2026-08-27)

This release adds secure hosted trial inference and self-run Brain model options, expands GLM 5.3 support, and improves reliability across Fast sessions, pull-request reviews, Memory, and chat.

### Highlights

- Start hosted deployments with secure, spend-capped Roomote trial inference and accurate cost reporting.
- Run Brain embeddings and reranking on self-hosted infrastructure with multilingual bundled defaults.
- Use GLM 5.3 and GLM 5.3 Flash across more existing inference providers.
- Keep Fast sessions, pull-request re-reviews, Memory ingestion, and chat reporting reliable through retries and resumptions.

### Minor changes

- Expand GLM 5.3 and GLM 5.3 Flash availability and recommendations across OpenRouter, Vercel AI Gateway, Requesty, OpenCode Go, Z.AI, and Z.AI Coding Plan.
- Offer secure, spend-capped Roomote trial inference during hosted setup, record its real model costs in task and cost analytics, and present the option with clearer onboarding copy.
- Let self-hosted deployments run Brain embeddings and reranking through their own OpenAI-compatible upstream, including an opt-in bundled CPU service with multilingual model defaults.

### Patch changes

- Include the Brain's memory volume and database state in supported self-hosted backup and restore bundles so memories survive host recovery consistently.
- Treat temporary Brain network outages as queue backpressure so infrastructure restarts do not exhaust individual memory write retries or require manual repair.
- Render Fast replies as rich Markdown in Discord guild channels instead of falling back to plain unformatted messages.
- Make suggested tasks in Fast automation reports launch reliably across Slack, Discord, Microsoft Teams, and Telegram while keeping each suggestion card's state in sync.
- Preserve the full Fast conversation context across resumed turns so follow-up answers continue from the existing thread instead of losing earlier messages.
- Keep Fast session sidebars and information panels usable on mobile by switching them to the same single-panel layout as task workspaces.
- Discover Notion pages and database rows that inherit integration access through shared parents, even when Notion search does not return them.
- Keep automatic pull-request re-reviews running after their previous sandbox shuts down and anchor each sync review on the head commit that was actually reviewed.
- Keep Standard tasks and Fast web sessions running through retryable inference-provider failures instead of ending the work prematurely.
- Briefly name the recalled insight that materially influenced an agent's approach without exposing internal memory provenance or identifiers.
- Keep Fast and standard agents identified as Roomote by removing OpenCode's conflicting injected identity prefix from their system prompts.
- Render automation report Markdown correctly in Slack while preserving the report's replyable thread footer.
- Use task-specific wording in Slack inline status updates so progress messages describe the work instead of exposing generic agent terminology.
- Make transcript tool activity easier to inspect by showing sanitized inputs and readable YAML details without hiding the corresponding tool results.

## 0.44.0 (2026-08-26)

This release adds shared memory, skill discovery, and presentational widgets to Fast sessions, expands automation delivery across chat providers, and improves session and pull request review reliability.
Expand Down
9 changes: 9 additions & 0 deletions apps/docs/environment-variables.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,15 @@ as per-task auth tokens or workspace paths.
| `OPENAI_COMPATIBLE_<NAME>_LABEL` | Optional | Display label stored with a named OpenAI-compatible connection. |
| `VLLM_BASE_URL` | vLLM | vLLM OpenAI-compatible endpoint URL, usually including its `/v1` path. |
| `VLLM_API_KEY` | Optional | Bearer API key for a vLLM endpoint that requires authentication. |
| `R_BRAIN_OPENROUTER_API_KEY` | Memory provider | OpenRouter key that enables Memory embeddings, reranking, and synthesis. |
| `R_BRAIN_OPENAI_API_KEY` | Memory provider | OpenAI key that enables Memory embeddings and synthesis. |
| `R_BRAIN_MODEL` | Optional | Memory synthesis model in the configured provider's naming. Changes apply immediately. |
| `R_BRAIN_EMBEDDING_MODEL` | Before first Memory boot | Embedding model id that sizes Memory's vector storage. Changing it later requires re-embedding. |
| `R_BRAIN_EMBEDDING_DIMENSIONS` | Before first Memory boot | Output width for `R_BRAIN_EMBEDDING_MODEL`; it must match the served model. |
| `R_BRAIN_RERANKER_MODEL` | Optional | Memory reranker model. Use OpenRouter's model id for OpenRouter, or the exact bare model id served by a self-run rerank upstream. |
| `R_BRAIN_EMBEDDINGS_UPSTREAM_URL` | Optional | OpenAI-compatible embeddings endpoint used instead of the Memory provider. |
| `R_BRAIN_RERANK_UPSTREAM_URL` | Optional | OpenAI-compatible rerank endpoint used instead of OpenRouter. |
| `R_BRAIN_INFERENCE_UPSTREAM_API_KEY` | Optional | Bearer key shared by the self-run embeddings and rerank upstreams; omit it for a trusted private-network service. |

### Sandbox providers

Expand Down
61 changes: 45 additions & 16 deletions apps/docs/memory.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,36 @@ embeddings and synthesis, and Roomote forwards them under the Memory key.
Changing that key later takes effect on Memory's next request, with no
redeploy.

OpenRouter and OpenAI both support Memory's embedding and synthesis calls,
but search reranking requires OpenRouter.
OpenRouter and OpenAI both support Memory's embedding and synthesis calls.
Search reranking requires OpenRouter unless a self-run rerank upstream is
configured.

### Run embeddings and reranking locally

Self-hosted Compose deployments can keep embeddings and reranking on their own
hardware while continuing to send chat synthesis to the configured Memory
provider. Enable both services and point Memory at the bundled inference server:

```sh
COMPOSE_PROFILES=brain,local-inference
R_BRAIN_EMBEDDINGS_UPSTREAM_URL=http://infinity:7997
R_BRAIN_RERANK_UPSTREAM_URL=http://infinity:7997
R_BRAIN_EMBEDDING_MODEL=BAAI/bge-m3
R_BRAIN_EMBEDDING_DIMENSIONS=1024
R_BRAIN_RERANKER_MODEL=BAAI/bge-reranker-v2-m3
```

The bundled CPU service uses multilingual models so recall can cross languages.
For a smaller CPU host, `Alibaba-NLP/gte-multilingual-base` with `768`
dimensions is a lighter embedding alternative. Choose the embedding model and
dimensions before Memory's first boot; changing that pair later requires
re-embedding the corpus.

The two upstream URLs can instead target any OpenAI-compatible embedding and
rerank server. Set `R_BRAIN_INFERENCE_UPSTREAM_API_KEY` when that server requires
a bearer key. Roomote forwards model names unchanged to self-run upstreams, so
`R_BRAIN_EMBEDDING_MODEL` and `R_BRAIN_RERANKER_MODEL` must exactly match the
models that server exposes, without a provider prefix.

Without a Memory key, Memory stays inert. Agents are not told it exists,
and nothing is ingested.
Expand Down Expand Up @@ -196,7 +224,7 @@ Three settings pick Memory's models:
| ----------------------------- | ----------------- | --------------------------------- | --------------------- |
| `R_BRAIN_MODEL` | Sourced synthesis | your provider's naming | any time |
| `R_BRAIN_EMBEDDING_MODEL` | Semantic recall | a plain model id | before the first boot |
| `R_BRAIN_RERANKER_MODEL` | Search precision | `openrouter:<provider>/<model-id>` | after a restart |
| `R_BRAIN_RERANKER_MODEL` | Search precision | provider or upstream naming | after a restart |

Leave the first two unset and Memory uses OpenAI's `gpt-5.6-luna` and
`text-embedding-3-small` through whichever provider you configured.
Expand All @@ -205,7 +233,8 @@ The reranker defaults to OpenRouter's `voyageai/rerank-2.5-lite`. Set
`R_BRAIN_RERANKER_MODEL` to choose another model from
OpenRouter's reranker catalog. Reranking requires an OpenRouter key; with only
OpenAI configured, gbrain keeps the unreranked results instead of failing the
search.
search. When `R_BRAIN_RERANK_UPSTREAM_URL` is set, use the exact bare model id
served by that upstream instead.

The synthesis model is applied by Roomote when it forwards the call and passed
to the provider as written, so use that provider's naming
Expand Down Expand Up @@ -243,18 +272,18 @@ matching on keywords alone.

## Operating it

- **Back up the Memory volume.** The Railway template schedules daily and
weekly backups for it. On other platforms, include `/data/brain` in the
deployment's normal volume backups. That directory is the Markdown corpus,
including pages produced by nightly synthesis. Postgres holds the searchable
index, extracted facts, and durable maintenance jobs; keeping it in the
normal database backup makes restores faster, but it is not the only copy of
the source pages.
- **Losing Memory is recoverable but not free.** If the volume or isolated
`gbrain` database is recreated, Roomote re-registers its clients, resets its
ingestion checkpoints, and backfills task history and integration sources.
The deployment starts cold until that finishes, and regenerated synthesis
may not be byte-for-byte identical.
- **Back up both Memory stores together.** The Railway template schedules
backups for the Memory volume. On supported self-hosted installs, `roomote
backup` includes both the `gbrain_data` volume and the isolated `gbrain`
database when Memory is enabled. The volume holds the Markdown system of
record; Postgres holds the searchable index, extracted facts, and durable
maintenance jobs. Restoring only one can leave the storage layout and index
inconsistent, so keep them at the same backup consistency point.
- **Losing Memory is recoverable only from connected sources.** If both stores
are recreated, Roomote can reset ingestion checkpoints and backfill task
history and connected integrations, but user-saved facts and generated
synthesis may not be reproducible. The deployment starts cold until the
backfill finishes.
- **The filesystem cutover rebuilds older memory once.** The first start of a
filesystem-backed image replaces a Postgres-only Memory service instead of
trying to merge the old index into an empty checkout. Roomote then repopulates
Expand Down
12 changes: 7 additions & 5 deletions apps/docs/models.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ deployment on one account, one vendor, or one model family.

### Managed Roomote inference

Some hosting deployments offer **Roomote inference** with a limited number of
managed credits during setup. It is separate from your own provider
Some hosting deployments provision **Roomote inference** with a limited,
spend-capped credit grant during setup. It is separate from your own provider
connections: in particular, you can add an OpenRouter key in **Settings >
Models** even when Roomote inference is active. If the hosting deployment does
not offer it, the option is not shown. Its key is stored with your other
provider credentials, so deleting the Roomote inference provider in
**Settings > Models** disables it permanently.
not offer it, the option is not shown. Trial token usage and estimated model
cost appear in task details and [Cost Analytics](/cost-analytics), while the
remaining credit line reflects the hosted grant's authoritative limit. Its key
is stored with your other provider credentials, so deleting the Roomote
inference provider in **Settings > Models** disables it permanently.

For example, a deployment might use:

Expand Down
32 changes: 18 additions & 14 deletions apps/docs/self-hosting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ its work, and returns reviewable pull requests with previews when they apply.
Run the same single-tenant product on Roomote Cloud or infrastructure you
control.

Choose the fastest path for your team. In every deployment, you connect a
ChatGPT subscription or inference provider API key, plus source control and a
sandbox provider. Connect communications providers and other tools when your
team needs them.
Choose the fastest path for your team. Every deployment needs model inference:
use hosting-provisioned Roomote inference when it is offered, or connect a
ChatGPT subscription or inference provider API key. You also need source control
and a sandbox provider. Connect communications providers and other tools when
your team needs them.

<div style={{ display: "flex", alignItems: "center", flexWrap: "wrap", gap: "8px" }}>
<a href="https://cloud.roomote.dev/sign-up"><img src="https://roomote.dev/images/deploy-button.png" alt="Deploy on Roomote Cloud" style={{ height: "40px", width: "auto" }} /></a>
Expand All @@ -35,8 +36,8 @@ Running Roomote on Proxmox or another server at home? Follow the
public ingress, and a prompt that a local agent can follow.

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.
source-control provider, managed Roomote inference or a connected 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
[`SELF_HOSTING.md`](https://github.com/RooCodeInc/Roomote/blob/main/SELF_HOSTING.md)
Expand All @@ -51,9 +52,10 @@ curl -fsSL https://get.roomote.dev | bash
```

The installer brings up the full stack from published images and prints a setup
link. Open it in a browser and the wizard walks you through the rest: sign-in
provider, source-control provider, a ChatGPT subscription or inference provider
API key, communications provider, repositories, and a first task.
link. For this self-hosted path, open it in a browser and the wizard walks you
through the rest: sign-in provider, source-control provider, a ChatGPT
subscription or inference provider API key, communications provider,
repositories, and a first task.

No DNS setup is needed to try it out; pass `--domain roomote.example.com` for a
production install on your own domain.
Expand All @@ -77,7 +79,7 @@ Have these ready before the wizard asks for them:
- a source-control provider account with permission to install or configure the
app for the repositories Roomote should reach
- a ChatGPT subscription or inference provider API key, such as OpenRouter,
Anthropic, or OpenAI
Anthropic, or OpenAI, unless your host already provisioned Roomote inference
- a communications provider workspace, such as Slack, Microsoft Teams,
Telegram, or Discord, if your team wants to start work from chat
- at least one repository that can become the first Roomote environment
Expand All @@ -96,8 +98,10 @@ roomote logs # tail service logs
`roomote backup` prompts for a passphrase and writes a versioned `.roomote`
bundle under `/opt/roomote/backups`. The bundle contains PostgreSQL, the
deployment configuration and encryption/signing keys, local MinIO artifacts,
schema metadata, and the exact deployed image identities. Store the passphrase
separately in your secret manager; the backup cannot be restored without it.
schema metadata, the exact deployed image identities, and both the Memory volume
and isolated Memory database when the `brain` profile is enabled. Store the
passphrase separately in your secret manager; the backup cannot be restored
without it.

Use `roomote backup --include-redis` when queued work, BullMQ schedules,
sessions, and other transient Redis state must survive. Backups briefly stop
Expand Down Expand Up @@ -170,8 +174,8 @@ After you upgrade, Roomote can surface the new release in the web app:

## Requirements

- A ChatGPT subscription or inference provider API key (OpenRouter, Anthropic,
OpenAI, and others).
- Managed Roomote inference from an eligible host, or a ChatGPT subscription or
inference provider API key (OpenRouter, Anthropic, OpenAI, and others).
- An account with a supported source-control provider. For GitHub, the setup
wizard creates the GitHub App; other providers use their documented OAuth or
credential flow.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "roomote",
"version": "0.44.0",
"version": "0.45.0",
"license": "FCL-1.0-ALv2",
"packageManager": "pnpm@10.29.3",
"engines": {
Expand Down
Loading