> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bedrock.orinlabs.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Build agents that run forever

## What is Bedrock?

Bedrock handles the hard parts of building AI agents:

* **Persistent State** — Agents use Bedrock-owned adapter state for contacts, messages, documents, projects, and notifications
* **Tool Execution** — Connect agents to SMS, email, calendars, or your own APIs via webhooks
* **Autonomous Runtime** — Agents run independently, waking and sleeping on schedules
* **Full Observability** — Every LLM call, tool invocation, and decision is traced

See a demo video [here](https://www.loom.com/share/490a3a8012f44db6bea5d6b0a4ac7f02).

## Core Architecture

* **Organization** — your top-level tenant. Owns every template, agent, adapter, and API key. Holds the org-wide OpenAI / Anthropic keys used when Bedrock talks to a provider.
  * **AgentTemplate** — a named blueprint: system prompt, default model, adapter set + per-adapter config, harness git ref, tool call secret.
    * **Agent 1, Agent 2, ...** — created from the template. Each agent snapshots the template's configuration + adapter configs at creation time. Template edits don't retroactively change live agents.

Adapters and tools live on the organization and are attached to templates via `AdapterConfig` rows; each agent gets its own immutable `AgentAdapterConfig` snapshot.

## Key Concepts

* **Organization** — Tenant account. Holds users, billing, LLM provider keys, and API keys.
* **AgentTemplate** — Blueprint for agents: prompt, model, adapter set, tool-call secret. Think of it like a Docker image.
* **Agent** — A running instance created from a template (or ad-hoc) with its own adapter state. Carries a `purpose` (`production` | `eval` | `dev`) and free-form tags.
* **Adapter** — An integration module (SMS, Email, CRM, etc.) that provides tools.
* **Tool** — A callable function an agent can invoke, either built-in or a webhook to your API.

<CardGroup cols={2}>
  <Card title="Organizations" icon="users" href="/concepts/organizations">
    Accounts, members, invites, and organization-scoped API keys.
  </Card>

  <Card title="Templates" icon="layer-group" href="/concepts/templates">
    Blueprints for agents: prompt, model, adapters, tool-call secret.
  </Card>

  <Card title="Agents" icon="robot" href="/concepts/agents">
    Deploy autonomous AI instances with their own adapter state.
  </Card>

  <Card title="Adapters" icon="plug" href="/concepts/adapters">
    Built-in integrations for SMS, email, calendars, and more.
  </Card>

  <Card title="Custom Adapters" icon="webhook" href="/concepts/custom-adapters">
    Build your own adapters to connect agents to any API.
  </Card>

  <Card title="Notifications" icon="bell" href="/concepts/notifications">
    Priority-based attention system that drives agent wake/sleep behavior.
  </Card>

  <Card title="Tracing" icon="chart-line" href="/concepts/tracing">
    Full observability into every LLM call, tool execution, and decision.
  </Card>

  <Card title="Evaluations" icon="flask-vial" href="/concepts/evals">
    End-to-end simulations driven by the external harness.
  </Card>
</CardGroup>

## Built-in Adapters

Bedrock includes these default integrations:

| Adapter                                      | Description                                     |
| -------------------------------------------- | ----------------------------------------------- |
| **Contacts**                                 | Store and manage contact information            |
| **SMS**                                      | Send and receive text messages via Twilio       |
| **MMS**                                      | Send and receive iMessage/RCS via Linq          |
| **Surge**                                    | Send and receive SMS via Surge                  |
| **Blooio**                                   | Send and receive iMessage/RCS/SMS via Blooio    |
| **Email**                                    | Send and receive emails via AgentMail           |
| **Gmail**                                    | Read/send from a user's Gmail via OAuth         |
| **Google Calendar**                          | Manage events on a user's Google Calendar       |
| **Google Drive**                             | Browse/read/write a user's Google Drive         |
| **Strava**                                   | Read a user's activities and training data      |
| **Slack**                                    | Message and receive events from Slack           |
| **[Notifications](/concepts/notifications)** | Internal notification/reminder system           |
| **Projects**                                 | Hierarchical project tracking with sub-projects |
| **Documents**                                | Store text documents for agent reference        |
| **Computer**                                 | Cloud VM sandbox for shell commands and files   |
| **Browser**                                  | Asynchronous browser automation for web tasks   |
| **Exa**                                      | Web and people/profile search via Exa           |
| **Sub-Agents**                               | Spawn child agents that run autonomously        |
| **Webchat**                                  | Local web chat channel for dev / testing        |

## Custom Integrations

Build your own adapters to connect agents to any system:

1. **Create an adapter** — a named container for related tools
2. **Add webhook tools** — each tool POSTs to your API when called
3. **Verify requests** — check the `X-Agent-Secret` header to authenticate
4. **Return data** — your JSON response becomes the tool result the agent sees

See [Custom Adapters](/concepts/custom-adapters) for a full walkthrough.

## How Agents Run

Every run spawns an isolated `bedrock-harness` subprocess (pinned to the template's `harness_git_ref`, or latest `main` if unset):

1. Wake agent (API call or scheduled)
2. Load memory context
3. Build prompt with tools
4. Call LLM (OpenAI / Anthropic)
5. Execute tool calls
6. Log to memory
7. Repeat until agent sleeps

Agents are autonomous — they decide when to sleep and what actions to take based on their tools and memory.

## Use Your Own LLM Keys

Bedrock uses **your LLM provider accounts**:

* You control costs directly with OpenAI / Anthropic
* Use any model available on your account
* Prompt caching with Claude reduces costs significantly

Keys live on the **Organization** (`openai_api_key` / `anthropic_api_key`). If unset, Bedrock falls back to `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` environment variables.

## Quick Links

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Create a template and deploy your first agent
  </Card>

  <Card title="Custom Adapters" icon="webhook" href="/concepts/custom-adapters">
    Connect agents to your own APIs
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/introduction">
    Full endpoint documentation
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    API key setup and usage
  </Card>
</CardGroup>
