2025-01-14 15:17:24 +05:30
# RowBoat Monorepo
2025-01-13 15:05:09 +05:30
2025-01-14 15:17:24 +05:30
This guide will help you set up and run the RowBoat applications locally using Docker.
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
## Prerequisites
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +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**
- **Option 1**: Use an existing MongoDB deployment with your connection string.
- **Option 2**: Install MongoDB locally:
```bash
brew tap mongodb/brew
brew install mongodb-community@8 .0
brew services start mongodb-community@8 .0
```
4. **Auth0 Account and Application Setup**
- **Create an Auth0 Account**: Sign up at [Auth0 ](https://auth0.com ).
2025-01-14 15:35:53 +05:30
- **Create a New Application**: Choose "Regular Web Application", select "Next.js" as the application type, and name it "RowBoat".
2025-01-14 15:17:24 +05:30
- **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.
2025-01-14 16:07:31 +05:30
- **Get Credentials**: Collect the following from your Auth0 application settings:
2025-01-14 16:39:56 +05:30
- **Domain**: Copy your Auth0 domain (ensure you append `https://` to the Domain that the Auth0 dashboard shows you)
2025-01-14 16:07:31 +05:30
- **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:
2025-01-14 15:17:24 +05:30
```bash
openssl rand -hex 32
```
## Local Development Setup
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
git checkout dev
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
```
- Update your `.env` file with the following configurations:
```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
# Auth0 Configuration
AUTH0_SECRET=your-generated-secret # Generated using openssl command
AUTH0_BASE_URL=http://localhost:3000 # Your application's base URL
2025-01-14 16:07:31 +05:30
AUTH0_ISSUER_BASE_URL=https://example.auth0.com # Your Auth0 domain (ensure it is prefixed with https://)
2025-01-14 15:17:24 +05:30
AUTH0_CLIENT_ID=your-client-id
AUTH0_CLIENT_SECRET=your-client-secret
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
# MongoDB Configuration (choose one based on your setup)
# For local MongoDB
MONGODB_CONNECTION_STRING=mongodb://host.docker.internal:27017/rowboat
# or, for remote MongoDB
MONGODB_CONNECTION_STRING=mongodb+srv://< username > :< password > @< cluster > .mongodb.net/rowboat
```
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-01-15 20:29:50 +05:30
5. **Interact with RowBoat**
2025-01-14 17:47:45 +05:30
2025-01-15 20:29:50 +05:30
There are two ways to interact with RowBoat:
### 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 > ",
2025-01-27 10:59:07 +05:30
api_key="< API_KEY > " # Generate this from /projects/< PROJECT_ID > /config
2025-01-15 20:29:50 +05:30
)
# 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 ).
### Option 2: HTTP API
You can use the API directly at [http://localhost:3000/api/v1/ ](http://localhost:3000/api/v1/ )
2025-01-14 17:47:45 +05:30
- Project ID is available in the URL of the project page
2025-01-27 10:59:07 +05:30
- API Key can be generated from the project config page at `/projects/<PROJECT_ID>/config`
2025-01-14 17:47:45 +05:30
```bash
curl --location 'http://localhost:3000/api/v1/< PROJECT_ID > /chat' \
--header 'Content-Type: application/json' \
2025-01-27 10:59:07 +05:30
--header 'Authorization: Bearer < API_KEY > ' \
2025-01-14 17:47:45 +05:30
--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-01-28 17:17:58 +05:30
6. **Documentation**
The documentation site is available at [http://localhost:8000 ](http://localhost:8000 )
2025-01-14 15:17:24 +05:30
## Troubleshooting
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
1. **MongoDB Connection Issues**
- Ensure local MongoDB service is running: `brew services list`
- Verify connection string and network connectivity.
2025-01-14 12:28:44 +05:30
2025-01-14 15:17:24 +05:30
2. **Container Start-up Issues**
- Remove all containers: `docker-compose down`
- Rebuild: `docker-compose up --build`
2025-01-14 16:07:31 +05:30
3. **Sign-in Button Not Appearing**
- If the sign-in button does not appear in the UI, ensure the Auth0 domain in your `.env` file is prefixed with `https://` .