rovo
by youyo
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AGENT_MODEL | No | Model used by the child agent (agent worker). Defaults to `anthropic/claude-sonnet-5-5`. Only models present in the price table are allowed. | anthropic/claude-sonnet-5-5 |
| ALLOWED_ORG | No | Slug of the org whose members are allowed to log in and call all tools. Members of child teams are also allowed. Set together with ALLOWED_TEAM (setting only one of the pair prevents login). Use either this pair or ALLOWED_USER_IDS. | |
| ENVIRONMENT | No | Environment name. Defaults to "production". Only when set to "test" are the GITHUB_OAUTH_BASE / GITHUB_API_BASE overrides allowed. Do NOT set to "test" in production (startup is rejected if overrides are specified in production). | production |
| ALLOWED_TEAM | No | Slug of the team whose members are allowed to log in and call all tools. Members of child teams are also allowed. Set together with ALLOWED_ORG (setting only one of the pair prevents login). Use either this pair or ALLOWED_USER_IDS. | |
| PR_SHOW_COST | No | Only when "true" is the cost included in the PR body (default: not included, since anyone can see it in public repositories). | false |
| AI_GATEWAY_ID | Yes | AI Gateway ID. Required for the agent and the web worker. On the agent, if empty `start` is rejected with `ai_gateway_not_configured`. On web, if empty neither `websearch` nor `AI.run` (Clef) is called and calls fail with a `misconfigured` error (fail closed). | |
| GITHUB_APP_ID | Yes | GitHub App App ID (not a secret). Used to issue Installation Access Tokens (JWT `iss`). If unset, tasks fail with `github_app_not_configured` (fail closed). | |
| TOKEN_ENC_KEY | Yes | Key used to encrypt GitHub tokens / Installation Tokens before storing them (UserDO, TaskDO and the agent's SandboxDO storage). base64 of 32 bytes (`openssl rand -base64 32`). The gateway and agent each have their own value; they may be the same or different. Changing it makes stored credentials undecryptable and forces everyone to log in again. If unset on the agent, `start` is rejected (fail closed). | |
| TEST_FAKE_BASE | No | E2E only (web worker). When ENVIRONMENT=test, points AI (`run` / `websearch` / `toMarkdown`) and fetching at the fake server URL. Production must be `production`. | |
| GITHUB_API_BASE | No | Override for the GitHub API base URL. Only allowed when ENVIRONMENT=test; specifying it in production is rejected at startup. | |
| PUBLIC_BASE_URL | Yes | Public URL of the gateway. Becomes the OAuth issuer, the /mcp resource, and the GitHub callback URL (<PUBLIC_BASE_URL>/callback). Must be https in production; only loopback http is allowed for local development. | |
| TASK_BUDGET_USD | No | Budget reserved per task from the monthly allowance (default $10). Values <= 0 or invalid fall back to 10. If insufficient, `task_start` fails with `budget_exceeded`. | 10 |
| ALLOWED_USER_IDS | No | Comma-separated GitHub numeric user IDs allowed to log in and call all tools (find yours with `gh api user --jq .id`). Use this for personal accounts without a team. If both org/team and this are set, satisfying either is enough. If any element is invalid, the whole value is invalid and login is refused (fail closed). | |
| DRAFT_PR_FALLBACK | No | How to handle repositories that cannot create Draft PRs (e.g. private repos on the Free plan). `fail` (default: fail the task with `draft_pr_unsupported`) or `ready` (create a normal PR prefixed with `[WIP]`, note it at the top of the body, and add the `draft_pr_unavailable` warning). Invalid values are treated as `fail`. Only applied for Draft-related 422 responses. | fail |
| GITHUB_OAUTH_BASE | No | Override for the GitHub OAuth base URL. Only allowed when ENVIRONMENT=test; specifying it in production is rejected at startup. | |
| MONTHLY_BUDGET_USD | No | Monthly budget allowance (default 100). When lowering the monthly allowance below 10, lower TASK_BUDGET_USD as well (useful for keeping acceptance testing to a few dollars). | 100 |
| WEB_BROWSE_ENABLED | No | Whether `web_browse` is exposed. Only the worker whose env `WEB_BROWSE_ENABLED` is "true" enables it (set it on apps/web, apps/agent and apps/gateway). When disabled it does not appear in the parent's tools/list nor in the child Pi's tools. Defaults to "false". Read section 11 ("web_browse (gate before enabling)") of docs/specs/acceptance.md before enabling. | false |
| WEB_SEARCH_PROVIDER | No | Search provider used by the web worker: `ceramic` / `exa` / `linkup`. Defaults to `ceramic`. | ceramic |
| GITHUB_APP_CLIENT_ID | Yes | GitHub App Client ID (not a secret). | |
| SANDBOX_USD_PER_HOUR | No | Estimated Sandbox container cost per hour (default 0.0073, for `lite`: 1/16 vCPU, 256 MiB, 2 GB, assuming 100% CPU utilization). Override if you change `instance_type`. Unset or invalid values fall back to the default; 0 is allowed. | 0.0073 |
| WEB_USD_PER_1K_FETCH | No | Estimated cost per 1,000 `web_fetch` calls (default 0). | 0 |
| WEB_FETCH_DAILY_LIMIT | No | Parent `web_fetch` limit per user per UTC day (default 500). Exceeding it returns `quota_exceeded`. | 500 |
| WEB_USD_PER_1K_BROWSE | No | Estimated cost per 1,000 `web_browse` calls (default 0.75, assuming up to 30 seconds of browser time per call). | 0.75 |
| WEB_USD_PER_1K_SEARCH | No | Estimated cost per 1,000 `web_search` calls (default 0.25, for the default ceramic provider). Override if you change `WEB_SEARCH_PROVIDER`. | 0.25 |
| GITHUB_APP_PRIVATE_KEY | Yes | GitHub App private key (PKCS#8 PEM). GitHub downloads PKCS#1 (BEGIN RSA PRIVATE KEY), so convert with `openssl pkcs8 -topk8 -nocrypt -in app.private-key.pem -out app.pkcs8.pem` and put it in with `wrangler secret put GITHUB_APP_PRIVATE_KEY < app.pkcs8.pem`. Never commit it to the repository. | |
| SAFETY_BLOCK_THRESHOLD | No | Policy Engine threshold for the web worker (default 0.8). If the model score is at or above this, the verdict is `block`. Provisional value, tuned during acceptance testing. | 0.8 |
| WEB_BROWSE_DAILY_LIMIT | No | Parent `web_browse` limit per user per UTC day (default 50; counted separately). | 50 |
| WEB_SEARCH_DAILY_LIMIT | No | Parent `web_search` limit per user per UTC day (default 200). Exceeding it returns `quota_exceeded` (with `retry_after_seconds` until 00:00 UTC the next day). | 200 |
| GITHUB_APP_CLIENT_SECRET | Yes | GitHub App Client secret (secret). | |
| SAFETY_CAUTION_THRESHOLD | No | Policy Engine threshold for the web worker (default 0.4). If the model score is at or above this, the verdict is `caution`. Provisional value, tuned during acceptance testing. | 0.4 |
| WEB_FETCH_LIMIT_PER_TASK | No | Child (agent) `web_fetch` limit per task (default 100). Non-negative integers only; invalid values fall back to the default. | 100 |
| WEB_BROWSE_LIMIT_PER_TASK | No | Child (agent) `web_browse` limit per task (default 20). Non-negative integers only; invalid values fall back to the default. | 20 |
| WEB_SEARCH_LIMIT_PER_TASK | No | Child (agent) `web_search` limit per task (default 50). Non-negative integers only; invalid values fall back to the default. Exceeding it returns a tool error. | 50 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
No tools | |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues