2025-04-03 23:11:40 +05:30

2025-01-13 15:05:09 +05:30
2025-04-03 19:58:39 +05:30
< h2 align = "center" > The AI-assisted agent builder< / h2 >
< h5 align = "center" >
[Quickstart ](#quick-start ) | [Docs ](https://docs.rowboatlabs.com/ ) | [Website ](https://www.rowboatlabs.com/ ) | [Discord ](https://discord.gg/jHhUKkKHn8 )
< / h5 >
A Cursor-like, AI-assisted, no-code IDE for building production-ready multi-agents.
- ✨ Start from a simple prompt to create fully functional agents with the Copilot
- 🧪 Test them in AI-simulated scenarios
- 🌐 Connect MCP servers and tools
- 📞 Interact through the Python SDK, a web widget, or a Twilio phone number
- ♻️ Continuously refine your agents by providing feedback to the Copilot
Built on OpenAI's Agents SDK, **Rowboat is the fastest way to build multi-agents!**

# Quick start
2025-03-10 12:23:45 +05:30
2025-01-14 15:17:24 +05:30
## Prerequisites
2025-01-14 12:28:44 +05:30
2025-04-03 19:58:39 +05:30
Before running Rowboat, ensure you have:
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
1. **Docker Desktop**
2025-01-14 16:07:31 +05:30
- [Download Docker Desktop ](https://www.docker.com/products/docker-desktop )
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
2. **OpenAI API Key**
- Obtain from your OpenAI account.
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
3. **MongoDB**
2025-03-31 15:02:44 +05:30
- macOS (Homebrew)
2025-01-14 15:17:24 +05:30
```bash
brew tap mongodb/brew
brew install mongodb-community@8 .0
brew services start mongodb-community@8 .0
```
2025-04-03 19:58:39 +05:30
- Other platforms: Refer to the [MongoDB documentation ](https://www.mongodb.com/docs/manual/installation/ ) for details.
2025-01-14 15:17:24 +05:30
2025-04-03 19:58:39 +05:30
## Setup Rowboat
2025-01-14 15:17:24 +05:30
1. **Clone the Repository**
2025-01-14 12:28:44 +05:30
```bash
2025-01-14 15:17:24 +05:30
git clone git@github .com:rowboatlabs/rowboat.git
cd rowboat
2025-01-14 12:28:44 +05:30
```
2025-01-14 15:17:24 +05:30
2. **Environment Configuration**
- Copy the `.env.example` file and rename it to `.env` :
```bash
cp .env.example .env
```
2025-03-31 15:02:44 +05:30
- Open the new .env file and update the OPENAI_API_KEY:
2025-01-14 15:17:24 +05:30
```ini
# OpenAI Configuration
OPENAI_API_KEY=your-openai-api-key
```
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
3. **Start the App**
2025-01-14 12:28:44 +05:30
```bash
docker-compose up --build
```
2025-01-14 15:17:24 +05:30
4. **Access the App**
- Visit [http://localhost:3000 ](http://localhost:3000 ).
2025-01-14 12:28:44 +05:30
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
Refer to [Docs ](https://docs.rowboatlabs.com/ ) to learn how to start building agents with Rowboat.
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
# Advanced
## 1. Tool Use
You can add your tools / APIs to Rowboat through (a) connecting MCP servers, or (b) connecting a webhook.
### 1.1 MCP Servers
2025-04-03 23:35:15 +05:30
You can intergrate any MCP server in Settings -> Tools -> MCP Servers. The Tools on the servers will show up inside Rowboats Tools section.
< img src = "/assets/mcp-import.png" alt = "ui" width = "400" / >
Tip: You might want to set the MCP url as http://host.docker.internal/... to allow services to access the MCP servers on your localhost.
2025-04-03 19:58:39 +05:30
### 1.2 Webhook
You can point Rowboat to any webhook in Settings -> Tools -> Webhook.
Rowboat also includes a built-in webhook service that allows you to implement custom tool functions easily. To use this feature:
1. **Generate Signing Secret**
Generate a secret for securing webhook requests:
```bash
openssl rand -hex 32
```
2025-03-10 12:22:27 +05:30
2. **Update Environment Variables**
```ini
2025-04-03 19:58:39 +05:30
SIGNING_SECRET=< your-generated-secret >
```
3. **Implement Your Functions**
Add your custom functions to `apps/tools_webhook/function_map.py` :
```python
def get_weather(location: str, units: str = "metric"):
"""Return weather data for the given location."""
# Your implementation here
return {"temperature": 20, "conditions": "sunny"}
def check_inventory(product_id: str):
"""Check inventory levels for a product."""
# Your implementation here
return {"in_stock": 42, "warehouse": "NYC"}
# Add your functions to the map
FUNCTIONS_MAP = {
"get_weather": get_weather,
"check_inventory": check_inventory
}
```
4. **Start the Tools Webhook Service**
```bash
docker compose --profile tools_webhook up -d
```
5. **Register Tools in Rowboat**
- Navigate to your project config at `/projects/<PROJECT_ID>/config`
- Ensure that the webhook URL is set to: `http://tools_webhook:3005/tool_call`
- Tools will automatically be forwarded to your webhook implementation
The webhook service handles all the security and parameter validation, allowing you to focus on implementing your tool logic.
## 2. Retrieve Augmented Generation (RAG)
Rowboat supports adding text directly, document uploads or scraping URLs to enhance the responses with your custom knowledge base. Rowboat uses Qdrant as the vector DB.
### 2.1 Setup Qdrant
To enable RAG you need to first setup Qdrant.
1. Option1: Run Qdrant locally
- Run Qdrant docker
```bash
docker run -p 6333:6333 qdrant/qdrant
```
- Update environment variables
```ini
2025-03-10 12:22:27 +05:30
USE_RAG=true
2025-04-03 19:58:39 +05:30
QDRANT_URL=http://localhost:6333
2025-03-10 12:22:27 +05:30
QDRANT_API_KEY=< your-api-key > # Only needed for Qdrant Cloud
```
2025-04-03 19:58:39 +05:30
2. Option2: Use [Qdrant Cloud ](https://cloud.qdrant.io/ )
- Note your cluster URL and API key
- Update environment variables
```ini
USE_RAG=true
QDRANT_URL=< your-qdrant-cloud-url >
QDRANT_API_KEY=< your-api-key >
```
3. Initialize Qdrant Collections
2025-03-10 13:55:01 +05:30
```bash
docker compose --profile setup_qdrant up setup_qdrant
```
If you need to delete the collections and start fresh, you can run:
```bash
docker compose --profile delete_qdrant up delete_qdrant
```
2025-04-03 19:58:39 +05:30
### 2.2 Adding Knowledge Base for RAG
You can add a knowledge corpus to Rowboat by directly adding text information, uploading supported files or by pointing Rowboat to URLs for scraping.
2025-03-10 13:55:01 +05:30
2025-04-03 19:58:39 +05:30
#### (a) Create Text for Knowledge
2025-04-03 23:35:15 +05:30
Rowboat support directly creating a corpus of knowledge inside the platform.
2025-03-10 12:22:27 +05:30
2025-04-03 23:35:15 +05:30
- Start the Text Worker
```bash
docker compose --profile rag_text_worker up -d
```
2025-04-03 19:58:39 +05:30
#### (b) Scrape URLs for Knowledge
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
Rowboat supports scraping urls using Firecrawl. To setup scraping:
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
1. Get Firecrawl API Key
2025-03-10 12:22:27 +05:30
- Sign up at [Firecrawl ](https://firecrawl.co )
- Generate an API key
2025-04-03 19:58:39 +05:30
2. Update Environment Variables
2025-03-10 12:22:27 +05:30
```ini
USE_RAG_SCRAPING=true
FIRECRAWL_API_KEY=< your-firecrawl-api-key >
```
2025-04-03 19:58:39 +05:30
3. Start the URLs Worker
2025-03-10 12:22:27 +05:30
```bash
docker compose --profile rag_urls_worker up -d
```
2025-04-03 19:58:39 +05:30
#### (c) Upload Files for Knowledge
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
Rowboat supports file uploads (PDF, DOCX, TXT) for your knowledge base. It uses Google's Gemini LLM to convert the documents to Markdown before indexing:
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
1. Prerequisites
2025-03-10 12:22:27 +05:30
- An AWS S3 bucket for file storage
2025-03-10 16:54:53 +05:30
- Google Cloud API key with Generative Language (Gemini) API enabled (for enhanced document parsing)
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
2. Configure AWS S3
2025-03-10 12:22:27 +05:30
- Create an S3 bucket
- Add the following CORS configuration to your bucket:
```json
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE",
"GET"
],
"AllowedOrigins": [
"http://localhost:3000",
],
"ExposeHeaders": [
"ETag"
]
}
]
```
- Ensure your AWS credentials have the following IAM policy:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::< your-bucket-name > /*",
"arn:aws:s3:::< your-bucket-name > "
]
}
]
}
```
2025-04-03 19:58:39 +05:30
3. Update Environment Variables
2025-03-10 12:22:27 +05:30
```ini
USE_RAG_UPLOADS=true
AWS_ACCESS_KEY_ID=< your-aws-access-key >
AWS_SECRET_ACCESS_KEY=< your-aws-secret-key >
RAG_UPLOADS_S3_BUCKET=< your-s3-bucket-name >
RAG_UPLOADS_S3_REGION=< your-s3-region >
GOOGLE_API_KEY=< your-google-api-key >
```
2025-04-03 19:58:39 +05:30
4. Start the Files Worker
2025-03-10 12:22:27 +05:30
```bash
docker compose --profile rag_files_worker up -d
```
2025-04-03 19:58:39 +05:30
After enabling RAG and starting the required workers, you can manage your knowledge base through the Rowboat UI at `/projects/<PROJECT_ID>/sources` .
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
## 3. Chat Widget
2025-03-10 12:22:27 +05:30
2025-04-03 19:58:39 +05:30
Rowboat provides an embeddable chat widget that you can add to any website. To enable and use the chat widget:
2025-03-31 14:28:56 +05:30
1. **Generate JWT Secret**
Generate a secret for securing chat widget sessions:
```bash
openssl rand -hex 32
```
2. **Update Environment Variables**
```ini
USE_CHAT_WIDGET=true
CHAT_WIDGET_SESSION_JWT_SECRET=< your-generated-secret >
```
3. **Start the Chat Widget Service**
```bash
docker compose --profile chat_widget up -d
```
4. **Add Widget to Your Website**
You can find the chat-widget embed code under `/projects/<PROJECT_ID>/config`
2025-04-03 19:58:39 +05:30
After setup, the chat widget will appear on your website and connect to your Rowboat project.
2025-03-31 14:28:56 +05:30
2025-04-03 23:35:15 +05:30
## 4. Interact with Rowboat API
2025-03-31 14:28:56 +05:30
2025-04-03 19:58:39 +05:30
There are two ways to interact with Rowboat's API:
2025-03-31 14:28:56 +05:30
1. **Option 1: Python SDK**
For Python applications, we provide an official SDK for easier integration:
```bash
pip install rowboat
```
```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": "Tell me the weather in London"}]
response_messages, state = client.chat(messages=messages)
```
For more details, see the [Python SDK documentation ](./apps/python-sdk/README.md ).
1. **Option 2: HTTP 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`
```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": "tell me the weather in london in metric units"
}
]
}'
```
which gives:
```json
{
"messages": [
{
"role": "assistant",
"tool_calls": [
{
"function": {
"arguments": "{\"location\":\"London\",\"units\":\"metric\"}",
"name": "weather_lookup_tool"
},
"id": "call_r6XKuVxmGRogofkyFZIacdL0",
"type": "function"
}
],
"agenticSender": "Example Agent",
"agenticResponseType": "internal"
}
],
"state": {
// .. state data
}
}
```
2025-04-03 19:58:39 +05:30
### 5. Authentication
2025-01-14 12:28:44 +05:30
2025-04-03 19:58:39 +05:30
By default, Rowboat runs without authentication. To enable user authentication using Auth0:
2025-01-14 12:28:44 +05:30
2025-04-03 19:58:39 +05:30
1. **Auth0 Setup**
- **Create an Auth0 Account**: Sign up at [Auth0 ](https://auth0.com ).
- **Create a New Application**: Choose "Regular Web Application", select "Next.js" as the application type, and name it "Rowboat".
- **Configure Application**:
- **Allowed Callback URLs**: In the Auth0 Dashboard, go to your "Rowboat" application settings and set `http://localhost:3000/api/auth/callback` as an Allowed Callback URL.
- **Get Credentials**: Collect the following from your Auth0 application settings:
- **Domain**: Copy your Auth0 domain (ensure you append `https://` to the Domain that the Auth0 dashboard shows you)
- **Client ID**: Your application's unique identifier
- **Client Secret**: Your application's secret key
- **Generate secret**: Generate a session encryption secret in your terminal and note the output for later:
```bash
openssl rand -hex 32
```
2025-01-14 16:07:31 +05:30
2025-04-03 19:58:39 +05:30
2. **Update Environment Variables**
Add the following to your `.env` file:
```ini
USE_AUTH=true
AUTH0_SECRET=your-generated-secret # Generated using openssl command
AUTH0_BASE_URL=http://localhost:3000 # Your application's base URL
AUTH0_ISSUER_BASE_URL=https://example.auth0.com # Your Auth0 domain (ensure it is prefixed with https://)
AUTH0_CLIENT_ID=your-client-id
AUTH0_CLIENT_SECRET=your-client-secret
```
After enabling authentication, users will need to sign in to access the application.
2025-01-31 19:38:05 +05:30
2025-04-03 19:58:39 +05:30