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

# Welcome to Flow Framework

> Build once. Ship to every chat.

Flow Framework brings your product to Claude, ChatGPT, the terminal and messaging apps from one
TypeScript codebase. Write the tools that call your APIs, add skills that explain your workflows,
and use them across every interface.

## Why we're building Flow

We're building Flow for a chat-first world, where people use products by asking for what they
need. “Move my booking to Saturday” should get it done—not send someone to a form.

Whether someone texts your business or asks their own assistant, your product should be there.
Flow lets you build the tools and workflows once, then bring them wherever people chat.

## Where do you want to ship?

> **[Claude & ChatGPT](https://docs.flow.engineer/framework/mcp.md)**
>
> Serve your product as an MCP server. The assistant calls your tools with the user's account.

> **[A command line](https://docs.flow.engineer/cli.md)**
>
> Give people, scripts and coding agents a CLI over the same tools.

> **[WhatsApp & iMessage](https://docs.flow.engineer/conversations.md)**
>
> Run an agent on WhatsApp, iMessage, Telegram, SMS or your own app.

> **[Native plugins](https://docs.flow.engineer/plugins.md)**
>
> Package skills and an MCP connection for hosts that load plugins.

> [!NOTE]
>
> **Building with a coding agent?** Start with the [coding-agent guide](https://docs.flow.engineer/agents.md). The starter
> includes the skills your agent needs to build, connect and test your project.

## Start with a working project

The starter is a café assistant with tools, skills, an MCP server, a CLI, a messaging agent
and tests. Replace the café's operations with calls to your own product.

```sh Terminal theme={null}
npx @flow-engineer/flow new my-agent --display-name "My agent"
cd my-agent
npm install
```

Choose how to try it:

```sh MCP server theme={null}
npm run mcp
# Connect the URL it prints in your MCP client.
```

```sh CLI theme={null}
# Keep npm run mcp running in another terminal.
npm run cli -- menu --json
```

```sh Messaging theme={null}
npx @flow-engineer/flow link --channel telegram
npm start
# Open the playground URL or the phone link.
```

The [quickstart](https://docs.flow.engineer/framework/quickstart.md) walks through setup and shows what you should see at each step.

## What you write once

**Tools** are typed functions that read data or take actions in your product: look up an order,
move a booking, search a catalog. **Skills** explain how to use those tools to complete a task.

Flow turns those definitions into the interface each caller needs. You can customize the MCP
descriptors, CLI commands, authentication and handlers, or add your own alongside the defaults.

> **[Write your first tool](https://docs.flow.engineer/build-agent.md)**
>
> Add a function, define its input and verify it from the CLI.

> **[Teach a workflow](https://docs.flow.engineer/skills.md)**
>
> Write a skill that works in your agent and in MCP or plugin hosts.

## Who runs the conversation?

In **Claude and ChatGPT**, the host's model decides when to call your MCP tools. A **CLI command**
calls a tool directly. Neither needs a separate model key for Flow.

For a **messaging agent**, Flow runs the conversation with your chosen model. It handles double
texts, acknowledgements, background tools, channel formatting, persistent history and reminders.
People can add a detail or change their mind without waiting for a rigid question-and-answer flow.

Your tools and workflows are shared. A host's private conversation history stays with that host;
your tools receive the identity verified for their caller.

## Test it. Ship it. See what happened.

Try the agent in the [playground](https://docs.flow.engineer/playground.md), check tools and CLI configuration with `flow check`,
and run [scenario tests](https://docs.flow.engineer/testing.md) before a release. Test whether the right thing happened in your
product, not just whether the reply sounded helpful. Send events and traces to your own systems
or connect Flow's hosted services.

The framework runs in your Node process under Apache-2.0. [Flow hosting](https://docs.flow.engineer/hosting.md) can run it
for you; [Flow Messaging](https://docs.flow.engineer/unified-messaging-api/index.md) supplies messaging channels through one API.

> **[Follow the quickstart](https://docs.flow.engineer/framework/quickstart.md)**
>
> Create a project and try your first interface.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.