Mintlify docs (#217)
* add the new docs * Update to latest comprehensive docs from mintlify2 branch - Add conversations, jobs, triggers guides - Complete tools documentation - Enhanced RAG and agents docs - Add UI screenshots and images - Update contribution guide and quickstart * added intro gif * Update introduction.mdx with intro gif * Add public/videos folder with Intro-Video.gif for proper Next.js/Mintlify serving * updated gif * Update introduction.mdx to have a working intro gif
83
apps/docs/docs.json
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"$schema": "https://mintlify.com/docs.json",
|
||||
"theme": "maple",
|
||||
"name": "Rowboat",
|
||||
"description": "Rowboat is an open-source platform for building multi-agent systems. It helps you orchestrate tools, RAG, memory, and deployable agents with ease.",
|
||||
"colors": {
|
||||
"primary": "#6366F1",
|
||||
"light": "#6366F1",
|
||||
"dark": "#6366F1"
|
||||
},
|
||||
"icons": {
|
||||
"library": "fontawesome"
|
||||
},
|
||||
"navigation": {
|
||||
"groups": [
|
||||
{
|
||||
"group": "Getting Started",
|
||||
"pages": [
|
||||
"docs/getting-started/introduction",
|
||||
"docs/getting-started/quickstart",
|
||||
"docs/getting-started/license"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Using Rowboat",
|
||||
"pages": [
|
||||
"docs/using-rowboat/rowboat-studio",
|
||||
"docs/using-rowboat/agents",
|
||||
"docs/using-rowboat/tools",
|
||||
"docs/using-rowboat/rag",
|
||||
"docs/using-rowboat/triggers",
|
||||
"docs/using-rowboat/jobs",
|
||||
"docs/using-rowboat/conversations",
|
||||
{
|
||||
"group": "Customise",
|
||||
"icon": "sliders",
|
||||
"pages": [
|
||||
"docs/using-rowboat/customise/custom-llms"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "API & SDK",
|
||||
"pages": ["docs/api-sdk/using_the_api", "docs/api-sdk/using_the_sdk"]
|
||||
},
|
||||
{
|
||||
"group": "Development",
|
||||
"pages": ["docs/development/contribution-guide", "docs/development/roadmap"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"background": {
|
||||
"decoration": "gradient",
|
||||
"color": {
|
||||
"light": "#FFFFFF",
|
||||
"dark": "#0D0A09"
|
||||
}
|
||||
},
|
||||
"navbar": {
|
||||
"primary": {
|
||||
"type": "button",
|
||||
"label": "Try Rowboat",
|
||||
"href": "https://app.rowboatlabs.com"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"socials": {
|
||||
"github": "https://github.com/rowboatlabs/rowboat",
|
||||
"linkedin": "https://www.linkedin.com/company/rowboat-labs",
|
||||
"discord": "https://discord.gg/PCkH9TWC"
|
||||
}
|
||||
},
|
||||
"contextual": {
|
||||
"options": [
|
||||
"copy",
|
||||
"view",
|
||||
"chatgpt",
|
||||
"claude"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
27
apps/docs/docs/add_tools.mdx
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
## Add tools to agents
|
||||
Copilot can help you add tools to agents. You can (a) add a mock tool, (b) add a tool from an MCP server, (c) integrate with you own tools using a webhook.
|
||||
|
||||
|
||||
### Adding mock tools
|
||||
You can mock any tool you have created by checking the 'Mock tool responses' option.
|
||||
|
||||
|
||||

|
||||
|
||||
### Adding MCP tools
|
||||
|
||||
You can add a running MCP server in Settings -> Tools.
|
||||
|
||||

|
||||
|
||||
You can use [supergateway](https://github.com/supercorp-ai/supergateway) to expose any MCP stdio server as an SSE server.
|
||||
|
||||
Now, you can import the tools from the MCP server in the Build view.
|
||||
|
||||

|
||||
|
||||
|
||||
### Debug tool calls in the playground
|
||||
When agents call tools during a chat in the playground, the tool call parameters and response are available for debugging real-time. For testing purposes, the platform can produce mock tool responses in the playground, without integrating actual tools.
|
||||
|
||||

|
||||
29
apps/docs/docs/agents.mdx
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Agents
|
||||
|
||||
## Overview
|
||||
- Agents carry out a specific part of the conversation and / or perform tasks like orchestrating between other agents, triggering internal processes and fetching information.
|
||||
- Agents carry out tasks through tools provided to them.
|
||||
- Agents can be connected to other agents through a mention in the agent's instruction.
|
||||
|
||||
## Agent Configurations
|
||||
|
||||
### Description
|
||||
The description conveys the agent's role in the multi-agent system. Writing a good description is important for other agents to know when to pass control of the conversation to an agent.
|
||||
|
||||
### Instructions
|
||||
Agent instructions are the backbone of an agent, defining its behavior. RowBoat Studio's copilot produces a good framework for agent instructions, involving Role, Steps to Follow, Scope and Guidelines. Since agents are powered by LLMs, general best practices while writing prompts apply.
|
||||
|
||||
### Examples
|
||||
The agent uses examples as a reference for behavior in different scenarios. While there are no prescribed formats to provide examples in, examples should include what the user might say, what the agent should respond with as well as indications of any tool calls to be made.
|
||||
|
||||
### Prompts
|
||||
Prompts attached to an agent will be used by the agent in addition to instructions.
|
||||
|
||||
### Tools
|
||||
Tools attached to an agent will be put out as tool calls. The behavior of when to invoke tools can be fine-tuned by specifying corresponding instructions or prompts. Adding examples to agents can also be useful in controlling tool call behavior.
|
||||
|
||||
### Connected Agents
|
||||
In the agent instructions, the connected agents are shown with an '@mention'. If the agent mentioned in an instruction (connected agent) does not actually exist, the connected agent's name would show up with an '!' to call to attention.
|
||||
|
||||
### Model
|
||||
RowBoat currently supports OpenAI LLMs. Agents can be configured to use GPT-4o or GPT-4o-mini.
|
||||
173
apps/docs/docs/api-sdk/using_the_api.mdx
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
---
|
||||
title: "Using the API"
|
||||
description: "This is a guide on using the HTTP API to power conversations with the assistant created in Studio."
|
||||
icon: "code"
|
||||
---
|
||||
|
||||
|
||||
## Deploy your assistant to production on Studio
|
||||
<Frame>
|
||||
<img src="/docs/img/prod-deploy.png" alt="Prod Deploy" />
|
||||
</Frame>
|
||||
|
||||
## Obtain API key and Project ID
|
||||
|
||||
Generate API keys via the developer configs in your project. Copy the Project ID from the same page.
|
||||
<Frame>
|
||||
<img src="/docs/img/dev-config.png" alt="Developer Configs" />
|
||||
</Frame>
|
||||
|
||||
## API Endpoint
|
||||
|
||||
```
|
||||
POST <HOST>/api/v1/<PROJECT_ID>/chat
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
- For self-hosted: `<HOST>` is `http://localhost:3000`
|
||||
|
||||
## Authentication
|
||||
|
||||
Include your API key in the Authorization header:
|
||||
|
||||
```
|
||||
Authorization: Bearer <API_KEY>
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
### First Turn
|
||||
|
||||
```bash
|
||||
curl --location '<HOST>/api/v1/<PROJECT_ID>/chat' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'Authorization: Bearer <API_KEY>' \
|
||||
--data '{
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Hello, can you help me?"
|
||||
}
|
||||
],
|
||||
"state": null
|
||||
}'
|
||||
```
|
||||
|
||||
Response:
|
||||
```json
|
||||
{
|
||||
"messages": [
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": "Hello! Yes, I'd be happy to help you. What can I assist you with today?",
|
||||
"agenticResponseType": "external"
|
||||
}
|
||||
],
|
||||
"state": {
|
||||
"last_agent_name": "MainAgent"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Subsequent Turn
|
||||
|
||||
Notice how we include both the previous messages and the state from the last response:
|
||||
|
||||
```bash
|
||||
curl --location '<HOST>/api/v1/<PROJECT_ID>/chat' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'Authorization: Bearer <API_KEY>' \
|
||||
--data '{
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Hello, can you help me?"
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": "Hello! Yes, I'd be happy to help you. What can I assist you with today?",
|
||||
"agenticResponseType": "external"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "What services do you offer?"
|
||||
}
|
||||
],
|
||||
"state": {
|
||||
"last_agent_name": "MainAgent"
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## API Specification
|
||||
|
||||
### Request Schema
|
||||
|
||||
```typescript
|
||||
{
|
||||
// Required fields
|
||||
messages: Message[]; // Array of message objects representing the conversation history
|
||||
state: any; // State object from previous response, or null for first message
|
||||
|
||||
// Optional fields
|
||||
workflowId?: string; // Specific workflow ID to use (defaults to production workflow)
|
||||
testProfileId?: string; // Test profile ID for simulation
|
||||
}
|
||||
```
|
||||
|
||||
### Message Types
|
||||
|
||||
Messages can be one of the following types:
|
||||
|
||||
1. System Message
|
||||
```typescript
|
||||
{
|
||||
role: "system";
|
||||
content: string;
|
||||
}
|
||||
```
|
||||
|
||||
2. User Message
|
||||
```typescript
|
||||
{
|
||||
role: "user";
|
||||
content: string;
|
||||
}
|
||||
```
|
||||
|
||||
3. Assistant Message
|
||||
```typescript
|
||||
{
|
||||
role: "assistant";
|
||||
content: string;
|
||||
agenticResponseType: "internal" | "external";
|
||||
agenticSender?: string | null;
|
||||
}
|
||||
```
|
||||
|
||||
### Response Schema
|
||||
|
||||
```typescript
|
||||
{
|
||||
messages: Message[]; // Array of new messages from this turn
|
||||
state: any; // State object to pass in the next request
|
||||
}
|
||||
```
|
||||
|
||||
## Important Notes
|
||||
|
||||
1. Always pass the complete conversation history in the `messages` array
|
||||
2. Always include the `state` from the previous response in your next request
|
||||
3. The last message in the response's `messages` array will be a user-facing assistant message (`agenticResponseType: "external"`)
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
The API has rate limits per project. If exceeded, you'll receive a 429 status code.
|
||||
|
||||
## Error Responses
|
||||
|
||||
- 400: Invalid request body or missing/invalid Authorization header
|
||||
- 403: Invalid API key
|
||||
- 404: Project or workflow not found
|
||||
- 429: Rate limit exceeded
|
||||
101
apps/docs/docs/api-sdk/using_the_sdk.mdx
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
---
|
||||
title: "Using the SDK"
|
||||
description: "This is a guide on using the RowBoat Python SDK as an alternative to the [RowBoat HTTP API](/using_the_api) to power conversations with the assistant created in Studio."
|
||||
icon: "toolbox"
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
- ``` pip install rowboat ```
|
||||
- [Deploy your assistant to production](/using_the_api/#deploy-your-assistant-to-production-on-studio)
|
||||
- [Obtain your `<API_KEY>` and `<PROJECT_ID>`](/using_the_api/#obtain-api-key-and-project-id)
|
||||
|
||||
### API Host
|
||||
- For the open source installation, the `<HOST>` is [http://localhost:3000](http://localhost:3000)
|
||||
- When using the hosted app, the `<HOST>` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com)
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Usage with StatefulChat
|
||||
|
||||
The easiest way to interact with Rowboat is using the `StatefulChat` class, which maintains conversation state automatically:
|
||||
|
||||
```python
|
||||
from rowboat import Client, StatefulChat
|
||||
|
||||
# Initialize the client
|
||||
client = Client(
|
||||
host="<HOST>",
|
||||
project_id="<PROJECT_ID>",
|
||||
api_key="<API_KEY>"
|
||||
)
|
||||
|
||||
# Create a stateful chat session
|
||||
chat = StatefulChat(client)
|
||||
|
||||
# Have a conversation
|
||||
response = chat.run("What is the capital of France?")
|
||||
print(response)
|
||||
# The capital of France is Paris.
|
||||
|
||||
# Continue the conversation - the context is maintained automatically
|
||||
response = chat.run("What other major cities are in that country?")
|
||||
print(response)
|
||||
# Other major cities in France include Lyon, Marseille, Toulouse, and Nice.
|
||||
|
||||
response = chat.run("What's the population of the first city you mentioned?")
|
||||
print(response)
|
||||
# Lyon has a population of approximately 513,000 in the city proper.
|
||||
```
|
||||
|
||||
### Advanced Usage
|
||||
|
||||
#### Using a specific workflow
|
||||
|
||||
You can specify a workflow ID to use a particular conversation configuration:
|
||||
|
||||
```python
|
||||
chat = StatefulChat(
|
||||
client,
|
||||
workflow_id="<WORKFLOW_ID>"
|
||||
)
|
||||
```
|
||||
|
||||
#### Using a test profile
|
||||
|
||||
You can specify a test profile ID to use a specific test configuration:
|
||||
|
||||
```python
|
||||
chat = StatefulChat(
|
||||
client,
|
||||
test_profile_id="<TEST_PROFILE_ID>"
|
||||
)
|
||||
```
|
||||
|
||||
### Low-Level Usage
|
||||
|
||||
For more control over the conversation, you can use the `Client` class directly:
|
||||
|
||||
```python
|
||||
from rowboat.schema import UserMessage
|
||||
|
||||
# Initialize the client
|
||||
client = Client(
|
||||
host="<HOST>",
|
||||
project_id="<PROJECT_ID>",
|
||||
api_key="<API_KEY>"
|
||||
)
|
||||
|
||||
# Create messages
|
||||
messages = [
|
||||
UserMessage(role='user', content="Hello, how are you?")
|
||||
]
|
||||
|
||||
# Get response
|
||||
response = client.chat(messages=messages)
|
||||
print(response.messages[-1].content)
|
||||
|
||||
# For subsequent messages, you need to manage the message history and state manually
|
||||
messages.extend(response.messages)
|
||||
messages.append(UserMessage(role='user', content="What's your name?"))
|
||||
response = client.chat(messages=messages, state=response.state)
|
||||
```
|
||||
14
apps/docs/docs/create_agents.mdx
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
## Create the set of initial agents
|
||||
Copilot can set up agents for you from scratch.
|
||||
|
||||
### Instruct copilot
|
||||
First, tell it about the initial set of agents that make up your assistant.
|
||||
|
||||

|
||||
|
||||
Using copilot to create your initial set of agents helps you leverage best practices in formatting agent instructions and connecting agents to each other as a graph, all of which have been baked into copilot.
|
||||
|
||||
### Inspect the agents
|
||||
Once you apply changes, inspect the agents to see how copilot has built them. Specifically, note the Instructions, and Examples in each agent.
|
||||
|
||||

|
||||
1
apps/docs/docs/data_sources.mdx
Normal file
|
|
@ -0,0 +1 @@
|
|||
Coming soon.
|
||||
59
apps/docs/docs/development/contribution-guide.mdx
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
---
|
||||
title: "Contribution Guide"
|
||||
description: "Learn how to contribute to the Rowboat project and help improve our platform."
|
||||
icon: "github"
|
||||
---
|
||||
|
||||
# Join the Rowboat Voyage
|
||||
|
||||
We're building Rowboat as an open-source, community-powered platform — and we'd love for you to hop aboard! Whether you're fixing typos, suggesting a new tool integration, or designing your dream multi-agent workflow, your contributions are valuable and welcome.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/contribution-guide-hero.png" className="w-full max-w-[600px] rounded-xl" alt="Contribution guide hero image showing community collaboration" />
|
||||
</Frame>
|
||||
|
||||
---
|
||||
|
||||
## How You Can Contribute
|
||||
|
||||
|
||||
- **Tackle Open Issues**
|
||||
Browse our [GitHub Issues](https://github.com/rowboatlabs/rowboat/issues) for tags like `good first issue`, `help wanted`, or `bug` to find a spot that fits your skillset.
|
||||
|
||||
- **Join the Community**
|
||||
Our [Discord](https://discord.gg/PCkH9TWC) is the go-to hub for brainstorming, feedback, and finding contributors for bigger efforts.
|
||||
|
||||
- **Propose Something New**
|
||||
Have a new tool integration idea or found a bug? Open an issue and let’s discuss it!
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Contribution Workflow & Best Practices
|
||||
|
||||
Whether it's your first contribution or your fiftieth, here's what a great contribution looks like:
|
||||
|
||||
| Step / Tip | Description |
|
||||
|-------------------------------|-----------------------------------------------------------------------------------------------|
|
||||
| **1. Fork the Repository** | Create a personal copy of [rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat) to start contributing. |
|
||||
| **2. Create a New Branch** | Use a descriptive name like `fix-tool-crash` or `feature-new-mcp`. Avoid committing to `main`. |
|
||||
| **3. Make Your Changes** | Focus your PR on a single issue or feature to keep things clean and reviewable. |
|
||||
| **4. Write Tests if Needed** | If you change logic, add relevant tests so your contribution is future-proof. |
|
||||
| **5. Run Tests & Lint Locally**| Make sure your branch passes all tests and code quality checks before pushing. |
|
||||
| **6. Document or Demo It** | Add helpful context: screenshots, example scripts, or a short video/gif to demonstrate your changes. |
|
||||
| **7. Submit a Pull Request** | Open a PR with a clear description of your changes and any context reviewers should know. |
|
||||
| **8. Collaborate on Feedback** | Our maintainers may leave comments — it’s all part of the process. Let’s improve it together. |
|
||||
| **9. Don’t Be Shy to Follow Up** | Feel free to ping the PR/issue if you're waiting on feedback. We appreciate polite nudges. |
|
||||
| **10. Celebrate the Merge!** | You just made Rowboat better. Thanks for contributing 🚀 |
|
||||
|
||||
<Tip>If you're fixing typos, spacing, or small tweaks — try bundling those into a related PR instead of sending them standalone. It helps keep reviews focused. </Tip>
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Come Build With Us
|
||||
|
||||
We believe great ideas come from the community — and that means **you**. Whether you're an engineer, designer, AI tinkerer, or curious beginner, there’s room on this boat for everyone.
|
||||
|
||||
Let’s build the future of AI workflows — together. 🫶
|
||||
7
apps/docs/docs/development/roadmap.mdx
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
icon: "road"
|
||||
---
|
||||
|
||||
# Roadmap
|
||||
|
||||
Explore the future development plans and upcoming features for Rowboat.
|
||||
78
apps/docs/docs/getting-started/introduction.mdx
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
title: "Introduction"
|
||||
description: "Welcome to the official Rowboat documentation! Rowboat is a low-code AI IDE to build MCP tools connected multi-agent assistants. Rowboat copilot builds the agents for you based on your requirements with the option do everything manually as well."
|
||||
icon: "book-open"
|
||||
---
|
||||
|
||||
<Frame>
|
||||
<img src="../videos/Intro-Video.gif" alt="Intro Video" />
|
||||
</Frame>
|
||||
|
||||
## What is RowBoat?
|
||||
**RowBoat is a state-of-art platform to build multi-agent AI systems in a visual interface, with the help of a copilot.**
|
||||
|
||||
RowBoat enables you to build, manage and deploy user-facing assistants. An assistant is made up of multiple agents, each having access to a set of tools and working together to interact with the user as a single assistant. You can connect any MCP tools to the agents.
|
||||
|
||||
For example, you can build a *credit card assistant*, where each agent handles a workflow such as *outstanding payments*, *balance inquiries* and *transaction disputes*. You can equip agents with tools to carry out tasks such as *fetching payment options*, *checking outstanding balance* and *updating user information*. The assistant would help your end-users their credit card-related needs without having to talk to a human agent on your end.
|
||||
|
||||
---
|
||||
|
||||
## How RowBoat works
|
||||
|
||||
### RowBoat Studio
|
||||
RowBoat Studio lets you create AI agents in minutes, using a visual interface and plain language.
|
||||
There are key components that you will work with:
|
||||
- Agents
|
||||
- Playground
|
||||
- Copilot
|
||||
|
||||
|
||||
<Card title="Using Rowboat" icon="puzzle-piece" horizontal href="/docs/using-rowboat/rowboat-studio">
|
||||
Learn about Rowboat Studio and key concepts used in building assistants
|
||||
</Card>
|
||||
|
||||
|
||||
### RowBoat Chat API & SDK
|
||||
- [RowBoat Chat API](/docs/api-sdk/using_the_api) is a stateless HTTP API to interface with the assistant created on RowBoat Studio. You can use the API to drive end-user facing conversations in your app or website.
|
||||
- [RowBoat Chat SDK](/docs/api-sdk/using_the_sdk) is a simple SDK (currently available in Python) which wraps the HTTP API under the hood. It offers both stateful and stateless (OpenAI-style) implementations.
|
||||
|
||||
---
|
||||
|
||||
## Why RowBoat?
|
||||
Rowboat is the fastest way to build and deploy MCP connected multi-agents
|
||||
|
||||
<Steps>
|
||||
<Step title="Build complex assistants">
|
||||
Use plain language and a powerful visual interface to design and orchestrate multi-agent assistants with ease.
|
||||
</Step>
|
||||
|
||||
<Step title="Integrate tools and MCP servers">
|
||||
Add tools and connect to MCP servers in just minutes — no complex setup required.
|
||||
</Step>
|
||||
|
||||
<Step title="Expedite your AI roadmap">
|
||||
Accelerate development with battle-tested tooling tailored for building production-ready, multi-agent AI systems.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
Want to contribute to Rowboat? Please consider checking out our [Contribution Guide](/docs/development/contribution-guide)
|
||||
<Card
|
||||
title="GitHub"
|
||||
icon="github"
|
||||
horizontal href="https://github.com/rowboatlabs/rowboat"
|
||||
>
|
||||
Star us on github!
|
||||
</Card>
|
||||
|
||||
## Community
|
||||
Need help using Rowboat? Join our community!
|
||||
<Card
|
||||
title="Discord"
|
||||
icon="discord"
|
||||
horizontal href="https://discord.gg/PCkH9TWC"
|
||||
>
|
||||
Join our growing discord community and interact with hundreds of developer using Rowboat!
|
||||
</Card>
|
||||
212
apps/docs/docs/getting-started/license.mdx
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
---
|
||||
title: "License"
|
||||
icon: "file"
|
||||
mode: "center"
|
||||
# url: "https://github.com/rowboatlabs/rowboat/blob/main/LICENSE" ## An alternate display we could use
|
||||
---
|
||||
|
||||
RowBoat is available under the [Apache 2.0 License](https://github.com/rowboatlabs/rowboat/blob/main/LICENSE):
|
||||
|
||||
----
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [2024] [RowBoat Labs]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
94
apps/docs/docs/getting-started/quickstart.mdx
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
---
|
||||
title: "Quickstart"
|
||||
description: "guide to getting started with rowboat"
|
||||
icon: "rocket"
|
||||
---
|
||||
---
|
||||
# Cloud Setup
|
||||
|
||||
Using the open-source version of Rowboat requires more technical skill to set up and navigate. For the smoothest experience, we recommend using our [hosted version](https://dev.rowboatlabs.com/)
|
||||
|
||||
---
|
||||
|
||||
# Local Setup
|
||||
|
||||
<Note>Pre-requisite: Ensure Docker is installed on your machine. You'll also need an OpenAI account and API key to use the Copilot and agents.</Note>
|
||||
|
||||
|
||||
<Steps>
|
||||
<Step title="Set your OpenAI key">
|
||||
Export your OpenAI API key in your terminal:
|
||||
|
||||
```bash
|
||||
export OPENAI_API_KEY=your-openai-api-key
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Set up Composio for tools and triggers (optional)">
|
||||
To use external tools and triggers, export your Composio API key:
|
||||
|
||||
```bash
|
||||
export COMPOSIO_API_KEY=your-composio-api-key
|
||||
export COMPOSIO_TRIGGERS_WEBHOOK_SECRET=your-webhook-secret
|
||||
```
|
||||
|
||||
<Note>For more detailed setup instructions, see the [Triggers](/docs/using-rowboat/triggers#local-setup) page.</Note>
|
||||
</Step>
|
||||
|
||||
<Step title="Clone the repository and start Rowboat Docker">
|
||||
Clone the Rowboat repository and start the app using Docker:
|
||||
|
||||
```bash
|
||||
git clone git@github.com:rowboatlabs/rowboat.git
|
||||
cd rowboat
|
||||
docker-compose up --build
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Access the app">
|
||||
Once Docker is running, open your browser and go to:
|
||||
|
||||
[http://localhost:3000](http://localhost:3000)
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
|
||||
<Info>See the [Using custom LLM providers](#using-custom-llm-providers) section below for using custom providers like OpenRouter and LiteLLM. </Info>
|
||||
|
||||
---
|
||||
|
||||
## Demo
|
||||
{/* (would be better to change this to a Getiing Started Tutorial) */}
|
||||
|
||||
#### Create a multi-agent assistant with MCP tools by chatting with Rowboat
|
||||
[](https://youtu.be/YRTCw9UHRbU)
|
||||
|
||||
---
|
||||
|
||||
## Integrate with Rowboat agents
|
||||
|
||||
There are 2 ways to integrate with the agents you create in Rowboat
|
||||
|
||||
<Columns cols={2}>
|
||||
|
||||
<Card title="Using the API" icon="code" horizontal href="/docs/api-sdk/using_the_api">
|
||||
Guide on using the HTTP API
|
||||
</Card>
|
||||
|
||||
<Card title="Using the SDK" icon="toolbox" horizontal href="/docs/api-sdk/using_the_sdk">
|
||||
Guide on using the Python SDK
|
||||
</Card>
|
||||
|
||||
</Columns>
|
||||
|
||||
---
|
||||
|
||||
## Using custom LLM providers
|
||||
By default, Rowboat uses OpenAI LLMs (gpt-4o, gpt-4.1, etc.) for both agents and copilot, when you export your OPENAI_API_KEY.
|
||||
|
||||
However, you can also configure custom LLM providers (e.g. LiteLLM, OpenRouter) to use any of the hundreds of available LLMs beyond OpenAI, such as Claude, DeepSeek, Ollama LLMs and so on.
|
||||
|
||||
Check out our page on customising
|
||||
<Card title="Customise" icon="sliders" horizontal href="/docs/using-rowboat/customise">
|
||||
Learn more about customising your Rowboat experience here
|
||||
</Card>
|
||||
23
apps/docs/docs/graph.mdx
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Graph-based Framework
|
||||
|
||||
## Overview
|
||||
|
||||
- Multi-agent systems are popularly represented as graphs, where each agent is a node in the graph.
|
||||
- In RowBoat, agents are connected to each other as Directed Acyclic Graphs (DAG).
|
||||
- The graph is also called a workflow, which defines agents, tools, and their connections.
|
||||
- Since the graph is directed, the control of conversation flows from "parent" agents to their "children" agents
|
||||
- Every agent is responsible for carrying out a specific part of the workflow, which can involve conversing with the user and / or carrying out tasks such as directing the conversation to other agents.
|
||||
- [Langgraph](https://www.langchain.com/langgraph) and [Swarm](https://github.com/openai/swarm) are examples of open-source frameworks used to define multi-agent graphs. RowBoat currently supports a Swarm implementation and will extend to Langgraph too in the future.
|
||||
|
||||
## Control Passing
|
||||
|
||||
- While defining the workflow, an agent is designated as the Start agent, to which the first turn of chat will be directed. Typically the Start agent is responsible for triaging the user's query at a high-level and passing control to relevant specific agents which can address the user's needs.
|
||||
- In any turn of chat, the agent currently in control of the chat has one of 3 options: a) respond to the user (or put out tool calls), b) transfer the chat to any of its children agents or c) transfer the chat back to its parent agent.
|
||||
- Agents use internal tool calls to transfer the chat to other agents.
|
||||
- Thus, control passing is achieved by allowing agents to decide flow of control autonomously.
|
||||
- To the user, the assistant will appear as a unified system, while agents work under the hood.
|
||||
|
||||
## Pipelines
|
||||
|
||||
- RowBoat also has the concept of pipelines - specialized agents invoked sequentially after an agent in the graph has produced a user-facing response.
|
||||
- E.g. a pipeline with a post processing agent and a guardrail agent will ensure that every response is post processed and guardrailed for appropriateness before presenting it to the user.
|
||||
156
apps/docs/docs/hosted_setup.mdx
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
# Using the Hosted App
|
||||
|
||||
- This is the developers guide to self-hosting the open-source version of RowBoat.
|
||||
- Please see our [Introduction](/) page before referring to this guide.
|
||||
- For direct installation steps, please head to the README of RowBoat's Github repo: [@rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat/). This page provides more context about the installation process and the different components involved.
|
||||
|
||||
## Overview
|
||||
|
||||
RowBoat's codebase has three main components:
|
||||
|
||||
| Component | Description |
|
||||
|--------------|---------------|
|
||||
| **Agents** | Python framework responsible for carrying out multi-agent conversations |
|
||||
| **Copilot** | Python framework powering the copilot in RowBoat Studio |
|
||||
| **RowBoat** | Frontend and backend services to power RowBoat Studio and Chat APIs |
|
||||
|
||||
These components are structured as separate services, each containerized with Docker. Running `docker-compose up --build` enables you to use the Studio in your browser, as well as stands up the APIs and SDK.
|
||||
|
||||
## Prerequisites
|
||||
All of these prerequistes have open-source or free versions.
|
||||
|
||||
| Prerequisite | Description |
|
||||
|--------------|---------------|
|
||||
| **Docker** | Bundles and builds all services |
|
||||
| **OpenAI API Key** | Agents and Copilot services are powered by OpenAI LLMs |
|
||||
| **MongoDB** | Stores workflow versions, chats and RAG embeddings |
|
||||
| **Auth0 Account** | Handles user authentication and identity management for Studio |
|
||||
|
||||
Refer to our [Github Readme for Prerequisites](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#prerequisites) to set up prerequisites.
|
||||
|
||||
## Setting up
|
||||
|
||||
Refer to our [Github Readme for Local Development](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#local-development-setup) to set up Studio, Chat API and SDK via `docker-compose`.
|
||||
|
||||
### Testing Studio
|
||||
|
||||
1. Once you are set up, you should be able to login to the Studio (default local URL: [http://localhost:3000](http://localhost:8000)) via Auth0's login options (Gmail, Github etc.)
|
||||
<br />
|
||||
|
||||
2. Once in Studio, create a new blank project or use one of the example templates:
|
||||

|
||||
<br />
|
||||
|
||||
3. Use the copilot to help you build agents:
|
||||

|
||||
<br />
|
||||
|
||||
4. Ensure that the correct agent is set as the "start agent":
|
||||

|
||||
<br />
|
||||
|
||||
5. Test out a chat in the playground to verify the agents' behavior:
|
||||

|
||||
<br />
|
||||
|
||||
### Testing the Chat API
|
||||
|
||||
You can use the API directly at [http://localhost:3000/api/v1/](http://localhost:3000/api/v1/)
|
||||
- Project ID is available in the URL of the project page
|
||||
- API Key can be generated from the project config page at `/projects/<PROJECT_ID>/config`
|
||||
|
||||
Below is an example request and response. Modify the user message in the request, based on your example project.
|
||||
|
||||
**Request:**
|
||||
|
||||
```bash
|
||||
curl --location 'http://localhost:3000/api/v1/<PROJECT_ID>/chat' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'Authorization: Bearer <API_KEY>' \
|
||||
--data '{
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "What is my pending payment amount?"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
**Response:**
|
||||
The last message in `messages` is either a user-facing response or a tool call by the assistant.
|
||||
|
||||
```json
|
||||
{
|
||||
"messages": [
|
||||
{
|
||||
"sender": "Credit Card Hub",
|
||||
"role": "assistant",
|
||||
"response_type": "internal",
|
||||
"content": null,
|
||||
"created_at": "2025-02-01T06:55:47.843909",
|
||||
"current_turn": true,
|
||||
"tool_calls": [
|
||||
{
|
||||
"function": {
|
||||
"arguments": "{\"args\":\"\",\"kwargs\":\"\"}",
|
||||
// Internal tool calls are used to transfer between agents
|
||||
"name": "transfer_to_outstanding_payment"
|
||||
},
|
||||
"id": "call_7jGpwpVvzhZFOyRgxHFkdOdU",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"tool_name": "transfer_to_outstanding_payment",
|
||||
"role": "tool",
|
||||
"content": "{\"assistant\": \"Outstanding Payment\"}",
|
||||
"tool_call_id": "call_7jGpwpVvzhZFOyRgxHFkdOdU"
|
||||
},
|
||||
{
|
||||
"sender": "Outstanding Payment",
|
||||
"role": "assistant",
|
||||
// Response is not user-facing, to enable further post processing
|
||||
"response_type": "internal",
|
||||
"content": "Sure, could you provide the last four digits of your card or your registered mobile number so I can look up your pending payment amount?",
|
||||
"created_at": "2025-02-01T06:55:49.648008",
|
||||
"current_turn": true
|
||||
},
|
||||
{
|
||||
"sender": "Outstanding Payment >> Post process",
|
||||
"role": "assistant",
|
||||
// Response is user-facing
|
||||
"response_type": "external",
|
||||
"content": "Sure, please provide the last four digits of your card or your registered mobile number so I can check your pending payment amount.",
|
||||
"created_at": "2025-02-01T06:55:49.648008",
|
||||
"current_turn": true
|
||||
}
|
||||
],
|
||||
"state": {
|
||||
// .. state data
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Testing the Python Chat SDK
|
||||
|
||||
```bash
|
||||
pip install rowboat
|
||||
```
|
||||
|
||||
Modify the user message in `messages`, based on your example project.
|
||||
|
||||
```python
|
||||
from rowboat import Client
|
||||
|
||||
client = Client(
|
||||
host="http://localhost:3000",
|
||||
project_id="<PROJECT_ID>",
|
||||
api_key="<API_KEY>" # Generate this from /projects/<PROJECT_ID>/config
|
||||
)
|
||||
|
||||
# Simple chat interaction
|
||||
messages = [{"role": "user", "content": "What is my pending payment amount?"}]
|
||||
response_messages, state = client.chat(messages=messages)
|
||||
```
|
||||
The last message in `response_messages` is either a user-facing response or a tool call by the assistant.
|
||||
BIN
apps/docs/docs/img/Intro-Video.gif
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
apps/docs/docs/img/contribution-guide-hero.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
apps/docs/docs/img/conversations-inside-run.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
apps/docs/docs/img/conversations-ui.png
Normal file
|
After Width: | Height: | Size: 919 KiB |
BIN
apps/docs/docs/img/jobs-inside-run.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
apps/docs/docs/img/jobs-ui.png
Normal file
|
After Width: | Height: | Size: 906 KiB |
BIN
apps/docs/docs/img/rag-adding-data.png
Normal file
|
After Width: | Height: | Size: 1 MiB |
BIN
apps/docs/docs/img/tools-ui.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
apps/docs/docs/img/triggers-external-ui.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
apps/docs/docs/img/triggers-onetime-ui.png
Normal file
|
After Width: | Height: | Size: 746 KiB |
BIN
apps/docs/docs/img/triggers-recurring-ui.png
Normal file
|
After Width: | Height: | Size: 738 KiB |
32
apps/docs/docs/oss_installation.mdx
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Open Source Installation
|
||||
|
||||
- This is the developers guide to self-hosting the open-source version of RowBoat. To get started with the hosted app, please see [Using the Hosted App](/hosted_setup)
|
||||
- Please see our [Introduction](/) page before referring to this guide.
|
||||
- For direct installation steps, please head to the README of RowBoat's Github repo: [@rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat/). This page provides more context about the installation process and the different components involved.
|
||||
|
||||
## Overview
|
||||
|
||||
RowBoat's codebase has three main components:
|
||||
|
||||
| Component | Description |
|
||||
|--------------|---------------|
|
||||
| **Agents** | Python framework responsible for carrying out multi-agent conversations |
|
||||
| **Copilot** | Python framework powering the copilot in RowBoat Studio |
|
||||
| **RowBoat** | Frontend and backend services to power RowBoat Studio and Chat APIs |
|
||||
|
||||
These components are structured as separate services, each containerized with Docker. Running `docker-compose up --build` enables you to use the Studio in your browser, as well as stands up the APIs and SDK.
|
||||
|
||||
## Prerequisites
|
||||
All of these prerequisites have open-source or free versions.
|
||||
|
||||
| Prerequisite | Description |
|
||||
|--------------|---------------|
|
||||
| **Docker** | Bundles and builds all services |
|
||||
| **OpenAI API Key** | Agents and Copilot services are powered by OpenAI LLMs |
|
||||
| **MongoDB** | Stores workflow versions, chats and RAG embeddings |
|
||||
|
||||
Refer to our [Github Readme for Prerequisites](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#prerequisites) to set up prerequisites.
|
||||
|
||||
## Setting up
|
||||
|
||||
Refer to our [Github Readme for Local Development](https://github.com/rowboatlabs/rowboat/?tab=readme-ov-file#local-development-setup) to set up Studio, Chat API and SDK via `docker-compose`.
|
||||
7
apps/docs/docs/playground.mdx
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
## Try an example chat in the playground
|
||||
|
||||
### Chat with the assistant
|
||||
|
||||
The playground is intended to test out the assistant as you build it. The User and Assistant messages represent the conversation that your end-user will have if your assistant is deployed in production. The playground also has debug elements which show the flow of control between different agents in your system, as well as which agent finally responded to the user.
|
||||
|
||||

|
||||
5
apps/docs/docs/prompts.mdx
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Prompts
|
||||
|
||||
- Prompts are reusable pieces of agent instructions in Studio.
|
||||
- Prompts can be defined once and reused across multiple agents.
|
||||
- Common examples of prompts are style prompts which indicate brand voice and structured output prompts which specify a format for the agent to provide its output in (e.g. ReAct)
|
||||
6
apps/docs/docs/simulate.mdx
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
## Simulate real-world user scenarios
|
||||
Create a test-bench of real-world scenarios in the simulator.
|
||||

|
||||
|
||||
Run the scenarios as simulated chats betweeen a user (role-played) and the assistant, in the playground.
|
||||

|
||||
7
apps/docs/docs/studio_overview.mdx
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Building Assistants in Studio
|
||||
This is a guide to building your first assistant on RowBoat Studio, with examples.<br />
|
||||
|
||||
Prerequisite:
|
||||
|
||||
1. **Open Source Users:** Complete the [open-source installation steps](/oss_installation/) to set up RowBoat Studio.
|
||||
2. **Hosted App Users:** Sign in to [https://app.rowboatlabs.com/](https://app.rowboatlabs.com/)
|
||||
132
apps/docs/docs/testing.mdx
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
# Testing Your Setup
|
||||
|
||||
## Testing Studio
|
||||
|
||||
1. Once you are set up, you should be able to login to the Studio via Auth0's login options (Gmail, Github etc.).
|
||||
- For the open source installation, the URL for Studio is [http://localhost:3000](http://localhost:3000)
|
||||
- To use our hosted app, the URL for Studio is [https://app.rowboatlabs.com](https://app.rowboatlabs.com/)
|
||||
<br />
|
||||
|
||||
2. Once in Studio, create a new blank project or browse through one of the example projects:
|
||||

|
||||
<br />
|
||||
|
||||
3. Use the copilot to help you build agents:
|
||||

|
||||
<br />
|
||||
|
||||
4. Ensure that the correct agent is set as the "start agent":
|
||||

|
||||
<br />
|
||||
|
||||
5. Test out a chat in the playground to verify the agents' behavior:
|
||||

|
||||
<br />
|
||||
|
||||
### Testing the Chat API
|
||||
|
||||
- For the open source installation, the `<HOST>` is [http://localhost:3000](http://localhost:3000)
|
||||
- When using the hosted app, the `<HOST>` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com)
|
||||
- `<PROJECT_ID>` is available in the URL of the project page
|
||||
- API Key can be generated from the project config page at `<HOST>/projects/<PROJECT_ID>/config`
|
||||
|
||||
Below is an example request and response. Modify the user message in the request, based on your example project.
|
||||
|
||||
**Request:**
|
||||
|
||||
```bash
|
||||
curl --location 'http://<HOST>/api/v1/<PROJECT_ID>/chat' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'Authorization: Bearer <API_KEY>' \
|
||||
--data '{
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "What is my pending payment amount?"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
**Response:**
|
||||
The last message in `messages` is either a user-facing response or a tool call by the assistant.
|
||||
|
||||
```json
|
||||
{
|
||||
"messages": [
|
||||
{
|
||||
"sender": "Credit Card Hub",
|
||||
"role": "assistant",
|
||||
"response_type": "internal",
|
||||
"content": null,
|
||||
"created_at": "2025-02-01T06:55:47.843909",
|
||||
"current_turn": true,
|
||||
"tool_calls": [
|
||||
{
|
||||
"function": {
|
||||
"arguments": "{\"args\":\"\",\"kwargs\":\"\"}",
|
||||
// Internal tool calls are used to transfer between agents
|
||||
"name": "transfer_to_outstanding_payment"
|
||||
},
|
||||
"id": "call_7jGpwpVvzhZFOyRgxHFkdOdU",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"tool_name": "transfer_to_outstanding_payment",
|
||||
"role": "tool",
|
||||
"content": "{\"assistant\": \"Outstanding Payment\"}",
|
||||
"tool_call_id": "call_7jGpwpVvzhZFOyRgxHFkdOdU"
|
||||
},
|
||||
{
|
||||
"sender": "Outstanding Payment",
|
||||
"role": "assistant",
|
||||
// Response is not user-facing, to enable further post processing
|
||||
"response_type": "internal",
|
||||
"content": "Sure, could you provide the last four digits of your card or your registered mobile number so I can look up your pending payment amount?",
|
||||
"created_at": "2025-02-01T06:55:49.648008",
|
||||
"current_turn": true
|
||||
},
|
||||
{
|
||||
"sender": "Outstanding Payment >> Post process",
|
||||
"role": "assistant",
|
||||
// Response is user-facing
|
||||
"response_type": "external",
|
||||
"content": "Sure, please provide the last four digits of your card or your registered mobile number so I can check your pending payment amount.",
|
||||
"created_at": "2025-02-01T06:55:49.648008",
|
||||
"current_turn": true
|
||||
}
|
||||
],
|
||||
"state": {
|
||||
// .. state data
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Testing the Python Chat SDK
|
||||
|
||||
- For the open source installation, the `<HOST>` is [http://localhost:3000](http://localhost:3000)
|
||||
- When using the hosted app, the `<HOST>` is [https://app.rowboatlabs.com](https://app.rowboatlabs.com)
|
||||
- `<PROJECT_ID>` is available in the URL of the project page
|
||||
- API Key can be generated from the project config page at `<HOST>/projects/<PROJECT_ID>/config`
|
||||
|
||||
```bash
|
||||
pip install rowboat
|
||||
```
|
||||
|
||||
Modify the user message in `messages`, based on your example project.
|
||||
|
||||
```python
|
||||
from rowboat import Client
|
||||
|
||||
client = Client(
|
||||
host="<HOST>",
|
||||
project_id="<PROJECT_ID>",
|
||||
api_key="<API_KEY>" # Generate this from /projects/<PROJECT_ID>/config
|
||||
)
|
||||
|
||||
# Simple chat interaction
|
||||
messages = [{"role": "user", "content": "What is my pending payment amount?"}]
|
||||
response_messages, state = client.chat(messages=messages)
|
||||
```
|
||||
The last message in `response_messages` is either a user-facing response or a tool call by the assistant.
|
||||
6
apps/docs/docs/tools.mdx
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Tools
|
||||
- Tools are used to carry out specific tasks such as fetching or updating information.
|
||||
- Tools can be defined once in RowBoat Studio and reused across different agents.
|
||||
- RowBoat uses OpenAI style tools with name, description and parameters.
|
||||
- For the purposes of quick testing in the Playground, RowBoat Studio can mock tool responses based on tool descriptions.
|
||||
- Developers can easily connect tools to APIs by configuring MCP servers or Webhook URL in Settings.
|
||||
19
apps/docs/docs/update_agents.mdx
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
## Update agent behavior
|
||||
|
||||
There are three ways for you to update the agent's behavior:
|
||||
|
||||
### 1. With help of Copilot
|
||||
|
||||
Copilot can help you update agent behavior. It is also aware of the current chat in the playground so you can make references to the current chat while instructing copilot to update agents.
|
||||
|
||||

|
||||
|
||||
### 2. Using the Generate button
|
||||
|
||||

|
||||
|
||||
### 3. By manually editing the instructions
|
||||
|
||||
You can manually edit the agent instructions anytime.
|
||||
|
||||

|
||||
141
apps/docs/docs/using-rowboat/agents.mdx
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
title: "Agents"
|
||||
description: "Learn about creating and configuring individual agents within your multi-agent system"
|
||||
icon: "robot"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Agents are the core building blocks of Rowboat's multi-agent system. Each agent carries out a specific part of a conversation, handles tasks via tools, and can collaborate with other agents to orchestrate complex workflows.
|
||||
|
||||
They are powered by LLMs and can:
|
||||
- Respond to user input
|
||||
- Trigger tools or APIs
|
||||
- Pass control to other agents using @mentions
|
||||
- Fetch or process internal data
|
||||
- Execute RAG (Retrieval-Augmented Generation) queries
|
||||
- Participate in sequential pipeline workflows
|
||||
|
||||
---
|
||||
|
||||
## Agent Types
|
||||
|
||||
Rowboat supports several types of agents, each designed for specific use cases:
|
||||
|
||||
| Name | Purpose | Characteristics |
|
||||
|------|---------|-----------------|
|
||||
| **Conversational Agents** (`conversation`) | Primary user-facing agents that interact directly with users and orchestrate workflows. | • Can respond to users and orchestrate workflows<br />• Typically serve as the start agent (Hub Agent)|
|
||||
| **Task Agents** (`internal`) | Specialized agents that perform specific tasks without direct user interaction. | • Focused on specific functions<br />• Return results to parent agents|
|
||||
| **Pipeline Agents** (`pipeline`) | Sequential workflow execution agents that process data in a chain. | • Execute in sequence within a pipeline<br />• Cannot transfer to other agents directly|
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Agent Configuration
|
||||
|
||||
Agents are configured through two main tabs in the Rowboat Studio interface:
|
||||
|
||||
### **Instructions Tab**
|
||||
|
||||
|
||||
#### Description
|
||||
A clear description of the agent's role and responsibilities
|
||||
|
||||
#### Instructions
|
||||
Instructions are the backbone of the agent's behavior. Use the Copilot's structured format for consistency:
|
||||
|
||||
**Recommended Structure:**
|
||||
```
|
||||
## 🧑💼 Role:
|
||||
[Clear description of the agent's role]
|
||||
|
||||
## ⚙️ Steps to Follow:
|
||||
1. [Step 1]
|
||||
2. [Step 2]
|
||||
3. [Step 3]
|
||||
|
||||
## 🎯 Scope:
|
||||
✅ In Scope:
|
||||
- [What the agent should handle]
|
||||
|
||||
❌ Out of Scope:
|
||||
- [What the agent should NOT handle]
|
||||
|
||||
## 📋 Guidelines:
|
||||
✔️ Dos:
|
||||
- [Positive behaviors]
|
||||
|
||||
🚫 Don'ts:
|
||||
- [Negative behaviors]
|
||||
```
|
||||
|
||||
#### Examples
|
||||
These help agents behave correctly in specific situations. Each example can include:
|
||||
- A sample user message
|
||||
- The expected agent response
|
||||
- Any tool calls (if applicable)
|
||||
|
||||
### **Configurations Tab**
|
||||
|
||||
#### Name
|
||||
Name of the agent
|
||||
|
||||
|
||||
#### Behaviour
|
||||
- **Agent Type**: Choose from `conversation`, `internal`, or `pipeline`
|
||||
- **Model**: Select the LLM model (GPT-4o, GPT-4o-mini, google/gemini-2.5-flash, etc.)
|
||||
|
||||
#### RAG
|
||||
- **Add Source**: Connect data sources to enable RAG capabilities for the agent
|
||||
|
||||
---
|
||||
|
||||
## Creating Your Initial Set of Agents
|
||||
|
||||
Let Copilot bootstrap your agent graph.
|
||||
|
||||
### Instruct Copilot
|
||||
|
||||
Start by telling Copilot what your assistant is meant to do — it'll generate an initial set of agents with best-practice instructions, role definitions, and connected agents.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/create-agents-delivery.png" className="w-full max-w-[400px] rounded-xl" alt="Creating agents with Copilot" />
|
||||
</Frame>
|
||||
|
||||
### Inspect the Output
|
||||
|
||||
After applying the suggested agents, take a close look at each one's:
|
||||
- **Instructions**: Define how the agent behaves
|
||||
- **Examples**: Guide agent responses and tool use
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/agent-instruction.png" alt="Inspect agent instructions" />
|
||||
</Frame>
|
||||
|
||||
---
|
||||
|
||||
## Updating Agent Behavior
|
||||
|
||||
There are three ways to update an agent:
|
||||
|
||||
### 1. With Copilot
|
||||
|
||||
Copilot understands the current chat context and can help rewrite or improve an agent's behavior based on how it performed.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/update-agent-copilot.png" className="w-full max-w-[400px] rounded-xl" alt="Update agent using Copilot" />
|
||||
</Frame>
|
||||
|
||||
|
||||
|
||||
### 2. Manual Edits
|
||||
|
||||
You can always manually edit the agent's instructions.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/update-agent-manual.png" alt="Manually edit agent" />
|
||||
</Frame>
|
||||
|
||||
---
|
||||
|
||||
|
||||
52
apps/docs/docs/using-rowboat/conversations.mdx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
title: "Conversations"
|
||||
description: "View and manage all conversations with your Rowboat agents"
|
||||
icon: "list-check"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The Conversations page in Rowboat shows you all the interactions between users and your agents. Here you can monitor conversations, view detailed message exchanges, and understand how your agents are performing.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/conversations-ui.png" className="w-full max-w-[800px] rounded-xl" alt="Conversations page UI showing list of conversations" />
|
||||
</Frame>
|
||||
|
||||
## What You'll See
|
||||
|
||||
The Conversations page displays a list of all conversations organized by time:
|
||||
|
||||
- **Today**: Recent conversations from today
|
||||
- **This week**: Conversations from the current week
|
||||
- **This month**: Conversations from the current month
|
||||
- **Older**: Conversations from previous months
|
||||
|
||||
Each conversation shows:
|
||||
- **Conversation ID**: Unique identifier for the conversation
|
||||
- **Created time**: When the conversation started
|
||||
- **Reason**: What triggered the conversation (chat or job)
|
||||
|
||||
## Viewing Conversation Details
|
||||
Click on any conversation to see the detailed view with all the message exchanges:
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/conversations-inside-run.png" className="w-full max-w-[800px] rounded-xl" alt="Conversation details showing expanded view of a conversation with turns and messages" />
|
||||
</Frame>
|
||||
|
||||
**Conversation Metadata**: Shows the Conversation ID, creation time, and last update time.
|
||||
|
||||
**Workflow**: Shows the workflow JSON
|
||||
|
||||
**Turns**: Each conversation is made up of turns, where:
|
||||
- **Turn #1, #2, etc.**: Numbered sequence of interactions
|
||||
- **Reason badge**: Shows why each turn happened (chat, API, job, etc.)
|
||||
- **Timestamp**: When each turn occurred
|
||||
- **Input messages**: What was sent to your agents
|
||||
- **Output messages**: What your agents responded with
|
||||
|
||||
### Turn Details
|
||||
|
||||
Each turn displays:
|
||||
- **Input**: The messages sent to your agents (user messages, system messages)
|
||||
- **Output**: The responses from your agents
|
||||
- **Error information**: Any issues that occurred during processing
|
||||
53
apps/docs/docs/using-rowboat/customise/custom-llms.mdx
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
title: "Custom LLMs"
|
||||
description: "How to use and configure custom LLMs in Rowboat."
|
||||
|
||||
---
|
||||
|
||||
<Note> This is currently only possible in the self hosted version of Rowboat</Note>
|
||||
|
||||
## Using custom LLM providers
|
||||
|
||||
By default, Rowboat uses OpenAI LLMs (gpt-4o, gpt-4.1, etc.) for both agents and copilot, when you export your OPENAI_API_KEY.
|
||||
|
||||
However, you can also configure custom LLM providers (e.g. LiteLLM, OpenRouter) to use any of the hundreds of available LLMs beyond OpenAI, such as Claude, DeepSeek, Ollama LLMs and so on.
|
||||
|
||||
<Steps>
|
||||
<Step title="Set up your LLM provider">
|
||||
Configure your environment variables to point to your preferred LLM backend. Example using LiteLLM:
|
||||
|
||||
```bash
|
||||
export PROVIDER_BASE_URL=http://host.docker.internal:4000/
|
||||
export PROVIDER_API_KEY=sk-1234
|
||||
```
|
||||
|
||||
Rowboat uses <code>gpt-4.1</code> as the default model for agents and copilot. You can override these:
|
||||
|
||||
```bash
|
||||
export PROVIDER_DEFAULT_MODEL=claude-3-7-sonnet-latest
|
||||
export PROVIDER_COPILOT_MODEL=gpt-4o
|
||||
```
|
||||
|
||||
**Notes:**
|
||||
- Copilot is optimized for <code>gpt-4o</code>/<code>gpt-4.1</code>. We strongly recommend using these models for best results.
|
||||
- You can use different models for the copilot and each agent, but all must be from the same provider (e.g., LiteLLM).
|
||||
- Rowboat is provider-agnostic — any backend implementing the OpenAI messages format should work.
|
||||
- OpenAI-specific tools (like <code>web_search</code>) will not function with non-OpenAI providers. Remove such tools to avoid errors.
|
||||
</Step>
|
||||
|
||||
<Step title="Clone the repository and start Rowboat Docker">
|
||||
Clone the Rowboat repo and spin it up locally:
|
||||
|
||||
```bash
|
||||
git clone git@github.com:rowboatlabs/rowboat.git
|
||||
cd rowboat
|
||||
docker-compose up --build
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Access the app">
|
||||
Once Docker is running, navigate to:
|
||||
|
||||
[http://localhost:3000](http://localhost:3000)
|
||||
</Step>
|
||||
</Steps>
|
||||
45
apps/docs/docs/using-rowboat/jobs.mdx
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
title: "Jobs"
|
||||
description: "Monitor and inspect all your trigger executions and job runs"
|
||||
icon: "message"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The Jobs page in Rowboat provides a comprehensive view of all your automated job executions. Here you can monitor the status of your triggers, inspect what happened during each run, and troubleshoot any issues that may have occurred.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/jobs-ui.png" className="w-full max-w-[800px] rounded-xl" alt="Jobs page showing list of all job runs with status indicators" />
|
||||
</Frame>
|
||||
|
||||
## What You'll See
|
||||
|
||||
The Jobs page displays a list of all job runs from your triggers, including:
|
||||
|
||||
- **External trigger executions** from webhook events
|
||||
- **One-time trigger runs** from scheduled jobs
|
||||
- **Recurring trigger executions** from cron-based schedules
|
||||
|
||||
Each job run displays the following key information:
|
||||
- **Job ID**: Unique identifier for the job run
|
||||
- **Status**: Indicates if the job succeeded, failed, or is in progress
|
||||
- **Reason**: The trigger or cause for the job (e.g., external trigger, scheduled, cron)
|
||||
- **Created Time**: When the job was executed
|
||||
|
||||
## Viewing Job Details
|
||||
|
||||
### Expand a Job Run
|
||||
|
||||
Click on any job run to expand it and see detailed information about what happened during execution:
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/jobs-inside-run.png" className="w-full max-w-[800px] rounded-xl" alt="Job run details showing expanded information for a specific job" />
|
||||
</Frame>
|
||||
|
||||
**Basic job details**: Job ID, Status, creation time, Updated time, Conversation ID and Turn ID. By clicking on the Conversation ID, you can view more in-depth details about the run.
|
||||
|
||||
**Job Reason**: Why the job triggered - either external trigger, scheduled, or cron.
|
||||
|
||||
**Job Input**: The input data sent to your assistant.
|
||||
|
||||
**Job Output**: The final output produced by your agents.
|
||||
68
apps/docs/docs/using-rowboat/rag.mdx
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
---
|
||||
title: "RAG (Data)"
|
||||
description: "How to use our inbuilt RAG"
|
||||
icon: "database"
|
||||
---
|
||||
|
||||
# Using RAG in Rowboat
|
||||
|
||||
Rowboat provides multiple ways to enhance your agents' context with Retrieval-Augmented Generation (RAG). This guide will help you set up and use each RAG feature.
|
||||
|
||||
<Info>RAG is called "Data" on the build view in the Rowboat UI. </Info>
|
||||
|
||||
---
|
||||
|
||||
## Types of RAG
|
||||
|
||||
| RAG Type | Description | Configuration Required |
|
||||
|----------|-------------|------------------------|
|
||||
| **Text RAG** | Process and reason over text content directly | No configuration needed |
|
||||
| **File Uploads** | Upload PDF files directly from your device | No configuration needed |
|
||||
| **URL Scraping** | Scrape content from web URLs using Firecrawl | Requires API key setup |
|
||||
|
||||
<Note> URL Scraping does not require any setup in the managed version of Rowboat. </Note>
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/rag-adding-data.png" className="w-full max-w-[800px] rounded-xl" alt="Adding data sources for RAG in Rowboat" />
|
||||
</Frame>
|
||||
|
||||
|
||||
## RAG Features
|
||||
|
||||
### 1. Text RAG
|
||||
|
||||
Process and reason over text content directly
|
||||
|
||||
|
||||
### 2. File Uploads
|
||||
|
||||
- Upload PDF files directly from your device
|
||||
- **Open Source Version**: Files are stored locally on your machine
|
||||
- **Managed Version**: Files are stored in cloud S3 storage
|
||||
- Files are parsed using OpenAI by default
|
||||
|
||||
<Note> You can also use Google's Gemini model for parsing as it is better at parsing larger files. </Note>
|
||||
|
||||
#### 2.1 Using Gemini for File Parsing
|
||||
|
||||
To use Google's Gemini model for parsing uploaded PDFs, set the following variables:
|
||||
|
||||
```bash
|
||||
# Enable Gemini for file parsing
|
||||
export USE_GEMINI_FILE_PARSING=true
|
||||
export GOOGLE_API_KEY=your_google_api_key
|
||||
```
|
||||
|
||||
|
||||
### 3. URL Scraping
|
||||
|
||||
Rowboat uses Firecrawl for URL scraping. You can have a maximum of 100 URLs.
|
||||
|
||||
**Open Source Version**: To enable URL scraping, set the following variables:
|
||||
|
||||
```bash
|
||||
export USE_RAG_SCRAPING=true
|
||||
export FIRECRAWL_API_KEY=your_firecrawl_api_key
|
||||
```
|
||||
|
||||
**Managed Version**: No configuration required - URL scraping is handled automatically.
|
||||
60
apps/docs/docs/using-rowboat/rowboat-studio.mdx
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
title: "Rowboat Studio"
|
||||
description: "Visual interface to build, test, and deploy multi-agent AI assistants using plain language"
|
||||
icon: "puzzle-piece"
|
||||
---
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
**Rowboat Studio** is your visual interface for building AI assistants — powered by agents, tools, and workflows — using plain language and minimal setup. It brings the process of creating multi-agent systems down to just a few clicks.
|
||||
|
||||
Workflows created within Rowboat are known as **assistants**, and each assistant is composed of:
|
||||
- One or more **agents**
|
||||
- Attached **tools** and **MCP servers**
|
||||
|
||||
Once built, assistants can be tested live in the **playground** and deployed in real-world products using the [API](/docs/api-sdk/using_the_api) or [SDK](/docs/api-sdk//using_the_sdk).
|
||||
|
||||
---
|
||||
|
||||
## Key Components
|
||||
|
||||
Here’s what you’ll interact with in Studio:
|
||||
|
||||
| Component | Description | Highlights |
|
||||
|------------|-------------|------------|
|
||||
| **Agent** | Core building blocks of your assistant.<br />Each agent handles a specific part of the conversation and performs tasks using tools and instructions. | • Define behavior in plain language<br />• Connect agents into a graph<br />• Attach tools and RAG sources |
|
||||
| **Playground** | Interactive testbed for conversations.<br />Lets you simulate end-user chats with your assistant and inspect agent behavior in real time. | • Real-time feedback and debugging<br />• See tool calls and agent handoffs<br />• Test individual agents or the whole system |
|
||||
| **Copilot** | Your AI assistant for building assistants.<br />Copilot creates and updates agents, tools, and instructions based on your plain-English prompts. | • Understands full system context<br />• Improves agents based on playground chat<br />• Builds workflows intelligently and fast |
|
||||
|
||||
> **Agents are the heart of every assistant.** Learn more about how they work in the Agents page.
|
||||
|
||||
<Card title="Agents" icon="robot" horizontal href="/docs/using-rowboat/agents">
|
||||
Learn about creating and configuring individual agents within your multi-agent system
|
||||
</Card>
|
||||
---
|
||||
|
||||
## Building in Rowboat
|
||||
|
||||
<Steps>
|
||||
<Step title="Describe your assistant to Copilot">
|
||||
Use plain language to tell Copilot what you want your assistant to do. Copilot will auto-generate the agents, instructions, and tools that form the base of your assistant.
|
||||
</Step>
|
||||
|
||||
<Step title="Review and apply Copilot suggestions">
|
||||
Inspect the created agents — especially their instructions and examples — and refine or approve them before moving forward.
|
||||
</Step>
|
||||
|
||||
<Step title="Connect MCP servers and tools">
|
||||
Integrate external services, tools, and backend logic into your agents using Rowboat's modular system. Tools are tied to agents and triggered through instructions.
|
||||
</Step>
|
||||
|
||||
<Step title="Test in the Playground">
|
||||
Use the chat playground to simulate real-world conversations. You’ll see which agent takes control, what tools are triggered, and how your assistant flows.
|
||||
</Step>
|
||||
|
||||
<Step title="Deploy via API or SDK">
|
||||
Assistants can be deployed into production using the **Rowboat Chat API** or the **Rowboat Chat SDK**. Both support stateless and stateful conversation flows.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
48
apps/docs/docs/using-rowboat/tools.mdx
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
title: "Tools"
|
||||
description: "Add and configure tools for your agents to interact with external services"
|
||||
icon: "wrench"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The Tools page in Rowboat lets you add and configure tools that your agents can use to interact with external services, APIs, and systems. Tools enable your agents to perform real-world actions like sending emails, managing calendars, or processing payments.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/tools-ui.png" alt="Screenshot of the Tools UI in Rowboat" className="w-full max-w-[800px] rounded-xl shadow" />
|
||||
</Frame>
|
||||
|
||||
## Tool Types
|
||||
|
||||
| Tool Type | Description | Use Case | Availability |
|
||||
|-----------|-------------|----------|--------------|
|
||||
| **Library Tools** | Pre-built integrations with popular services | Quick setup, no configuration needed | Managed and open source |
|
||||
| **MCP Tools** | Custom tools from MCP servers | Custom functionality, specialized APIs | Managed and open source |
|
||||
| **Webhook Tools** | HTTP endpoints for custom integrations | Your own systems, custom workflows | Open source only |
|
||||
|
||||
|
||||
## Library (Composio Tools)
|
||||
|
||||
- Browse a library of 500+ toolkits from popular services
|
||||
- With 3000+ tools to choose from!
|
||||
- Click on a service to see available tools and add them to your workflow
|
||||
- Users must create a Composio account and add their API key
|
||||
- Tools require authorization to work properly
|
||||
|
||||
<Note>Users can visit [Composio's toolkit documentation](https://docs.composio.dev/toolkits/introduction) for a deep dive into all the tools available.</Note>
|
||||
|
||||
## Custom MCP Servers
|
||||
|
||||
- Add your own MCP (Model Context Protocol) servers
|
||||
- Connect to custom tools and APIs you've built
|
||||
- Configure server URLs and authentication
|
||||
- Import tools from your MCP servers
|
||||
|
||||
## Webhook
|
||||
|
||||
<Note>Webhook tools are only available in the open source (local) version of Rowboat.</Note>
|
||||
|
||||
- Create custom webhook tools
|
||||
- Configure HTTP endpoints for your agents to call
|
||||
- Set up custom authentication and parameters
|
||||
- Build integrations with your own systems
|
||||
131
apps/docs/docs/using-rowboat/triggers.mdx
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
---
|
||||
title: "Triggers"
|
||||
description: "Learn about setting up automated triggers for your Rowboat agents"
|
||||
icon: "bolt"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Triggers in Rowboat are automated mechanisms that activate your agents when specific events occur or conditions are met. They form the foundation of your automated workflow system, enabling your agents to respond to external events, scheduled times, and system conditions without manual intervention.
|
||||
|
||||
|
||||
|
||||
## Trigger Types
|
||||
|
||||
Rowboat supports three main categories of triggers, each designed for different automation scenarios:
|
||||
|
||||
| Trigger Type | Purpose | Execution | Use Cases |
|
||||
|--------------|---------|-----------|-----------|
|
||||
| **External Triggers** | Connect to external services and events | Real-time via webhooks | Slack messages, GitHub events, email processing |
|
||||
| **One-Time Triggers** | Execute at specific predetermined times | Single execution at set time | Delayed responses, time-sensitive actions |
|
||||
| **Recurring Triggers** | Execute on repeating schedules | Continuous via cron expressions | Daily reports, periodic maintenance, regular syncs |
|
||||
|
||||
---
|
||||
|
||||
## External Triggers (Composio Integration)
|
||||
|
||||
External triggers are powered by **Composio** and allow users to use triggers from across 30+ services including Slack, GitHub, Gmail, Notion, Google Calendar, and more.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/triggers-external-ui.png" className="w-full max-w-[800px] rounded-xl" alt="External Triggers UI showing available toolkits and services" />
|
||||
</Frame>
|
||||
|
||||
### Creating External Triggers
|
||||
|
||||
1. **Click New External Trigger**: Start the trigger creation process
|
||||
2. **Select a Toolkit**: Browse available toolkits or search for specific services
|
||||
3. **Choose Trigger Type**: Select the specific trigger from available options, click configure
|
||||
4. **Authenticate**: Complete OAuth2 flow or enter API keys for the selected service (your preferred method)
|
||||
5. **Configure**: Set up event filters and data mapping if required
|
||||
6. **Deploy**: Activate the trigger to start listening for events
|
||||
|
||||
### Local Setup
|
||||
|
||||
If you're running the open source version of Rowboat, you'll need to set up external triggers manually. In the managed version, this is all handled automatically for you.
|
||||
|
||||
<Steps>
|
||||
<Step title="Create a Composio project">
|
||||
Sign into [Composio](https://composio.dev/) and create a new project for your Rowboat instance.
|
||||
</Step>
|
||||
|
||||
<Step title="Get your Composio API key">
|
||||
Go to your project settings and copy the project API key. Export it in your Rowboat environment:
|
||||
|
||||
```bash
|
||||
export COMPOSIO_API_KEY=your-composio-api-key
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Expose your Rowboat port">
|
||||
Use ngrok to expose your local Rowboat instance:
|
||||
|
||||
```bash
|
||||
ngrok http 3000
|
||||
```
|
||||
|
||||
Copy the generated ngrok URL (e.g., `https://a5fe8c0d45b8.ngrok-free.app`).
|
||||
</Step>
|
||||
|
||||
<Step title="Configure webhook URL">
|
||||
In Composio, go to Events & Triggers section and set the Trigger Webhook URL to:
|
||||
|
||||
```
|
||||
{ngrok_url}/api/composio/webhook
|
||||
```
|
||||
|
||||
Example: `https://a5fe8c0d45b8.ngrok-free.app/api/composio/webhook`
|
||||
</Step>
|
||||
|
||||
<Step title="Set webhook secret">
|
||||
Copy the Webhook Secret from Composio and export it in Rowboat:
|
||||
|
||||
```bash
|
||||
export COMPOSIO_TRIGGERS_WEBHOOK_SECRET=your-webhook-secret
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="Restart Rowboat">
|
||||
Restart your Rowboat instance to load the new environment variables. You're now ready to use external triggers!
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Note>Make sure your Rowboat assistant is deployed before receiving trigger calls</Note>
|
||||
|
||||
---
|
||||
|
||||
## One-Time Triggers (Scheduled Jobs)
|
||||
|
||||
One-time triggers execute your agents at a specific, predetermined time. They're useful for delayed responses, batch processing, time-sensitive actions, or coordinating with external schedules.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/triggers-onetime-ui.png" className="w-full max-w-[800px] rounded-xl" alt="One-Time Triggers UI showing scheduled job configuration" />
|
||||
</Frame>
|
||||
|
||||
### Creating One-Time Triggers
|
||||
1. Set the exact execution time (date and time)
|
||||
2. Configure the input messages for your agents
|
||||
3. Deploy to schedule the execution
|
||||
|
||||
---
|
||||
|
||||
## Recurring Triggers (Cron-based Jobs)
|
||||
|
||||
Recurring triggers execute your agents on a repeating schedule using cron expressions. They're ideal for daily reports, periodic maintenance, regular data syncs, and continuous monitoring tasks.
|
||||
|
||||
<Frame>
|
||||
<img src="/docs/img/triggers-recurring-ui.png" className="w-full max-w-[800px] rounded-xl" alt="Recurring Triggers UI showing cron-based job configuration" />
|
||||
</Frame>
|
||||
|
||||
### Creating Recurring Triggers
|
||||
1. Define the cron expression (e.g., `0 9 * * *` for daily at 9 AM)
|
||||
2. Configure the recurring message structure
|
||||
3. Enable the trigger to start the recurring schedule
|
||||
|
||||
### Common Cron Patterns
|
||||
```cron
|
||||
0 9 * * * # Daily at 9:00 AM
|
||||
0 8 * * 1 # Every Monday at 8:00 AM
|
||||
*/15 * * * * # Every 15 minutes
|
||||
0 0 1 * * # First day of month at midnight
|
||||
```
|
||||
|
||||
103
apps/docs/docs/using_rag.mdx
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# Using RAG in Rowboat
|
||||
|
||||
Rowboat provides multiple ways to enhance your agents' context with Retrieval-Augmented Generation (RAG). This guide will help you set up and use each RAG features.
|
||||
|
||||
## Quick Start
|
||||
|
||||
Text RAG and local file uploads are enabled by default - no configuration needed! Just start using them right away.
|
||||
|
||||
## RAG Features
|
||||
|
||||
### 1. Text RAG
|
||||
✅ Enabled by default:
|
||||
|
||||
- Process and reason over text content directly
|
||||
- No configuration required
|
||||
|
||||
### 2. Local File Uploads
|
||||
✅ Enabled by default:
|
||||
|
||||
- Upload PDF files directly from your device
|
||||
- Files are stored locally
|
||||
- No configuration required
|
||||
- Files are parsed using OpenAI by default
|
||||
- For larger files, we recommend using Gemini models - see section below.
|
||||
|
||||
#### 2.1 Using Gemini for File Parsing
|
||||
To use Google's Gemini model for parsing uploaded PDFs, set the following variable:
|
||||
|
||||
```bash
|
||||
# Enable Gemini for file parsing
|
||||
export USE_GEMINI_FILE_PARSING=true
|
||||
export GOOGLE_API_KEY=your_google_api_key
|
||||
```
|
||||
|
||||
### 3. URL Scraping
|
||||
Rowboat uses Firecrawl for URL scraping. To enable URL scraping, set the following variables:
|
||||
|
||||
```bash
|
||||
export USE_RAG_SCRAPING=true
|
||||
export FIRECRAWL_API_KEY=your_firecrawl_api_key
|
||||
```
|
||||
|
||||
## Advanced RAG features
|
||||
|
||||
### 1. File Uploads Backed by S3
|
||||
To enable S3 file uploads, set the following variables:
|
||||
|
||||
```bash
|
||||
# Enable S3 uploads
|
||||
export USE_RAG_S3_UPLOADS=true
|
||||
|
||||
# S3 Configuration
|
||||
export AWS_ACCESS_KEY_ID=your_access_key
|
||||
export AWS_SECRET_ACCESS_KEY=your_secret_key
|
||||
export RAG_UPLOADS_S3_BUCKET=your_bucket_name
|
||||
export RAG_UPLOADS_S3_REGION=your_region
|
||||
```
|
||||
|
||||
### 2. Changing Default Parsing Model
|
||||
|
||||
By default, uploaded PDF files are parsed using `gpt-4o`. You can customize this by setting the following:
|
||||
|
||||
```bash
|
||||
# Override the default parsing model
|
||||
export FILE_PARSING_MODEL=your-preferred-model
|
||||
```
|
||||
|
||||
You can also change the model provider like so:
|
||||
```bash
|
||||
# Optional: Override the parsing provider settings
|
||||
export FILE_PARSING_PROVIDER_BASE_URL=your-provider-base-url
|
||||
export FILE_PARSING_PROVIDER_API_KEY=your-provider-api-key
|
||||
```
|
||||
|
||||
### 3. Embedding Model Options
|
||||
|
||||
By default, Rowboat uses OpenAI's `text-embedding-3-small` model for generating embeddings. You can customize this by setting the following:
|
||||
|
||||
```bash
|
||||
# Override the default embedding model
|
||||
export EMBEDDING_MODEL=your-preferred-model
|
||||
export EMBEDDING_VECTOR_SIZE=1536
|
||||
```
|
||||
|
||||
**Important NOTE**
|
||||
|
||||
The default size for the vectors index is 1536. If you change this value, then you must delete the index and set it up again:
|
||||
```bash
|
||||
docker-compose --profile delete_qdrant --profile qdrant up --build delete_qdrant qdrant
|
||||
```
|
||||
followed by:
|
||||
```bash
|
||||
./start # this will recreate the index
|
||||
```
|
||||
|
||||
You can also change the model provider like so:
|
||||
```bash
|
||||
# Optional: Override the embedding provider settings
|
||||
export EMBEDDING_PROVIDER_BASE_URL=your-provider-base-url
|
||||
export EMBEDDING_PROVIDER_API_KEY=your-provider-api-key
|
||||
```
|
||||
|
||||
If you don't specify the provider settings, Rowboat will use OpenAI as the default provider.
|
||||
BIN
apps/docs/docs/videos/Intro-Video.gif
Normal file
|
After Width: | Height: | Size: 12 MiB |
BIN
apps/docs/docs/videos/intro.mp4
Normal file
BIN
apps/docs/public/videos/Intro-Video.gif
Normal file
|
After Width: | Height: | Size: 12 MiB |