base on Local-first, open-source tools for automating everyday work. ![ui](https://github.com/user-attachments/assets/fdf0679f-b107-48ce-b326-04db752838d9) <h5 align="center"> <p align="center" style="display: flex; justify-content: center; gap: 20px; align-items: center;"> <a href="https://trendshift.io/repositories/13609" target="blank"> <img src="https://trendshift.io/api/badge/repositories/13609" alt="rowboatlabs%2Frowboat | Trendshift" width="250" height="55"/> </a> </p> <p align="center"> <a href="https://discord.gg/rxB8pzHxaS" target="_blank" rel="noopener"> <img alt="Discord" src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white&labelColor=5865F2"> </a> <a href="https://www.rowboatx.com/" target="_blank" rel="noopener"> <img alt="Website" src="https://img.shields.io/badge/Website-10b981?labelColor=10b981&logo=window&logoColor=white"> </a> <a href="https://x.com/intent/user?screen_name=rowboatlabshq" target="_blank" rel="noopener"> <img alt="Twitter" src="https://img.shields.io/twitter/follow/rowboatlabshq?style=social"> </a> <a href="https://www.ycombinator.com" target="_blank" rel="noopener"> <img alt="Y Combinator" src="https://img.shields.io/badge/Y%20Combinator-S24-orange"> </a> </p> # RowboatX - Claude Code for Everyday Automations </h5> RowboatX is a local-first CLI for creating background AI agents with full shell access. **Example agents you can create:** - Research every person before your meetings (Exa search MCP + Google Calendar MCP) - Daily podcast summarizing your saved articles (ElevenLabs MCP + ffmpeg) - Auto-triage Slack DMs and draft responses while you sleep (Slack MCP) ## Quick start ```bash npx @rowboatlabs/rowboatx@latest ``` ## Demo [![Screenshot](https://github.com/user-attachments/assets/ab46ff8b-44bd-400e-beb0-801c6431033f)](https://www.youtube.com/watch?v=cyPBinQzicY&t) ## Examples ### Add and Manage MCP servers `$ rowboatx` - Add MCP: 'Add this MCP server config: \<config\> ' - Explore tools: 'What tools are there in \<server-name\> ' ### Create background agents `$ rowboatx` - 'Create agent to do X.' - '... Attach the correct tools from \<mcp-server-name\> to the agent' - '... Allow the agent to run shell commands including ffmpeg' ### Schedule and monitor agents `$ rowboatx` - 'Make agent \<background-agent-name\> run every day at 10 AM' - 'What agents do I have scheduled to run and at what times' - 'When was \<background-agent-name\> last run' - 'Are any agents waiting for my input or confirmation' ### Run background agents manually ``` bash rowboatx --agent=<agent-name> --input="xyz" --no-interactive=true ``` ```bash rowboatx --agent=<agent-name> --run_id=<run_id> # resume from a previous run ``` ## Models support You can configure your models using: ```bash rowboatx model-config ``` Alternatively, you can directly edit `~/.rowboat/config/models.json` ```json { "providers": { "openai": { "flavor": "openai" }, "lm-studio": { "flavor": "openai-compatible", "baseURL": "http://localhost:2000/...", "apiKey": "...", "headers": { "foo": "bar" } }, "anthropic": { "flavor": "anthropic" }, "google": { "flavor": "google" }, "ollama": { "flavor": "ollama" } }, "defaults": { "provider": "lm-studio", "model": "gpt-5" } } ``` ## Contributing We want help with: - **Agent templates** - Pre-built agents others can use (podcast generator, meeting prep, etc.) - **MCP server integrations** - Add support for new tools - **Platform support** - Windows improvements, Linux edge cases ```bash git clone [email protected]:rowboatlabs/rowboat.git cd rowboat npm install npm run build npm link rowboatx ``` Ping us on [Discord](https://discord.com/invite/rxB8pzHxaS) if you want to discuss before building. --- ## Prefer a Web UI: Rowboat Studio *Cursor for Multi-agent Workflows* โšก Build AI agents instantly with natural language | ๐Ÿ”Œ Connect tools with one-click integrations | ๐Ÿ“‚ Power with knowledge by adding documents for RAG | ๐Ÿ”„ Automate workflows by setting up triggers and actions | ๐Ÿš€ Deploy anywhere via API or SDK<br><br> ### Quick start 1. Set your OpenAI key ```bash export OPENAI_API_KEY=your-openai-api-key ``` 2. Clone the repository and start Rowboat (requires Docker) ```bash ./start.sh ``` 3. Access the app at [http://localhost:3000](http://localhost:3000). #### Create a multi-agent assistant with MCP tools by chatting with Rowboat [![meeting-prep](https://github.com/user-attachments/assets/c8a41622-8e0e-459f-becb-767503489866)](https://youtu.be/KZTP4xZM2DY) See [Docs](https://docs.rowboatlabs.com/) for more details. --- <div align="center"> Made with โค๏ธ by the Rowboat team [Discord](https://discord.gg/rxB8pzHxaS) ยท [Twitter](https://x.com/intent/user?screen_name=rowboatlabshq) </div> ", Assign "at most 3 tags" to the expected json: {"id":"13609","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"