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

# Overview

Membrane makes your software talk to anything else. This documentation describes how.

## Getting Started

To get started, pick your use case:

<Columns cols={1}>
  <Card title="Quickstart: AI Agents" href="/docs/getting-started/quickstart-agent" icon="robot">
    Give Claude, ChatGPT, Cursor, or any agent the ability to connect to apps, run actions, and react to events.
  </Card>

  <Card title="Quickstart: Product Integrations" href="/docs/getting-started/product-integrations" icon="rocket">
    Add integrations to the software you build so its users could connect external apps, sync data, and automate workflows.
  </Card>
</Columns>

## Ways to Use Membrane

Membrane is fully programmable and API-first. All functionality is accessible through multiple interfaces:

<Columns cols={2}>
  <Card title="Agent Skills" href="/docs/ways-to-use-membrane/agent-skills" icon="wand-magic-sparkles">
    Give AI agents context and tools to talk to anything.
  </Card>

  <Card title="CLI" href="/docs/ways-to-use-membrane/cli" icon="terminal">
    Authenticate, manage, and run your integrations in a command line.
  </Card>

  <Card title="REST API" href="/docs/ways-to-use-membrane/rest-api" icon="code">
    Call any Membrane functionality via API endpoints.
  </Card>

  <Card title="SDK" href="/docs/ways-to-use-membrane/sdk" icon="cube">
    Use Membrane via TypeScript/JavaScript SDK with typed accessors.
  </Card>

  <Card title="MCP" href="/docs/ways-to-use-membrane/mcp" icon="plug">
    Use Membrane via Model Context Protocol.
  </Card>

  <Card title="Embedded UI" href="/docs/ways-to-use-membrane/embedded-ui" icon="window-restore">
    Pre-built UI components for integrating your software.
  </Card>

  <Card title="Console" href="/docs/ways-to-use-membrane/console" icon="browser">
    Web UI for managing and monitoring your Membrane workspace.
  </Card>
</Columns>

## How Membrane Works

All interactions with external apps fall into three main categories:

**Connect** — Authenticate with an external app (OAuth, API key, etc.) to be able to talk to it. This creates a [Connection](/docs/how-membrane-works/connections) — an authenticated link that Membrane keeps alive, refreshes tokens for, and reconnects on failure.

**Act** — Take [Actions](/docs/how-membrane-works/actions) in the connected app: create a contact, send a message, list invoices, update a deal. Actions run on top of connections and use them for authentication. Actions can be anything from a simple API request to a complex multi-step workflow.

**React** — Subscribe to changes in the connected app via [Events](/docs/how-membrane-works/events). Membrane detects new records, updates, and deletions via webhooks or polling, and delivers them to your backend.

### Multi-tenancy

If you're using or building a product where multiple people connect their own apps, use [Tenants](/docs/how-membrane-works/tenants) to isolate their connections and data.

Each tenant has their own list of connections and a full set of integration settings. Tenants cannot access each other's data. Each tenant is identified by `tenantKey` - an arbitrary string you provide that usually corresponds to a unique identifier on your side. Membrane knows which tenant to use for each interaction based on Membrane Token you generate. See [Authentication](/docs/how-membrane-works/authentication) for details.

### Membrane Layers

Membrane elements like actions and events can be defined at three levels of specificity:

| Layer           | Scope                   | Example                                                                                              |
| --------------- | ----------------------- | ---------------------------------------------------------------------------------------------------- |
| **Universal**   | Works across any app    | "Create Contact" action that works with any CRM                                                      |
| **Integration** | One specific app        | How "Create Contact" maps to HubSpot's API — an *implementation* of the universal element            |
| **Connection**  | One specific connection | Custom field mapping for a particular HubSpot account — a *customization* of the integration element |

This is useful when you want to create standard integration logic that works across many connections or apps and only define differences for each app/connection when they appear. This allows your code operate on abstract layer and let Membrane resolve it to the correct configuration for a given app and connection.

## Managing Membrane

<Columns cols={2}>
  <Card title="Monitoring & Troubleshooting" href="/docs/managing-membrane/monitoring-troubleshooting" icon="chart-line">
    Logs, alerts, error inspection, and debugging tools for every integration touchpoint.
  </Card>

  <Card title="Self-hosting" href="/docs/managing-membrane/self-hosting" icon="server">
    Deploy Membrane on your own infrastructure with Docker and Helm charts.
  </Card>

  <Card title="Import & Export" href="/docs/managing-membrane/import-and-export" icon="arrow-right-arrow-left">
    Move workspace configuration between environments.
  </Card>

  <Card title="Security & Privacy" href="/docs/managing-membrane/security-and-privacy" icon="shield">
    Security practices, data privacy, and compliance.
  </Card>
</Columns>
