mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-04-25 00:16:29 +02:00
docs: update documentation for desktop app
Squash merge of docs22 branch - updates documentation to reference desktop app, fixes contribution docs, and fixes docs JSON.
This commit is contained in:
parent
cd8e3586bc
commit
83edc74d1d
14 changed files with 127 additions and 1056 deletions
|
|
@ -18,36 +18,12 @@
|
|||
"group": "Getting Started",
|
||||
"pages": [
|
||||
"docs/getting-started/introduction",
|
||||
"docs/getting-started/quickstart",
|
||||
"docs/getting-started/license"
|
||||
"docs/getting-started/quickstart"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"]
|
||||
"pages": ["docs/development/contribution-guide", "docs/getting-started/license"]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,173 +0,0 @@
|
|||
---
|
||||
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
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
---
|
||||
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
|
||||
|
||||
The main way to interact with Rowboat is using the `Client` class, which provides a stateless chat API. You can manage conversation state using the `conversationId` returned in each response.
|
||||
|
||||
```python
|
||||
from rowboat.client import Client
|
||||
from rowboat.schema import UserMessage
|
||||
|
||||
# Initialize the client
|
||||
client = Client(
|
||||
host="<HOST>",
|
||||
projectId="<PROJECT_ID>",
|
||||
apiKey="<API_KEY>"
|
||||
)
|
||||
|
||||
# Start a new conversation
|
||||
result = client.run_turn(
|
||||
messages=[
|
||||
UserMessage(role='user', content="What is the capital of France?")
|
||||
]
|
||||
)
|
||||
print(result.turn.output[-1].content)
|
||||
# The capital of France is Paris.
|
||||
|
||||
print("Conversation ID:", result.conversationId)
|
||||
|
||||
# Continue the conversation by passing the conversationId
|
||||
result = client.run_turn(
|
||||
messages=[
|
||||
UserMessage(role='user', content="What other major cities are in that country?")
|
||||
],
|
||||
conversationId=result.conversationId
|
||||
)
|
||||
print(result.turn.output[-1].content)
|
||||
# Other major cities in France include Lyon, Marseille, Toulouse, and Nice.
|
||||
|
||||
result = client.run_turn(
|
||||
messages=[
|
||||
UserMessage(role='user', content="What's the population of the first city you mentioned?")
|
||||
],
|
||||
conversationId=result.conversationId
|
||||
)
|
||||
print(result.turn.output[-1].content)
|
||||
# Lyon has a population of approximately 513,000 in the city proper.
|
||||
```
|
||||
|
||||
### Using Tool Overrides (Mock Tools)
|
||||
|
||||
You can provide tool override instructions to test a specific configuration using the `mockTools` argument:
|
||||
|
||||
```python
|
||||
result = client.run_turn(
|
||||
messages=[
|
||||
UserMessage(role='user', content="What's the weather?")
|
||||
],
|
||||
mockTools={
|
||||
"weather_lookup": "The weather in any city is sunny and 25°C.",
|
||||
"calculator": "The result of any calculation is 42."
|
||||
}
|
||||
)
|
||||
print(result.turn.output[-1].content)
|
||||
```
|
||||
|
||||
### Message Types
|
||||
|
||||
You can use different message types as defined in `rowboat.schema`, such as `UserMessage`, `SystemMessage`, `AssistantMessage`, etc. See `schema.py` for all available message types.
|
||||
|
||||
### Error Handling
|
||||
|
||||
If the API returns a non-200 status code, a `ValueError` will be raised with the error details.
|
||||
|
||||
---
|
||||
|
||||
For more advanced usage, see the docstrings in `client.py` and the message schemas in `schema.py`.
|
||||
|
|
@ -1,59 +1,55 @@
|
|||
---
|
||||
title: "Contribution Guide"
|
||||
description: "Learn how to contribute to the Rowboat project and help improve our platform."
|
||||
description: "How to contribute to Rowboat — from bug reports to pull requests."
|
||||
icon: "github"
|
||||
---
|
||||
|
||||
# Join the Rowboat Voyage
|
||||
# Contributing to Rowboat
|
||||
|
||||
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.
|
||||
Rowboat is open-source and we welcome contributions of all kinds — bug reports, feature ideas, code, and docs improvements.
|
||||
|
||||
<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>
|
||||
**Quick links:**
|
||||
- [GitHub Repository](https://github.com/rowboatlabs/rowboat)
|
||||
- [Discord Community](https://discord.gg/wajrgmJQ6b)
|
||||
- [Open Issues](https://github.com/rowboatlabs/rowboat/issues)
|
||||
|
||||
---
|
||||
|
||||
## How You Can Contribute
|
||||
## Ways to Contribute
|
||||
|
||||
**Report bugs or suggest improvements** — If something feels off or could be better, [open an issue](https://github.com/rowboatlabs/rowboat/issues/new). Include steps to reproduce for bugs, or a clear description of the improvement you have in mind.
|
||||
|
||||
- **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.
|
||||
**Fix an existing issue** — Browse [open issues](https://github.com/rowboatlabs/rowboat/issues) and comment on one to let us know you're working on it.
|
||||
|
||||
- **Join the Community**
|
||||
Our [Discord](https://discord.gg/rxB8pzHxaS) 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!
|
||||
**Propose a new feature or integration** — Open an issue first so we can discuss the approach before you invest time building it.
|
||||
|
||||
**Improve documentation** — Typos, unclear explanations, missing examples — all fair game.
|
||||
|
||||
---
|
||||
|
||||
## 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>
|
||||
## Contribution Workflow
|
||||
|
||||
1. **Fork** [rowboatlabs/rowboat](https://github.com/rowboatlabs/rowboat) and clone it locally.
|
||||
2. **Create a branch** with a descriptive name (`fix-tool-crash`, `feature-mcp-discovery`). Don't commit directly to `main`.
|
||||
3. **Make your changes.** Keep PRs focused on a single issue or feature.
|
||||
4. **Test your changes** locally before submitting.
|
||||
5. **Open a pull request** with a clear description of what you changed and why. Screenshots or short demos are appreciated for UI changes.
|
||||
6. **Respond to feedback** — maintainers may request changes. This is normal and collaborative.
|
||||
7. **Merge!** Once approved, we'll merge your PR.
|
||||
|
||||
<Tip>For small fixes like typos or formatting, try bundling related changes into a single PR rather than submitting them individually.</Tip>
|
||||
|
||||
---
|
||||
|
||||
## Come Build With Us
|
||||
## Guidelines
|
||||
|
||||
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.
|
||||
- **One PR, one concern.** Don't mix unrelated changes in the same pull request.
|
||||
- **Write clear commit messages.** A reviewer should understand what changed from the message alone.
|
||||
- **Follow existing code style.** Match the patterns you see in the codebase.
|
||||
- **Be patient and respectful.** We review PRs as quickly as we can. A polite ping on Discord is always welcome if things go quiet.
|
||||
|
||||
Let’s build the future of AI workflows — together. 🫶
|
||||
---
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you're stuck or unsure about anything, drop a message in our [Discord](https://discord.gg/wajrgmJQ6b). We're happy to help you get unblocked.
|
||||
|
|
@ -1,60 +1,96 @@
|
|||
---
|
||||
title: "Introduction"
|
||||
description: "Welcome to the official Rowboat documentation! Rowboat is a low-code AI IDE to build tool connected multi-agent assistants. Rowboat copilot builds the agents for you based on your requirements with the option do everything manually as well."
|
||||
description: "Welcome to the official Rowboat documentation! Rowboat is an open-source AI coworker that turns work into a knowledge graph and acts on it."
|
||||
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 tool to the agents.
|
||||
|
||||
For example, you can build a *meeting prep assistant* that helps you prepare for upcoming meetings. One agent can access your Google Calendar to see your scheduled meetings, another agent can research the meeting attendees (such as finding their LinkedIn profiles or recent news), and a third agent can compile this research and send it to your email before the meeting. This way, you get automated, personalized meeting prep without manual effort.
|
||||
[](https://www.youtube.com/watch?v=5AWoGo-L16I)
|
||||
|
||||
---
|
||||
|
||||
## How RowBoat works
|
||||
## What is Rowboat?
|
||||
Rowboat is a local-first AI coworker, with work memory. Rowboat connects to your email and meeting notes, builds a long-lived knowledge graph, and uses that context to help you get work done - privately, on your machine.
|
||||
|
||||
### 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 Python SDK which wraps the HTTP API under the hood. It provides a clean interface for managing conversations using conversation IDs for state management.
|
||||
You can do things like:
|
||||
- `Build me a deck about our next quarter roadmap` → generates a PDF using context from your knowledge graph
|
||||
- `Prep me for my meeting with Alex` → pulls past decisions, open questions, and relevant threads into a crisp brief (or a voice note)
|
||||
- Visualize, edit, and update your knowledge graph anytime (it’s just Markdown)
|
||||
- Record voice memos that automatically capture and update key takeaways in the graph
|
||||
|
||||
---
|
||||
|
||||
## Why RowBoat?
|
||||
Rowboat is the fastest way to build and deploy multi-agent assistants.
|
||||
## What it does
|
||||
|
||||
<Steps>
|
||||
<Step title="Build complex assistants">
|
||||
Use plain language and a powerful visual interface to design and orchestrate multi-agent assistants with ease.
|
||||
</Step>
|
||||
Rowboat is a **local-first AI coworker** that can:
|
||||
- **Remember** the important context you don’t want to re-explain (people, projects, decisions, commitments)
|
||||
- **Understand** what’s relevant right now (before a meeting, while replying to an email, when writing a doc)
|
||||
- **Help you act** by drafting, summarizing, planning, and producing real artifacts (briefs, emails, docs, PDF slides)
|
||||
|
||||
<Step title="Integrate tools and MCP servers">
|
||||
Add tools and connect to MCP servers in just minutes — no complex setup required.
|
||||
</Step>
|
||||
Under the hood, Rowboat maintains an **Obsidian-compatible vault** of plain Markdown notes with backlinks — a transparent “working memory” you can inspect and edit.
|
||||
|
||||
<Step title="Expedite your AI roadmap">
|
||||
Accelerate development with battle-tested tooling tailored for building production-ready, multi-agent AI systems.
|
||||
</Step>
|
||||
</Steps>
|
||||
## Integrations
|
||||
|
||||
Rowboat builds memory from the work you already do, including:
|
||||
- **Gmail** (email)
|
||||
- **Granola** (meeting notes)
|
||||
- **Fireflies** (meeting notes)
|
||||
|
||||
## How it’s different
|
||||
|
||||
Most AI tools reconstruct context on demand by searching transcripts or documents.
|
||||
|
||||
Rowboat maintains **long-lived knowledge** instead:
|
||||
- context accumulates over time
|
||||
- relationships are explicit and inspectable
|
||||
- notes are editable by you, not hidden inside a model
|
||||
- everything lives on your machine as plain Markdown
|
||||
|
||||
The result is memory that compounds, rather than retrieval that starts cold every time.
|
||||
|
||||
## What you can do with it
|
||||
|
||||
- **Meeting prep** from prior decisions, threads, and open questions
|
||||
- **Email drafting** grounded in history and commitments
|
||||
- **Docs & decks** generated from your ongoing context (including PDF slides)
|
||||
- **Follow-ups**: capture decisions, action items, and owners so nothing gets dropped
|
||||
- **On-your-machine help**: create files, summarize into notes, and run workflows using local tools (with explicit, reviewable actions)
|
||||
|
||||
## Background agents
|
||||
|
||||
Rowboat can spin up **background agents** to do repeatable work automatically - so routine tasks happen without you having to ask every time.
|
||||
|
||||
Examples:
|
||||
- Draft email replies in the background (grounded in your past context and commitments)
|
||||
- Generate a daily voice note each morning (agenda, priorities, upcoming meetings)
|
||||
- Create recurring project updates from the latest emails/notes
|
||||
- Keep your knowledge graph up to date as new information comes in
|
||||
|
||||
You control what runs, when it runs, and what gets written back into your local Markdown vault.
|
||||
|
||||
## Bring your own model
|
||||
|
||||
Rowboat works with the model setup you prefer:
|
||||
- **Local models** via Ollama or LM Studio
|
||||
- **Hosted models** (bring your own API key/provider)
|
||||
- Swap models anytime — your data stays in your local Markdown vault
|
||||
|
||||
## Extend Rowboat with tools (MCP)
|
||||
|
||||
Rowboat can connect to external tools and services via **Model Context Protocol (MCP)**.
|
||||
That means you can plug in (for example) search, databases, CRMs, support tools, and automations - or your own internal tools.
|
||||
|
||||
Examples: Exa (web search), Twitter/X, ElevenLabs (voice), Slack, Linear/Jira, GitHub, and more.
|
||||
|
||||
## Local-first by design
|
||||
|
||||
- All data is stored locally as plain Markdown
|
||||
- No proprietary formats or hosted lock-in
|
||||
- You can inspect, edit, back up, or delete everything at any time
|
||||
|
||||
---
|
||||
<div align="center">
|
||||
|
||||
[Discord](https://discord.gg/wajrgmJQ6b) · [Twitter](https://x.com/intent/user?screen_name=rowboatlabshq)
|
||||
</div>
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
|
@ -72,7 +108,7 @@ Need help using Rowboat? Join our community!
|
|||
<Card
|
||||
title="Discord"
|
||||
icon="discord"
|
||||
horizontal href="https://discord.gg/rxB8pzHxaS"
|
||||
horizontal href="https://discord.gg/wajrgmJQ6b"
|
||||
>
|
||||
Join our growing discord community and interact with hundreds of developer using Rowboat!
|
||||
</Card>
|
||||
|
|
|
|||
|
|
@ -3,92 +3,25 @@ title: "Quickstart"
|
|||
description: "guide to getting started with rowboat"
|
||||
icon: "rocket"
|
||||
---
|
||||
---
|
||||
# Cloud Setup
|
||||
**Download latest for Mac/Windows/Linux:** [Download](https://www.rowboatlabs.com/downloads)
|
||||
|
||||
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/)
|
||||
**All release files:** https://github.com/rowboatlabs/rowboat/releases/latest
|
||||
|
||||
---
|
||||
## Google setup (optional)
|
||||
To connect Gmail, Calendar, and Drive, follow [Google setup](https://github.com/rowboatlabs/rowboat/blob/main/google-setup.md).
|
||||
|
||||
# Local Setup
|
||||
## Voice notes (optional)
|
||||
To enable voice notes, add a Deepgram API key in `~/.rowboat/config/deepgram.json`:
|
||||
|
||||
<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>
|
||||
```json
|
||||
{
|
||||
"apiKey": "<key>"
|
||||
}
|
||||
```
|
||||
|
||||
## Web search (optional)
|
||||
To use Brave web search, add the Brave API key in `~/.rowboat/config/brave-search.json`.
|
||||
|
||||
<Steps>
|
||||
<Step title="Set your OpenAI key">
|
||||
Export your OpenAI API key in your terminal:
|
||||
To use Exa research search, add the Exa API key in `~/.rowboat/config/exa-search.json`.
|
||||
|
||||
```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
|
||||
./start.sh
|
||||
```
|
||||
</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>
|
||||
(Use the same JSON format as above.)
|
||||
|
|
|
|||
|
|
@ -1,141 +0,0 @@
|
|||
---
|
||||
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-4.1, GPT-4o, 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>
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
---
|
||||
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
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
---
|
||||
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-4.1
|
||||
```
|
||||
|
||||
**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>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
---
|
||||
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.
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
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.
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
---
|
||||
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>
|
||||
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
---
|
||||
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](https://composio.dev/) account and add their API key
|
||||
- Tools require authorization to work properly
|
||||
|
||||
### Setting up Composio API Key
|
||||
|
||||
To use Composio tools, get a Composio key and export it as an environment variable:
|
||||
|
||||
```bash
|
||||
export COMPOSIO_API_KEY=your_api_key_here
|
||||
```
|
||||
|
||||
<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
|
||||
|
|
@ -1,131 +0,0 @@
|
|||
---
|
||||
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
|
||||
```
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue