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

# Introduction

> Welcome to Soma

<iframe src="https://www.loom.com/embed/bc30719ec5e54405b71027742f772da2" className="w-full aspect-video rounded-xl" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## Setting up

TLDR; Jump straight into building your first agent in minutes.

<Card title="Start here" icon="rocket" href="/quickstart" horizontal>
  Follow our quickstart guide.
</Card>

## Introduction

Soma is an open-source, self-hostable AI agent & workflow runtime designed for startups through to enterprise. It's self-hostable, a single binary and provides a security and governance plane across your agents.

You can use Soma to build many different types of workflows & agents, using plain old code. You can build:

* Chat / Turn based agents (see [example agent template](https://github.com/trysoma/typescript-ai-sdk-template/blob/main/agents/index.ts))
* Business process-style workflows  (see [example agent template](https://github.com/trysoma/typescript-ai-sdk-template/blob/main/agents/index.ts))
* A combination of both  (see [example agent template](https://github.com/trysoma/typescript-ai-sdk-template/blob/main/agents/index.ts))

See the quickstart guide for more details.

Key features include:

* Define your custom MCP functions and AI agents in regular code (Typescript supported, Python coming soon)
* Bring whichever tools and supporting frameworks you would like into Soma (e.g. Llangchain, Vercel AI SDK, etc.)
* Make your code fault-tolerant and resumable. Crash or suspend execution at any point and resume from where it left off
* Automatically get an A2A (Agent2Agent) and (coming soon) OpenAI Streaming compatable API endpoints to message your agent
* An MCP server pre-integrated with well known third-party SaaS providers that handles credential encryption and rotation for you
* A UI to debug your Agent & MCP functions, configure MCP provider credentials and see historical agent executions and chats
* Deployable to local desktop or cloud environments

Features that are landing soon:

* Fine-grained API key access management to restrict access to your agent
* Human in-the-loop approvals before actions are executed
* Outbound AI gateway to intercept all agent requests to model providers for deeper observability

This is all packaged into a single binary and leverages:

* [Resstate](https://resstate.dev) for fault-tolerance
* [Turso](https://turso.tech) (Sqlite) for data storage requirements
* Local, AWS or (soon)GCP KMS encryption for secrets management (MCP credentials, API keys, Agent secrets)

See our deployment guide for self-hosting instructions.

## Framework vs runtime

<img src="https://mintcdn.com/soma-5ed3fd37/mrOPXVGieX3X0084/assets/images/framework-vs-runtime.jpg?fit=max&auto=format&n=mrOPXVGieX3X0084&q=85&s=f79598d16381e18f645bffe22a59b476" alt="Framework vs runtime" width="400" height="200" data-path="assets/images/framework-vs-runtime.jpg" />

We view Soma as the bottom of the pyramind, providing the core building blocks for your agent and providing a DX to increase developer velocity.

You can use any framework you want to build your agent, including:

* Vercel AI SDK
* Langchain
* OpenAI Agents SDK

Whilst we don't have lower level language bindings for all of these libraries just yet, you can still use them with Soma directly. Soma provides:

* A secure MCP server for your agent to use
* A ready to use OpenAI Streaming and Agent 2 Agent compatible API endpoints to message your agent
* MCP and agent chat debug tools
* An easy path from local development to production
* API credential management (i.e. protect the chat endpoints via API key, Oauth, etc.)
* Human in-the-loop approvals
* Fault tolerance and resumability

all of which compliment your chosen framework and agent / workflow business logic.

## SDK support matrix

| Language   | Platform              | Status |
| ---------- | --------------------- | ------ |
| Typescript | Mac OSX X86           | 🟢     |
|            | Mac OSX AARCH / ARM   | 🟢     |
|            | Linux GNU X86         | 🟢     |
|            | Linux GNU AARCH / ARM | 🟢     |
|            | Windows               | ⚪      |
| Python     | Mac OSX X86           | 🟢     |
|            | Mac OSX AARCH / ARM   | 🟢     |
|            | Linux GNU X86         | 🟢     |
|            | Linux GNU AARCH / ARM | 🟢     |
|            | Windows               | ⚪      |
| Rust       | Mac OSX X86           | ⚪      |
|            | Mac OSX AARCH / ARM   | ⚪      |
|            | Linux GNU X86         | ⚪      |
|            | Linux GNU AARCH / ARM | ⚪      |
|            | Windows               | ⚪      |

Windows support is planned however it's not natively supported due to our use of Unix domain sockets in Rust ( [related issue](https://github.com/openai/codex/pull/5350) )

<Columns cols={1}>
  <Card title="Quickstart" icon="terminal" href="/quickstart">
    Get started and run your first agent in minutes
  </Card>
</Columns>
