diff --git a/api/trigger-automation.mdx b/api/trigger-automation.mdx new file mode 100644 index 0000000..0820d37 --- /dev/null +++ b/api/trigger-automation.mdx @@ -0,0 +1,5 @@ +--- +title: 'Trigger Automation' +description: 'Trigger an automation with an arbitrary JSON payload.' +openapi: 'POST /automation/{keyOrId}/trigger' +--- diff --git a/docs.json b/docs.json index 074fd4f..4d516c6 100644 --- a/docs.json +++ b/docs.json @@ -40,13 +40,14 @@ "groups": [ { "group": "Get Started", - "pages": ["index", "quickstart"] + "pages": ["index", "quickstart", "support"] }, { "group": "Features", "pages": [ "features/automations", "features/coding-agents", + "features/models", "features/feedback-loop", "features/max", "features/sandbox-environment", @@ -72,7 +73,6 @@ "group": "Integrations", "pages": [ "integrations/mcp", - "integrations/aws", "integrations/bitbucket", "integrations/github", "integrations/gitlab", @@ -83,7 +83,16 @@ "integrations/raycast", "integrations/sentry", "integrations/slack", - "integrations/supabase" + "integrations/supabase", + "integrations/aws" + ] + }, + { + "group": "Other", + "pages": [ + "resources/pwa", + "resources/pricing", + "resources/changelog" ] } ] @@ -110,6 +119,12 @@ "GET /task/search" ] }, + { + "group": "Automations", + "pages": [ + "api/trigger-automation" + ] + }, { "group": "Repositories", "pages": ["GET /repository/list"] @@ -161,5 +176,18 @@ "youtube": "https://www.youtube.com/@tembo_io" } }, - "redirects": [] + "redirects": [ + { + "source": "/admin/support", + "destination": "/support" + }, + { + "source": "/billing", + "destination": "/resources/pricing" + }, + { + "source": "/admin/billing", + "destination": "/resources/pricing" + } + ] } diff --git a/features/agent-actions.mdx b/features/agent-actions.mdx index 66377b1..55b35e4 100644 --- a/features/agent-actions.mdx +++ b/features/agent-actions.mdx @@ -5,6 +5,8 @@ description: 'Tembo agents can do more than open PRs.' Pull requests are the most common output, but Tembo agents can take any action available through your connected integrations and [MCP servers](/integrations/mcp). +A single task can span multiple repositories. Tembo can use context from connected integrations and MCP servers during the same task, make informed decisions, and open a pull request or merge request in each affected repository. It can also coordinate changes across different git providers when needed. + ## What agents can do | Action | Integration | @@ -31,6 +33,8 @@ Pull requests are the most common output, but Tembo agents can take any action a **Query production data**: During a task, an agent queries your Postgres database to understand the schema and writes a migration based on actual table structure. +**Ship a cross-repo change**: One task updates multiple services, uses Linear and Sentry context to verify the work, and opens a PR or MR in each affected repository. + ## How it works Agents access integrations through MCP servers. When you connect an integration or install an MCP server, it becomes available to agents during tasks and automations. No extra configuration needed. diff --git a/features/automations.mdx b/features/automations.mdx index fa42b20..e84e4b5 100644 --- a/features/automations.mdx +++ b/features/automations.mdx @@ -39,6 +39,20 @@ React to events from your integrations in real-time. | **Linear** | Issue created, issue updated, status changed | | **Slack** | Message in channel, @tembo mention | +#### Trigger through webhooks + +You can trigger an automation on demand from external systems using the automation's [webhook trigger endpoint](/api/trigger-automation). + +The payload is passed to the automation as event context, so your instructions can reference it directly. For example, you could write instructions like _"Fix the issue at the URL provided in the event payload"_. + +#### Slash command trigger + +You can trigger a task with the selected automation by using slash commands. + +```txt +@tembo / +``` + ## Creating an automation ### From a template diff --git a/features/coding-agents.mdx b/features/coding-agents.mdx index 0cffd31..1f322db 100644 --- a/features/coding-agents.mdx +++ b/features/coding-agents.mdx @@ -3,7 +3,9 @@ title: "Coding Agents" description: "Choose from multiple AI coding agents to solve your software engineering tasks." --- -Tembo is agent and model agnostic. Set a default agent and model per automation (e.g. all Linear issues use Codex with GPT-5.2) or override per task. +Tembo is agent and model agnostic. Set a default agent and model per automation (e.g. all Linear issues use Codex with GPT-5.4) or override per task. + +See [Models](/features/models) for the full supported model list, BYOK details, and AWS Bedrock BYOK support. }> @@ -16,7 +18,7 @@ Tembo is agent and model agnostic. Set a default agent and model per automation }> OpenAI's GPT-5 family with configurable reasoning effort (minimal, low, medium, high). - **Models:** GPT-5.4, GPT-5.3 Codex, GPT-5.2, GPT-5.2 Codex, GPT-5.1, GPT-5.1 Codex Max, GPT-5.1 Codex Mini + **Models:** GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.3 Codex, GPT-5.2, GPT-5.2 Codex, GPT-5.1, GPT-5.1 Codex Max, GPT-5.1 Codex Mini @@ -30,11 +32,18 @@ Tembo is agent and model agnostic. Set a default agent and model per automation }> Multi-provider support: Anthropic, OpenAI, and OSS models. - **Models:** Opus 4.6, Sonnet 4.5, GPT-5.2, GPT-OSS 120B, Qwen 3 32B, Llama 3.3 70B, Kimi K2.5, GLM 5 + **Models:** Opus 4.6, Sonnet 4.5, GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.2, GPT-OSS 120B, Qwen 3 32B, Llama 3.3 70B, Kimi K2.5, GLM 5 }> Claude-powered with automatic model selection. + + }> + A minimal, extensible terminal coding harness with multi-provider support. + + **Providers:** Anthropic, OpenAI, Google Gemini, GitHub Copilot, Azure OpenAI, Amazon Bedrock, Mistral, Groq, xAI, OpenRouter, and more + + diff --git a/features/hooks.mdx b/features/hooks.mdx index 6d039ff..b0f474e 100644 --- a/features/hooks.mdx +++ b/features/hooks.mdx @@ -34,6 +34,12 @@ Hooks run shell commands at specific points during a task. Configure them in `.t Set `"autoFix": true` to let Tembo analyze hook failures and attempt to fix issues before retrying. +## Branch-aware config loading + +Tembo checks out the task branch before loading `.tembo.json` and running `postClone`. + +This ensures hooks and config are read from the same branch context the agent will edit, including changes that exist only on your selected base branch. + ## Details - Commands run sequentially in the repository root diff --git a/features/max.mdx b/features/max.mdx index 8c5d7e3..7f1f476 100644 --- a/features/max.mdx +++ b/features/max.mdx @@ -24,20 +24,28 @@ export ANTHROPIC_API_KEY=your-tembo-api-key ``` ```bash Codex -export OPENAI_BASE_URL="https://proxy.tembo.io/proxy/openai" +export OPENAI_BASE_URL="https://proxy.tembo.io/openai" export OPENAI_API_KEY="your-tembo-api-key" ``` ```json OpenCode { "$schema": "https://opencode.ai/config.json", - "model": "openai/gpt-5.2", + "model": "openai/gpt-5-mini", "provider": { "openai": { "models": { - "gpt-5.2": { - "id": "gpt-5.2", - "name": "GPT-5.2" + "gpt-5.4": { + "id": "gpt-5.4", + "name": "GPT-5.4" + }, + "gpt-5.4-mini": { + "id": "gpt-5-mini", + "name": "GPT-5.4 Mini" + }, + "gpt-5.4-nano": { + "id": "gpt-5-nano", + "name": "GPT-5.4 Nano" } }, "options": { @@ -58,6 +66,8 @@ export OPENAI_API_KEY="your-tembo-api-key" Codex may store credentials in `~/.codex/auth.json` that override environment variables. +Codex and OpenCode both support `gpt-5.4`, `gpt-5.4-mini`, and `gpt-5.4-nano`. In OpenCode, the `gpt-5.4-mini` and `gpt-5.4-nano` aliases map to OpenAI's `gpt-5-mini` and `gpt-5-nano` model IDs. + ## Proxy models All models are tested across real-world coding tasks before being made available. @@ -70,10 +80,12 @@ All models are tested across real-world coding tasks before being made available | Claude 4.5 Haiku | `claude-4-5-haiku` | `proxy.tembo.io/anthropic` | | Claude 4 Sonnet | `claude-4-sonnet` | `proxy.tembo.io/anthropic` | | GPT-5.4 | `gpt-5.4` | `proxy.tembo.io/openai` | +| GPT-5.4 Mini | `gpt-5.4-mini` | `proxy.tembo.io/openai` | +| GPT-5.4 Nano | `gpt-5.4-nano` | `proxy.tembo.io/openai` | | GPT-5.2 | `gpt-5.2` | `proxy.tembo.io/openai` | -| GPT-5.1 Codex | `gpt-5.1-codex` | `proxy.tembo.io/proxy/openai` | -| GPT-5.1 Codex Max | `gpt-5.1-codex-max` | `proxy.tembo.io/proxy/openai` | -| GPT-5.2 Codex | `gpt-5.2-codex` | `proxy.tembo.io/proxy/openai` | +| GPT-5.1 Codex | `gpt-5.1-codex` | `proxy.tembo.io/openai` | +| GPT-5.1 Codex Max | `gpt-5.1-codex-max` | `proxy.tembo.io/openai` | +| GPT-5.2 Codex | `gpt-5.2-codex` | `proxy.tembo.io/openai` | | Gemini 2.5 Pro | `gemini-2.5-pro` | `proxy.tembo.io/anthropic` | | Gemini 3 Pro | `gemini-3-pro` | `proxy.tembo.io/anthropic` | | Gemini 3 Flash | `gemini-3-flash` | `proxy.tembo.io/anthropic` | diff --git a/features/models.mdx b/features/models.mdx new file mode 100644 index 0000000..497afd7 --- /dev/null +++ b/features/models.mdx @@ -0,0 +1,76 @@ +--- +title: "Models" +description: "Supported models, providers, and BYOK options." +--- + +Tembo supports multiple model providers across coding agents. You can use Tembo-hosted models with [Max](/features/max), or connect your own keys with BYOK (Bring Your Own Key). + +## BYOK (Bring Your Own Key) + +BYOK lets your workspace call models with your own provider credentials instead of Tembo-managed credentials. + +- Add keys in **Settings -> Models -> API Keys**. +- You can connect OpenAI, Anthropic, Cursor, Amp, and AWS Bedrock credentials. +- Tembo still handles orchestration, task context, sandbox execution, and PR automation. + +### Bedrock BYOK support + +Tembo supports BYOK with Amazon Bedrock. + +To enable it, add: + +- **AWS Access Key ID** +- **AWS Secret Access Key** +- **AWS Region** + +in **Settings -> Models -> API Keys -> AWS Bedrock**. + + + AWS Bedrock BYOK API key fields in Tembo Settings + + +## Supported models + +The table below reflects the models currently supported by Tembo. + +| Model | Model ID | Provider | BYOK Required | +| --- | --- | --- | --- | +| Opus 4.6 | `claude-opus-4-6` | Anthropic | No | +| Sonnet 4.6 | `claude-sonnet-4-6` | Anthropic | No | +| Opus 4.5 | `claude-opus-4-5` | Anthropic | No | +| Haiku 4.5 | `claude-4-5-haiku` | Anthropic | No | +| GPT-5.4 | `gpt-5.4` | OpenAI | Yes | +| GPT-5.4 Mini | `gpt-5.4-mini` | OpenAI | No | +| GPT-5.4 Nano | `gpt-5.4-nano` | OpenAI | No | +| GPT-5.3 Codex | `gpt-5.3-codex` | OpenAI | No | +| GPT-5.3 Codex Spark | `gpt-5.3-codex-spark` | OpenAI | Yes | +| GPT-5.2 Codex | `gpt-5.2-codex` | OpenAI | No | +| GPT-5.2 | `gpt-5.2` | OpenAI | Yes | +| GPT-5.1 Codex Max | `gpt-5.1-codex-max` | OpenAI | Yes | +| GPT-5.1 Codex Mini | `gpt-5.1-codex-mini` | OpenAI | Yes | +| GPT-5.1 Codex | `gpt-5.1-codex` | OpenAI | Yes | +| GPT-5.1 | `gpt-5.1` | OpenAI | Yes | +| GPT-5 Codex | `gpt-5-codex` | OpenAI | Yes | +| GPT-5 | `gpt-5` | OpenAI | Yes | +| GPT-5 High | `gpt-5-high` | OpenAI | Yes | +| GPT-5 Medium | `gpt-5-medium` | OpenAI | Yes | +| GPT-5 Low | `gpt-5-low` | OpenAI | Yes | +| GPT-5 Minimal | `gpt-5-minimal` | OpenAI | Yes | +| GPT-oss 120B | `gpt-oss-120b` | OpenAI | No | +| GLM 5 | `zai-glm-5` | Z.ai | No | +| GLM 4.7 | `zai-glm-4.7` | Z.ai | No | +| Composer 1.5 | `composer-1.5` | Cursor | Yes | +| Composer 2 | `composer-2` | Cursor | Yes | +| Composer 2 Fast | `composer-2-fast` | Cursor | Yes | +| Gemini 3 Pro | `gemini-3-pro` | Google | No | +| Gemini 3.1 Pro | `gemini-3.1-pro` | Google | No | +| Gemini 3 Flash | `gemini-3-flash` | Google | No | +| Grok | `grok` | xAI | Yes | +| Kimi K2.5 | `kimi-k2p5` | Fireworks | No | +| MiniMax M2.5 | `minimax-m2p5` | MiniMax | No | +| Qwen 3 32B | `qwen-3-32b` | Qwen | No | +| Llama 3.3 70B | `llama-3.3-70b` | Meta | No | + + + Model availability can vary by agent and workspace configuration. If a model is disabled in your workspace, it will not appear in agent pickers until re-enabled. + diff --git a/features/pull-requests.mdx b/features/pull-requests.mdx index 8eaf076..f4ba077 100644 --- a/features/pull-requests.mdx +++ b/features/pull-requests.mdx @@ -5,6 +5,8 @@ description: 'Tembo opens PRs with clear descriptions, signed commits, and your When a task is complete, Tembo opens a pull request. You review it, use the [feedback loop](/features/feedback-loop) to iterate, and merge when ready. +If a task spans multiple repositories, Tembo opens a pull request or merge request in each one. It can also coordinate changes across supported git providers, including GitHub, GitLab, and Bitbucket. + ## What's in a Tembo PR - Clear description of the problem and solution diff --git a/features/sandbox-environment.mdx b/features/sandbox-environment.mdx index 471e8e4..939c089 100644 --- a/features/sandbox-environment.mdx +++ b/features/sandbox-environment.mdx @@ -45,12 +45,35 @@ Both sandbox types come with: | **Containers** | Docker 28, Docker Compose 2.31 (Large VM only) | | **Other** | Git, curl, ShellCheck, httpie | -Go, Rust, Java, and Elixir are available through Nix dev shells or Dev Containers. Use a `flake.nix` or `.devcontainer/devcontainer.json` to install language-specific tooling for your project. - -## Nix support - -If your repo has a `flake.nix` with `devShells.x86_64-linux.default`, Tembo automatically detects it and runs commands inside your Nix dev shell. - -## Dev Containers - -Tembo can run tasks inside a Dev Container (`.devcontainer/devcontainer.json`). Requires the Large VM sandbox. Same format as VS Code Dev Containers and GitHub Codespaces. +Go, Rust, Java, and Elixir are available through Nix dev shells. Add a `flake.nix` to install language-specific tooling for your project. + +## Add custom dependencies + +To add custom dependencies in the sandbox, include a `flake.nix` with `devShells.x86_64-linux.default`. Tembo automatically detects it and runs commands inside your Nix dev shell. + +Here is a minimal `flake.nix` example you can copy and adapt: + +```nix +{ + description = "Dev shell"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + go + # Add other packages here, e.g. rustc cargo jdk + ]; + }; + } + ); +} +``` diff --git a/images/coding-agents/pi.svg b/images/coding-agents/pi.svg new file mode 100644 index 0000000..de87729 --- /dev/null +++ b/images/coding-agents/pi.svg @@ -0,0 +1,8 @@ + + + + diff --git a/images/models/aws-bedrock-byok.png b/images/models/aws-bedrock-byok.png new file mode 100644 index 0000000..c74915a Binary files /dev/null and b/images/models/aws-bedrock-byok.png differ diff --git a/index.mdx b/index.mdx index a294927..aa8d8bc 100644 --- a/index.mdx +++ b/index.mdx @@ -52,6 +52,8 @@ Tembo is agent and model agnostic. Pick the right tool for each task. Tag `@temb | **Opencode** | Anthropic, OpenAI, OSS | `claude-4-5-sonnet` | | **Amp** | Anthropic (auto-selected) | `auto` | + Codex and OpenCode also support `gpt-5.4`, `gpt-5.4-mini`, and `gpt-5.4-nano`. + See [all agents and models →](/features/coding-agents) diff --git a/integrations/jira.mdx b/integrations/jira.mdx index c9bc722..48fadaf 100644 --- a/integrations/jira.mdx +++ b/integrations/jira.mdx @@ -41,7 +41,7 @@ See [Automations](/features/automations) for available Jira event triggers. - Verify the label is exactly "Tembo" (case-sensitive). Confirm you installed using the dedicated standard Jira user. Check integration status on the [Integrations page](https://app.tembo.io/integrations). + Verify the label is "Tembo". Confirm you installed using the dedicated standard Jira user. Check integration status on the [Integrations page](https://app.tembo.io/integrations). diff --git a/integrations/linear.mdx b/integrations/linear.mdx index 2b83281..6f46de3 100644 --- a/integrations/linear.mdx +++ b/integrations/linear.mdx @@ -32,7 +32,7 @@ description: "Assign issues to Tembo and get PRs back." Assign a Linear issue to Tembo. Select one or more repositories when prompted. Tembo reads the issue, writes the code, and opens PRs. -For multi-repo tasks, select multiple repositories and Tembo coordinates changes across all of them. +For multi-repo tasks, select multiple repositories and Tembo coordinates changes across all of them. It can also handle repositories across different git providers when needed. ## Automations diff --git a/integrations/mcp.mdx b/integrations/mcp.mdx index fc836c5..0211bcf 100644 --- a/integrations/mcp.mdx +++ b/integrations/mcp.mdx @@ -1,34 +1,128 @@ --- -title: 'MCP' -description: 'Give your agents access to external tools and data sources.' +title: "MCP" +description: "Connect built-in and custom MCP servers for agent tool access." --- MCP -MCP (Model Context Protocol) servers extend what your agents can access during tasks. Install them from the [Integrations page](https://app.tembo.io/integrations). +MCP (Model Context Protocol) servers let agents use external tools and data during tasks. -## Available servers +## Features -| Server | What it does | -|--------|-------------| -| **Kernel** | Chromium browsers, Playwright automation, video replays | -| **Context7** | Version-specific documentation and code examples | -| **PostHog** | Analytics, feature flags, error tracking | -| **Neon** | Neon Postgres databases | -| **Supabase** | Supabase projects and databases | -| **PlanetScale** | PlanetScale databases | -| **Stripe** | Customers, payments, subscriptions, invoices | -| **Clerk** | Users, organizations, authentication | -| **Notion** | Pages, databases, workspace content | -| **Jam** | Bug reports, recordings, repro steps | -| **Supermemory** | Long-term memory and context | -| **Attio** | CRM records, lists, workspace data | -| **Firetiger** | Cloud tools and resources | +- Install MCP servers from the [Integrations page](https://app.tembo.io/integrations) +- Add your own MCP servers with `stdio`, `http`, or `sse` transport +- Connect OAuth-based remote MCP servers +- Enable MCP servers from existing integrations automatically (GitHub, Linear, Sentry, Postgres) -GitHub, Linear, Sentry, and Postgres MCP servers are automatically available when you connect those integrations. +## Installation -## Custom servers + + + Go to [Integrations](https://app.tembo.io/integrations). + + + Install any listed MCP integration (for example, Notion or Stripe). Once connected, the server is available in new tasks. + + + Click **Custom MCP**, paste your JSON config, then save. + + -Bring your own MCP servers from the [Integrations page](https://app.tembo.io/integrations) using **Custom MCP**. Supports stdio, HTTP, and SSE, including OAuth. +## Usage + +### Prerequisites + +- You have access to your organization in Tembo +- You have the server URL or command needed to start your MCP server +- You have any required credentials (API key, OAuth app, or environment variables) + +### Custom server transport types + +#### HTTP + +Use this for hosted MCP endpoints. + +```json +{ + "mcpServers": { + "api-server": { + "type": "http", + "url": "https://example.com/mcp", + "headers": { + "Authorization": "Bearer token" + } + } + } +} +``` + +#### SSE + +Use this for hosted MCP servers that expose an SSE endpoint. + +```json +{ + "mcpServers": { + "events-server": { + "type": "sse", + "url": "https://example.com/sse" + } + } +} +``` + +#### Stdio + +Use this when the MCP server runs as a local command. + +```json +{ + "mcpServers": { + "github-mcp": { + "type": "stdio", + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-github"], + "env": { + "GITHUB_TOKEN": "ghp_xxx" + } + } + } +} +``` + +### Configuration formats + +Tembo accepts both of these formats: + +- Object format (recommended): `mcpServers` is an object keyed by server name +- Array format: `mcpServers` is an array with explicit `name` values + +```json +{ + "mcpServers": [ + { + "name": "api-server", + "type": "http", + "url": "https://example.com/mcp" + } + ] +} +``` + +## Advanced + + + + If a remote server requires OAuth, Tembo prompts you to authorize during setup and completes the connection after you approve access. + + + + Check that the JSON is valid, required fields are present, and the integration is saved successfully. Start a new task after saving to pick up updated MCP config. + + + + Verify API keys, headers, or environment variables. For `http` and `sse` servers, confirm the URL is reachable from your server environment. + + diff --git a/integrations/slack.mdx b/integrations/slack.mdx index d90a911..a9c5a5d 100644 --- a/integrations/slack.mdx +++ b/integrations/slack.mdx @@ -39,15 +39,15 @@ description: "Trigger tasks by mentioning @tembo in any channel." ### With options ``` -@tembo [repo=owner/webapp, branch=dev] Add password strength validation +@tembo In owner/webapp on branch dev, add password strength validation ``` -**Options:** `repo=`, `branch=`, `agent=` +**You can specify:** repository, branch, and agent in plain text (for example: `owner/webapp`, `branch dev`, `agent gpt-5.4`). ### Multiple repositories ``` -@tembo [repo=owner/frontend,owner/backend] Add user authentication +@tembo Add user authentication in owner/frontend and owner/backend ``` Tembo creates separate PRs for each repo and coordinates changes. @@ -84,7 +84,7 @@ See [Automations](/features/automations) for available Slack event triggers. - Set a default repository in Slack integration settings, or use `[repo=owner/repo]` in your message. + Set a default repository in Slack integration settings, or specify the repository directly in your message (for example: `owner/repo`). diff --git a/openapi.documented.yml b/openapi.documented.yml index 512e42c..d44fbbb 100644 --- a/openapi.documented.yml +++ b/openapi.documented.yml @@ -398,6 +398,104 @@ paths: const response = await client.task.search({ q: 'authentication bug' }); console.log(response.issues); + /automation/{keyOrId}/trigger: + post: + responses: + "200": + description: Automation triggered successfully + content: + application/json: + schema: + type: object + properties: + id: + type: string + format: uuid + description: Unique identifier for the queued job + task: + type: string + description: The type of job that was queued + example: RunWorkflow + status: + type: string + description: Current status of the job + example: pending + priority: + type: integer + description: Job priority + example: 5 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + required: + - id + - task + - status + - priority + - createdAt + - updatedAt + "404": + description: Automation not found (no automation with the given key or ID exists in your organization) + content: + application/json: + schema: + type: object + properties: + error: + type: string + example: Automation not found + required: + - error + operationId: postPublic-apiAutomationTrigger + parameters: + - name: keyOrId + in: path + description: The automation's UUID or its slug (key). You can find the UUID in the automation's properties panel. + required: true + schema: + type: string + example: a1b2c3d4-5678-9abc-def0-1234567890ab + - name: apiKey + in: query + description: API key for authentication. Alternative to using the Authorization header. + required: false + schema: + type: string + description: |- + Trigger an automation with an arbitrary JSON payload, which is passed to the automation as event context. + + You can identify the automation by either its UUID or its slug (key). The API key can be supplied via the `Authorization: Bearer` header or the `apiKey` query parameter. + summary: Trigger Automation + requestBody: + description: Arbitrary JSON payload passed to the automation as event context. Your automation instructions can reference any values in this payload. + content: + application/json: + schema: + type: object + additionalProperties: true + example: + issue_url: https://github.com/org/repo/issues/42 + priority: high + required: false + x-codeSamples: + - lang: bash + label: Bearer Auth + source: |- + curl -s -X POST \ + "https://api.tembo.io/automation/${AUTOMATION_ID}/trigger" \ + -H "Authorization: Bearer ${API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{"issue_url": "https://github.com/org/repo/issues/42"}' | jq . + - lang: bash + label: Query Param Auth + source: |- + curl -s -X POST \ + "https://api.tembo.io/automation/${AUTOMATION_ID}/trigger?apiKey=${API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{"issue_url": "https://github.com/org/repo/issues/42"}' | jq . /repository/list: get: responses: diff --git a/quickstart.mdx b/quickstart.mdx index d279766..b2a6c85 100644 --- a/quickstart.mdx +++ b/quickstart.mdx @@ -8,7 +8,7 @@ description: "Get up and running with Tembo in minutes." Go to [Integrations](https://app.tembo.io/integrations) and connect GitHub, GitLab, or Bitbucket. Select the repositories you want Tembo to access. - Open the [Tembo Dashboard](https://app.tembo.io) and click **New Task**. Pick a repo, choose your [coding agent](/features/coding-agents), and describe the work. + Open the [Tembo Dashboard](https://app.tembo.io) and click **New Task**. Pick one or more repositories, choose your [coding agent](/features/coding-agents), and describe the work. Tembo can also use connected integrations and [MCP servers](/integrations/mcp) for extra context during the task. Tembo works in a [sandbox](/features/sandbox-environment), writes the code, and opens a pull request. Review it, then mention `@tembo` in PR comments to request changes. diff --git a/resources/changelog.mdx b/resources/changelog.mdx new file mode 100644 index 0000000..da56aec --- /dev/null +++ b/resources/changelog.mdx @@ -0,0 +1,4 @@ +--- +title: "Changelog" +url: "https://tembo.io/changelog" +--- diff --git a/resources/pricing.mdx b/resources/pricing.mdx new file mode 100644 index 0000000..bf38e7c --- /dev/null +++ b/resources/pricing.mdx @@ -0,0 +1,90 @@ +--- +title: "Pricing" +description: "Understand Tembo plans, credits, overages, and auto-reload." +--- + +Tembo uses subscription plans with credits so you can match usage to your team's needs. + +## Plans + +- **Free ($0/month)**: 10 credits per week +- **Pro ($60/month)**: 100 credits per month with overage billing +- **Max ($200/month)**: 400 credits per month with overage billing + +Paid plans include overage billing so your work can continue after you use your monthly plan credits. You can set a maximum overage limit to control spend. On Free, tasks pause when credits are exhausted until your weekly refresh, an upgrade, or an additional credit purchase. + +## How credits work + +Credits are consumed when Tembo analyzes code and creates pull requests. + +- **Complex tasks can use more credits**: consumption depends on token usage, which varies by task complexity +- **Simple tasks generally use fewer credits**: straightforward fixes usually consume fewer tokens +- **Included monthly credits expire each billing cycle** +- **Unused included monthly credits do not roll over** + +## What consumes credits + +Credits are used for: + +- Creating pull requests from assigned issues (Linear, Jira, Slack) +- Fixing production errors from Sentry +- Optimizing database queries and indexes +- Processing pull request feedback through the [Feedback Loop](/features/feedback-loop) + +## Credit refunds + +You may receive automatic refunds in some cases: + +- **Failed tasks**: if Tembo cannot complete a task because of an internal error +- **Duplicate issues**: if the same issue is queued more than once +- **Invalid inputs**: if a task fails due to missing access or configuration problems + +## Usage and monitoring + +You can track credit usage in the [Billing dashboard](https://app.tembo.io/settings/billing). + +## Buying additional credits + +- **Free plan**: upgrade to Pro or Max for overages, or buy credit packs +- **Pro and Max**: overage billing is automatic after included credits are used +- **All plans**: credit packs can be purchased from [Billing settings](https://app.tembo.io/settings/billing) and do not expire + +To change plans, open [Billing settings](https://app.tembo.io/settings/billing). + +## Auto-reload + +Auto-reload buys credits when your balance drops below a threshold so tasks can keep running. + +### Set up auto-reload + +1. Go to [Billing settings](https://app.tembo.io/settings/billing) +2. Add a payment method if needed +3. Configure your threshold, target balance, and monthly limit +4. Turn on auto-reload + +### Notes + +- You cannot remove a payment method while auto-reload is enabled +- Monthly limits cap automatic purchases +- You can still buy credits manually at any time + +## Troubleshooting + +**Auto-reload is not running**: confirm your payment method is valid, your balance is below threshold, your monthly limit is not reached, and auto-reload is enabled. + +**You cannot remove your payment method**: disable auto-reload first. + +**Payment failed**: confirm the card is valid and has available funds. + +**Credits did not appear immediately**: billing updates can take a few minutes. + +Need help? Contact [hi@tembo.io](mailto:hi@tembo.io). + +## Enterprise pricing + +If you need custom pricing, reach out to [support@tembo.io](mailto:support@tembo.io) for: + +- Custom credit allocations +- Volume pricing +- Dedicated support +- Flexible billing options diff --git a/resources/snippets/coding-agents-table.mdx b/resources/snippets/coding-agents-table.mdx index e3a4b8d..63e8318 100644 --- a/resources/snippets/coding-agents-table.mdx +++ b/resources/snippets/coding-agents-table.mdx @@ -10,3 +10,6 @@ description: Reusable table comparing supported coding agents, their model provi | **Opencode** | Anthropic/OpenAI/OSS | `claude-4-5-sonnet` | | **Amp** | Anthropic (auto-selected) | (auto-selected) | | **Cursor** | Anthropic/OpenAI/Google/Cursor/XAI | `claude-4-5-sonnet` | +| **Pi** | Anthropic/OpenAI/Google/GitHub Copilot/Azure/Bedrock/Mistral/Groq/xAI/OpenRouter/and more | (configurable) | + +Codex and OpenCode also support `gpt-5.4`, `gpt-5.4-mini`, and `gpt-5.4-nano`. diff --git a/style.css b/style.css index afa4045..cf8f42b 100644 --- a/style.css +++ b/style.css @@ -16,13 +16,38 @@ padding-right: 6px; } -#navbar div { - padding-left: 6px; - padding-right: 6px; +#navbar :has(+ nav) { + flex: none; } -@media (min-width: 1536px) { - [data-page-mode="wide"] #content-area { +#navbar nav { + flex: none; + + .bg-gray-950\/\[0\.03\] { + border-bottom: 3px solid #0083f5; + border-radius: 0px; + background: transparent; + } + + li a { + display: flex !important; + align-items: center !important; + padding-bottom: 11px !important; + margin-bottom: -15px; + border-bottom: 3px solid transparent; + border-radius: 0px; + + &:hover { + border-bottom: 3px solid #0083f5; + border-radius: 0px; + background: transparent; + } + } +} + +/* wider homepage layout */ +[data-page-mode="wide"] #content-area { + @media screen and (width >= 1536px) { --default-max-w: 696px; --effective-max-w: min(calc(900px + 10vw), 1000px); --max-w-offset: calc(var(--effective-max-w) - var(--default-max-w)); @@ -31,6 +56,26 @@ max-width: var(--effective-max-w); margin-left: var(--effective-ml); } + @media screen and (width < 1536px) { + width: 100%; + max-width: 1000px; + margin-left: auto; + margin-right: auto; + } +} + +/* add support for responsive columns */ +.responsive-columns { + grid-template-columns: repeat( + auto-fit, + minmax( + max( + var(--min-col-width, 250px), + calc(100% / var(--cols, 4) - 1rem) + ), + 1fr + ) + ) !important; } #sidebar-content .sidebar-group-header { @@ -46,6 +91,47 @@ background: #212121 !important; } +.card { + border-radius: 8px !important; + border-width: 2px; + + &:hover { + border-color: rgba(0, 131, 245, 1) !important; + + [data-component-part="card-icon"] svg { + background-color: #0083f5 !important; + } + } +} + +[data-component-part="card-content-container"] { + padding: 14px 18px; +} + +[data-component-part="card-icon"] { + margin-top: 3.5px; + width: 20px; + height: 20px; + + svg { + width: 20px; + height: 20px; + } +} + +[data-component-part="card-title"] { + font-size: 15px !important; + margin-top: 10px; +} + +[data-component-part="card-content"] { + font-size: 14px !important; +} + +#body-content [data-component-part="card-content"] [data-as="p"] { + line-height: 1.5 !important; +} + h1, h2, h3 { @@ -67,7 +153,10 @@ h3 { margin-top: 30px !important; } -#body-content span { +#body-content [data-as="p"], +#body-content h2, +#body-content h3, +#body-content li { line-height: 1.75rem !important; letter-spacing: -0.1px !important; } @@ -96,6 +185,15 @@ h3 { border-bottom: 1px solid #dedede !important; } +#navbar .lg\:px-5 { + padding-left: 6px; + padding-right: 6px; +} + +#navbar .nav-logo { + height: 30px; +} + #sidebar-content { border-right: 1px solid #dedede !important; } @@ -121,6 +219,10 @@ h3 { border-bottom: 1px solid #ffffff0f !important; } + .card:hover { + border-color: #0083f5 !important; + } + #navbar > .dark\:bg-background-dark { background-color: #202020 !important; } diff --git a/support.mdx b/support.mdx new file mode 100644 index 0000000..1c7d27b --- /dev/null +++ b/support.mdx @@ -0,0 +1,60 @@ +--- +title: "Support" +description: "Get help with Tembo through in-app chat, email, and dedicated Slack channels." +--- + +All customers get access to support through in-app chat and email. Enterprise accounts also get a dedicated Slack channel for direct access to the Tembo team. + +## How to reach us + +| Channel | Details | +|---------|---------| +| **In-App Chat** | Behind the **Help** button at the bottom of the left sidebar | +| **Email** | support@tembo.io | +| **Slack** | Dedicated channel (enterprise plans) | + +## Support tiers + + + Standard – Free and Pro}> + **Channels:** In-app chat, Email +
**Hours:** Monday–Friday, 9am–6pm ET +
**First Response:** Within 1 business day +
+ Priority – Max, Unlimited, and Annual Agreements}> + **Channels:** In-app chat, Email, Slack +
**Hours:** Monday–Friday, 9am–6pm ET +
**First Response:** Within 6 business hours +
**Extras:** Dedicated Slack channel +
+ + Premiere – Add-on for Enterprise plans}> + Everything in Priority, plus: +

**Channels:** + Video, Phone +
**Hours:** 8am-8pm ET for critical issues +
**First Response:** Within 1 hour (critical), 4 hours (standard) +
**Extras:** Named account manager, quarterly reviews, custom SLA +

[Contact sales](mailto:sales@tembo.io) to add Premiere support. +
+
+ +## Response times by severity + +| Issue Type | Standard | Priority | Premiere | +|------------|----------|----------|----------| +| **Critical** — Production down | < 8 hrs | < 2 hrs | < 1 hr (24/7) | +| **High** — Major feature broken | < 1 day | < 4 hrs | < 2 hrs | +| **Medium** — Minor issue | < 2 days | < 8 hrs | < 4 hrs | +| **Low** — Question/guidance | < 3 days | < 1 day | < 8 hrs | + +*Times shown are targets for first response during business hours unless noted.* + +## What's a critical issue? + +- Production environment completely unavailable +- Data loss or corruption +- Security vulnerability +- No workaround available + +## Upgrade your support + +Need faster response times, a named account manager, or 24/7 critical issue coverage? [Contact us](mailto:sales@tembo.io) to learn about Premiere support.