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

# Framework integrations

> How Tilde works with each agent framework, and which Tilde features each framework supports.

You build agents in the framework you already use. Tilde provides a core SDK in TypeScript and Python, plus an adapter package for each supported framework. The adapter connects the framework's own objects to Tilde, so your agent code stays plain framework code.

| Framework | TypeScript | Python |
| - | - | - |
| [Vercel AI SDK](/docs/frameworks/vercel-ai-sdk) | `@trytilde/sdk-vercel-ai-node` | |
| [Mastra](/docs/frameworks/mastra) | `@trytilde/sdk-mastra-node` | |
| [LangChain and LangGraph](/docs/frameworks/langchain) | `@trytilde/sdk-langchain-node` | `trytilde-langchain` |
| [OpenAI Agents SDK](/docs/frameworks/openai-agents) | `@trytilde/sdk-openai-agents-node` | `trytilde-openai-agents` |
| [Pydantic AI](/docs/frameworks/pydantic-ai) | | `trytilde-pydantic-ai` |
| [Agno](/docs/frameworks/agno) | | `trytilde-agno` |
| [CrewAI](/docs/frameworks/crewai) | | `trytilde-crewai` |

Every framework has an example agent in the [Tilde open-source repository](https://github.com/trytilde/tilde).

<Info>
  If your framework is not on this list, use the core SDK directly. Read the conversation, tools, and skills from `ctx` inside `run`. See [Anatomy of an agent](/docs/anatomy-of-an-agent).
</Info>

## What every adapter does

Each adapter does the same five jobs, in the framework's own terms:

1. **Converts history.** It turns the Tilde conversation, with attachments, into the framework's message type.
2. **Adds tools.** It merges the channel's tools, the agent's Tilde tools, and your [bundled tools](/docs/tools/overview#bundled-tools) into the framework's tool list. It records every call.
3. **Delivers skills.** It hands [skills](/docs/skills/overview) to the framework's native skill loader, or adds them as tools when the framework has none.
4. **Passes new input.** When a user sends another message during a run, or the run is stopped, the adapter feeds it into the framework's loop.
5. **Registers prompts and tools at deploy.** `tilde deploy` asks the adapter for the framework's prompts, tools, and skills, and registers them with the deployment.

Model calls go through Tilde's [inference gateway](/docs/inference-providers). You build the framework's usual model client from `inference(name)`, which returns a gateway URL and a placeholder key. The gateway injects the real credential.

## Feature compatibility

| Feature | Vercel AI SDK | Mastra | LangChain | OpenAI Agents | Pydantic AI | Agno | CrewAI |
| - | - | - | - | - | - | - | - |
| Inference gateway | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Framework trace spans | Yes | Partial | Partial | Partial | Partial | Partial | Partial |
| Tilde and channel tools | Yes | Yes | Yes | Yes | Yes | Yes | Partial |
| Bundled tools | Yes | Yes | Yes | Yes | Partial | Yes | Partial |
| Prompt versioning | Partial | Yes | Yes | Yes | Yes | Yes | Partial |
| Native skills | No, as tools | Yes | No, as tools | Partial | No, as tools | Yes | Yes |
| New input during a run | Yes | Yes | Yes | Yes | Yes | Partial | Yes |

Each framework's page explains its partial entries.

## Behaviour common to every framework

* **Replies go through channel tools.** The model's text output is private. An agent replies by calling a channel tool, such as `sendMessage`. Adapters do not stream model text to users.
* **Tilde owns the conversation history.** Load it with `ctx.message.history()` on each invocation. Turn off the framework's own memory or history features, or the model sees messages twice.
* **Tilde's tracing replaces the framework's.** The SDK records each invocation, runtime call, and tool call as spans. Framework spans join the same trace only when the framework emits OpenTelemetry itself. The example agents turn off framework tracing that sends data to a third party, and we recommend you do the same.
* **Define agents at module scope.** `tilde deploy` finds prompts, tools, and skills by loading your entry module. Agents built inside `run` are invisible to it.
* **Gateway controls apply to every framework.** Capabilities, channel access, budgets, and, in Tilde Enterprise, security middleware run in the gateway, whatever framework the agent uses.

Some adapters read framework settings that are not part of the framework's public API. Each adapter pins the framework versions it has been tested with.
