SDK 默认读取 IDE 写入的 .env 连接信息,在其他目录运行会回退到 RocketRide Cloud;RAG 示例需自备 LLM key 和向量数据库(如本地 Qdrant);本地模式需先在 IDE 扩展中部署服务器。
rocketride-server
rocketride-orgMIT活跃维护高性能 AI 流水线引擎,C++ 内核搭配 50+ 可扩展 Python 节点,支持多模型提供商、向量数据库和 Agent 编排,可在 IDE 中构建调试 LLM 工作流。
High-performance AI pipeline engine with a C++ core and 50+ Python-extensible nodes. Build, debug, and scale LLM workflows with 13+ model providers, 8+ vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.
pip install rocketrideREADME 未说明具体显存或 GPU 型号要求;支持本地运行(扩展内拉取服务器)或 Docker/自建部署。
开源 AI 开发环境,用可视化画布在 IDE 里编排、调试并部署 AI 数据管道
高性能 AI 流水线引擎,C++ 内核搭配 50+ 可扩展 Python 节点,支持多模型提供商、向量数据库和 Agent 编排,可在 IDE 中构建调试 LLM 工作流。
核心能力
- 在 IDE 画布上拖拽连接节点构建管道
- 管道保存为可版本控制的 .pipe JSON 文件
- 多线程 C++ 运行时执行 AI/ML 数据管道
- 提供 Python 与 TypeScript SDK 嵌入应用
- 内置 token 用量、延迟等实时可观测性
容易踩的坑
- server-v3.6.0-prereleaseRocketRide Server v3.6.0 (prerelease)pre-release2026-11-09 · 2026-11-09 16:49 UTC
查看更新说明
Automated prerelease from
develop— Server v3.6.0.Added
- mcp: every HTTP MCP tool now declares explicit
readOnlyHint,destructiveHintandopenWorldHintannotations, the server sendsinstructions, the four core workflow tools ask Claude Code to load them upfront (anthropic/alwaysLoad), and the engine serves OpenAI's plugin domain-verification token at/.well-known/openai-apps-challengefromMCP_OPENAI_APPS_CHALLENGE_TOKEN(404 while unset) (#2997) - server: a seeded app version records the sha256 of the bundle it was copied from (
metadata.build.bundleSha256), andbundle_changed()tells an orchestrator whether the pod's build differs from the app's newest seed, so a deploy can re-seed only the apps whose build changed. An app whose public version is a direct deploy, not a seed, counts as unchanged, so a release never replaces it - tool_github: four reads for apps that work on repositories with credentials held in the node configuration:
repo_contributors,repo_languages,label_listanduser_get(the PAT user, or the App itself under App auth). They return{status, data, rate_limit, next_page}: rate-limit counters from the response headers, the next page number from theLinkheader, and a non-2xx answer as a result withstatus,messageanddocumentation_urlrather than an exception; tokens, private keys and bearer headers never appear in a result or an error message. Existing tools keep their return shapes (#2592) - tool_github:
repo_treelists a repository recursively at a branch, tag or SHA (defaultHEAD, the default branch), sorted by path, with GitHub'struncatedflag and acompleteflag of its own, in the result envelope of the repository reads. Withwalk: truea listing GitHub truncated is completed from subtree reads pinned to the SHA the ref resolved to, so a branch that moves during the walk cannot mix revisions: each subtree is read recursively and only one GitHub truncates again is split into its direct children, so a repository the size of Linux takes tens of requests.max_requests(default 1000) andmax_entries(default 200000) bound the walk; the entry cap is what stops a git bomb, where a few trees referenced from thousands of paths multiply entries while requests stay few. A partial result is alwayscomplete: falsewith amessagethat names the bound, or the subtree whose read failed and its status, and still holds the entries GitHub's truncated listing had named (#2464, #2592) - tool_github:
graphqlruns a GraphQL document (POST /graphql, optionalvariablesandoperationName) and returns GitHub'sdataanderrorsin the same envelope; GraphQL errors are results, not exceptions. WithreadOnlyon, a document containing a mutation operation is refused before anything is sent; with it off, mutations run only whengraphqlAllowMutations(off by default) is on, so a pipeline that adds nothing keeps the reach it has today; andgraphqlMaxResponseBytes(4 MiB) caps the response body. Atoolslist registers only the named tools, so an agent's schema holds just those (#648), and an unknown name stops the pipeline at start.graphqland the repository reads wait out primary and secondary rate limits, GraphQL's HTTP 200 rate limits included and a minute when GitHub names no wait, withinrateLimitBudgetSeconds(60, shared by every request of one call, arepo_treewalk included) andrateLimitMaxRetries(3 retries of each request), sending a freshly minted credential on each retry, then return the rate-limit error withretry_after; an answer GitHub partly ran is never retried (#2592) - tool_github: credentials stay on the server for apps that work across repositories. Under GitHub App auth
installationIdis optional: without it the node finds the installation per repository (GET /repos/{owner}/{repo}/installationwith the App JWT), caches it, and caches and refreshes a token per installation, so one pipeli
- mcp: every HTTP MCP tool now declares explicit
- vscode-v1.6.0-prereleaseRocketRide VS Code Extension v1.6.0 (prerelease)pre-release最新正式版2026-11-09 · 2026-11-09 16:49 UTC
Automated prerelease from
develop— VS Code Extension v1.6.0.Added
- mcp: every HTTP MCP tool now declares explicit
readOnlyHint,destructiveHintandopenWorldHintannotations, the server sendsinstructions, the four core workflow tools ask Claude Code to load them upfront (anthropic/alwaysLoad), and the engine serves OpenAI's plugin domain-verification token at/.well-known/openai-apps-challengefromMCP_OPENAI_APPS_CHALLENGE_TOKEN(404 while unset) (#2997) - server: a seeded app version records the sha256 of the bundle it was copied from (
metadata.build.bundleSha256), andbundle_changed()tells an orchestrator whether the pod's build differs from the app's newest seed, so a deploy can re-seed only the apps whose build changed. An app whose public version is a direct deploy, not a seed, counts as unchanged, so a release never replaces it - tool_github: four reads for apps that work on repositories with credentials held in the node configuration:
repo_contributors,repo_languages,label_listanduser_get(the PAT user, or the App itself under App auth). They return{status, data, rate_limit, next_page}: rate-limit counters from the response headers, the next page number from theLinkheader, and a non-2xx answer as a result withstatus,messageanddocumentation_urlrather than an exception; tokens, private keys and bearer headers never appear in a result or an error message. Existing tools keep their return shapes (#2592) - tool_github:
repo_treelists a repository recursively at a branch, tag or SHA (defaultHEAD, the default branch), sorted by path, with GitHub'struncatedflag and acompleteflag of its own, in the result envelope of the repository reads. Withwalk: truea listing GitHub truncated is completed from subtree reads pinned to the SHA the ref resolved to, so a branch that moves during the walk cannot mix revisions: each subtree is read recursively and only one GitHub truncates again is split into its direct children, so a repository the size of Linux takes tens of requests.max_requests(default 1000) andmax_entries(default 200000) bound the walk; the entry cap is what stops a git bomb, where a few trees referenced from thousands of paths multiply entries while requests stay few. A partial result is alwayscomplete: falsewith amessagethat names the bound, or the subtree whose read failed and its status, and still holds the entries GitHub's truncated listing had named (#2464, #2592) - tool_github:
graphqlruns a GraphQL document (POST /graphql, optionalvariablesandoperationName) and returns GitHub'sdataanderrorsin the same envelope; GraphQL errors are results, not exceptions. WithreadOnlyon, a document containing a mutation operation is refused before anything is sent; with it off, mutations run only whengraphqlAllowMutations(off by default) is on, so a pipeline that adds nothing keeps the reach it has today; andgraphqlMaxResponseBytes(4 MiB) caps the response body. Atoolslist registers only the named tools, so an agent's schema holds just those (#648), and an unknown name stops the pipeline at start.graphqland the repository reads wait out primary and secondary rate limits, GraphQL's HTTP 200 rate limits included and a minute when GitHub names no wait, withinrateLimitBudgetSeconds(60, shared by every request of one call, arepo_treewalk included) andrateLimitMaxRetries(3 retries of each request), sending a freshly minted credential on each retry, then return the rate-limit error withretry_after; an answer GitHub partly ran is never retried (#2592) - tool_github: credentials stay on the server for apps that work across repositories. Under GitHub App auth
installationIdis optional: without it the node finds the installation per repository (GET /repos/{owner}/{repo}/installationwith the App JWT), caches it, and caches and refreshes a token per installation, so
- mcp: every HTTP MCP tool now declares explicit
- client-python-v1.6.0-prereleaseRocketRide Python Client v1.6.0 (prerelease)pre-release2026-11-09 · 2026-11-09 16:49 UTC
查看更新说明
Automated prerelease from
develop— Python Client v1.6.0.Added
- mcp: every HTTP MCP tool now declares explicit
readOnlyHint,destructiveHintandopenWorldHintannotations, the server sendsinstructions, the four core workflow tools ask Claude Code to load them upfront (anthropic/alwaysLoad), and the engine serves OpenAI's plugin domain-verification token at/.well-known/openai-apps-challengefromMCP_OPENAI_APPS_CHALLENGE_TOKEN(404 while unset) (#2997) - server: a seeded app version records the sha256 of the bundle it was copied from (
metadata.build.bundleSha256), andbundle_changed()tells an orchestrator whether the pod's build differs from the app's newest seed, so a deploy can re-seed only the apps whose build changed. An app whose public version is a direct deploy, not a seed, counts as unchanged, so a release never replaces it - tool_github: four reads for apps that work on repositories with credentials held in the node configuration:
repo_contributors,repo_languages,label_listanduser_get(the PAT user, or the App itself under App auth). They return{status, data, rate_limit, next_page}: rate-limit counters from the response headers, the next page number from theLinkheader, and a non-2xx answer as a result withstatus,messageanddocumentation_urlrather than an exception; tokens, private keys and bearer headers never appear in a result or an error message. Existing tools keep their return shapes (#2592) - tool_github:
repo_treelists a repository recursively at a branch, tag or SHA (defaultHEAD, the default branch), sorted by path, with GitHub'struncatedflag and acompleteflag of its own, in the result envelope of the repository reads. Withwalk: truea listing GitHub truncated is completed from subtree reads pinned to the SHA the ref resolved to, so a branch that moves during the walk cannot mix revisions: each subtree is read recursively and only one GitHub truncates again is split into its direct children, so a repository the size of Linux takes tens of requests.max_requests(default 1000) andmax_entries(default 200000) bound the walk; the entry cap is what stops a git bomb, where a few trees referenced from thousands of paths multiply entries while requests stay few. A partial result is alwayscomplete: falsewith amessagethat names the bound, or the subtree whose read failed and its status, and still holds the entries GitHub's truncated listing had named (#2464, #2592) - tool_github:
graphqlruns a GraphQL document (POST /graphql, optionalvariablesandoperationName) and returns GitHub'sdataanderrorsin the same envelope; GraphQL errors are results, not exceptions. WithreadOnlyon, a document containing a mutation operation is refused before anything is sent; with it off, mutations run only whengraphqlAllowMutations(off by default) is on, so a pipeline that adds nothing keeps the reach it has today; andgraphqlMaxResponseBytes(4 MiB) caps the response body. Atoolslist registers only the named tools, so an agent's schema holds just those (#648), and an unknown name stops the pipeline at start.graphqland the repository reads wait out primary and secondary rate limits, GraphQL's HTTP 200 rate limits included and a minute when GitHub names no wait, withinrateLimitBudgetSeconds(60, shared by every request of one call, arepo_treewalk included) andrateLimitMaxRetries(3 retries of each request), sending a freshly minted credential on each retry, then return the rate-limit error withretry_after; an answer GitHub partly ran is never retried (#2592) - tool_github: credentials stay on the server for apps that work across repositories. Under GitHub App auth
installationIdis optional: without it the node finds the installation per repository (GET /repos/{owner}/{repo}/installationwith the App JWT), caches it, and caches and refreshes a token per installation, so one
- mcp: every HTTP MCP tool now declares explicit
- client-mcp-v1.5.0-prereleaseRocketRide MCP Client v1.5.0 (prerelease)pre-release2026-11-09 · 2026-11-09 16:49 UTC
查看更新说明
Automated prerelease from
develop— MCP Client v1.5.0.Added
- mcp: every HTTP MCP tool now declares explicit
readOnlyHint,destructiveHintandopenWorldHintannotations, the server sendsinstructions, the four core workflow tools ask Claude Code to load them upfront (anthropic/alwaysLoad), and the engine serves OpenAI's plugin domain-verification token at/.well-known/openai-apps-challengefromMCP_OPENAI_APPS_CHALLENGE_TOKEN(404 while unset) (#2997) - server: a seeded app version records the sha256 of the bundle it was copied from (
metadata.build.bundleSha256), andbundle_changed()tells an orchestrator whether the pod's build differs from the app's newest seed, so a deploy can re-seed only the apps whose build changed. An app whose public version is a direct deploy, not a seed, counts as unchanged, so a release never replaces it - tool_github: four reads for apps that work on repositories with credentials held in the node configuration:
repo_contributors,repo_languages,label_listanduser_get(the PAT user, or the App itself under App auth). They return{status, data, rate_limit, next_page}: rate-limit counters from the response headers, the next page number from theLinkheader, and a non-2xx answer as a result withstatus,messageanddocumentation_urlrather than an exception; tokens, private keys and bearer headers never appear in a result or an error message. Existing tools keep their return shapes (#2592) - tool_github:
repo_treelists a repository recursively at a branch, tag or SHA (defaultHEAD, the default branch), sorted by path, with GitHub'struncatedflag and acompleteflag of its own, in the result envelope of the repository reads. Withwalk: truea listing GitHub truncated is completed from subtree reads pinned to the SHA the ref resolved to, so a branch that moves during the walk cannot mix revisions: each subtree is read recursively and only one GitHub truncates again is split into its direct children, so a repository the size of Linux takes tens of requests.max_requests(default 1000) andmax_entries(default 200000) bound the walk; the entry cap is what stops a git bomb, where a few trees referenced from thousands of paths multiply entries while requests stay few. A partial result is alwayscomplete: falsewith amessagethat names the bound, or the subtree whose read failed and its status, and still holds the entries GitHub's truncated listing had named (#2464, #2592) - tool_github:
graphqlruns a GraphQL document (POST /graphql, optionalvariablesandoperationName) and returns GitHub'sdataanderrorsin the same envelope; GraphQL errors are results, not exceptions. WithreadOnlyon, a document containing a mutation operation is refused before anything is sent; with it off, mutations run only whengraphqlAllowMutations(off by default) is on, so a pipeline that adds nothing keeps the reach it has today; andgraphqlMaxResponseBytes(4 MiB) caps the response body. Atoolslist registers only the named tools, so an agent's schema holds just those (#648), and an unknown name stops the pipeline at start.graphqland the repository reads wait out primary and secondary rate limits, GraphQL's HTTP 200 rate limits included and a minute when GitHub names no wait, withinrateLimitBudgetSeconds(60, shared by every request of one call, arepo_treewalk included) andrateLimitMaxRetries(3 retries of each request), sending a freshly minted credential on each retry, then return the rate-limit error withretry_after; an answer GitHub partly ran is never retried (#2592) - tool_github: credentials stay on the server for apps that work across repositories. Under GitHub App auth
installationIdis optional: without it the node finds the installation per repository (GET /repos/{owner}/{repo}/installationwith the App JWT), caches it, and caches and refreshes a token per installation, so one pi
- mcp: every HTTP MCP tool now declares explicit
- client-typescript-v1.6.0-prereleaseRocketRide TypeScript Client v1.6.0 (prerelease)pre-release2026-11-09 · 2026-11-09 16:49 UTC
查看更新说明
Automated prerelease from
develop— TypeScript Client v1.6.0.Added
- mcp: every HTTP MCP tool now declares explicit
readOnlyHint,destructiveHintandopenWorldHintannotations, the server sendsinstructions, the four core workflow tools ask Claude Code to load them upfront (anthropic/alwaysLoad), and the engine serves OpenAI's plugin domain-verification token at/.well-known/openai-apps-challengefromMCP_OPENAI_APPS_CHALLENGE_TOKEN(404 while unset) (#2997) - server: a seeded app version records the sha256 of the bundle it was copied from (
metadata.build.bundleSha256), andbundle_changed()tells an orchestrator whether the pod's build differs from the app's newest seed, so a deploy can re-seed only the apps whose build changed. An app whose public version is a direct deploy, not a seed, counts as unchanged, so a release never replaces it - tool_github: four reads for apps that work on repositories with credentials held in the node configuration:
repo_contributors,repo_languages,label_listanduser_get(the PAT user, or the App itself under App auth). They return{status, data, rate_limit, next_page}: rate-limit counters from the response headers, the next page number from theLinkheader, and a non-2xx answer as a result withstatus,messageanddocumentation_urlrather than an exception; tokens, private keys and bearer headers never appear in a result or an error message. Existing tools keep their return shapes (#2592) - tool_github:
repo_treelists a repository recursively at a branch, tag or SHA (defaultHEAD, the default branch), sorted by path, with GitHub'struncatedflag and acompleteflag of its own, in the result envelope of the repository reads. Withwalk: truea listing GitHub truncated is completed from subtree reads pinned to the SHA the ref resolved to, so a branch that moves during the walk cannot mix revisions: each subtree is read recursively and only one GitHub truncates again is split into its direct children, so a repository the size of Linux takes tens of requests.max_requests(default 1000) andmax_entries(default 200000) bound the walk; the entry cap is what stops a git bomb, where a few trees referenced from thousands of paths multiply entries while requests stay few. A partial result is alwayscomplete: falsewith amessagethat names the bound, or the subtree whose read failed and its status, and still holds the entries GitHub's truncated listing had named (#2464, #2592) - tool_github:
graphqlruns a GraphQL document (POST /graphql, optionalvariablesandoperationName) and returns GitHub'sdataanderrorsin the same envelope; GraphQL errors are results, not exceptions. WithreadOnlyon, a document containing a mutation operation is refused before anything is sent; with it off, mutations run only whengraphqlAllowMutations(off by default) is on, so a pipeline that adds nothing keeps the reach it has today; andgraphqlMaxResponseBytes(4 MiB) caps the response body. Atoolslist registers only the named tools, so an agent's schema holds just those (#648), and an unknown name stops the pipeline at start.graphqland the repository reads wait out primary and secondary rate limits, GraphQL's HTTP 200 rate limits included and a minute when GitHub names no wait, withinrateLimitBudgetSeconds(60, shared by every request of one call, arepo_treewalk included) andrateLimitMaxRetries(3 retries of each request), sending a freshly minted credential on each retry, then return the rate-limit error withretry_after; an answer GitHub partly ran is never retried (#2592) - tool_github: credentials stay on the server for apps that work across repositories. Under GitHub App auth
installationIdis optional: without it the node finds the installation per repository (GET /repos/{owner}/{repo}/installationwith the App JWT), caches it, and caches and refreshes a token per installation, so
- mcp: every HTTP MCP tool now declares explicit
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Design, test, and ship complex AI workflows from a visual canvas, right where you write code.
Drop pipelines into any Python or TypeScript app with a few lines of code, no infrastructure glue required.
Where to start
Open source, MIT. The whole engine is MIT-licensed and OSI-compliant. No enterprise edition, nothing behind a paywall.
Features
| Feature | Description |
|---|---|
| Rocket Builder | Drag, connect, and configure nodes visually, no boilerplate. Real-time observability tracks token usage, LLM calls, latency, and execution. Pipelines are portable JSON, version-controllable, shareable, and runnable anywhere. |
| High-Performance C++ Runtime | Native multithreading purpose-built for the throughput demands of AI and data workloads. No bottlenecks, no compromises for production scale. |
| 100+ Pipeline Nodes | 15+ LLM providers, 9 vector databases, OCR, NER, PII anonymization, chunking strategies, embedding models, and more. All nodes are Python-extensible, build and publish your own. |
| Multi-Agent Workflows | Built-in CrewAI and LangChain support. Chain agents, share memory across pipeline runs, and manage multi-step reasoning at scale. |
| Coding Agent Ready | RocketRide auto-detects your coding agent: Claude, Cursor, and more. Build, modify, and deploy pipelines through natural language. |
| TypeScript, Python & MCP SDKs | Integrate pipelines into native apps, expose them as callable tools for AI assistants, or build programmatic workflows into your existing codebase. |
| Zero Dependency Headaches | Python environments, C++ toolchains, Java/Tika, and all node dependencies managed automatically. Clone, build, run, no manual setup. |
| One-Click Deploy | Run on Docker, on-prem, or RocketRide Cloud. Production-ready architecture from day one, not retrofitted from a demo. |
Quick Start
-
Install the extension for your IDE. Search for RocketRide in the extension marketplace:
-
Click the RocketRide extension in your IDE
-
Deploy a server - you'll be prompted on how you want to run the server. Choose the option that fits your setup:
- Local (Recommended) - This pulls the server directly into your IDE without any additional setup.
- On-Premises - Run the server on your own hardware for full control and data residency. Pull the image and deploy to Docker or clone this repo and build from source.
Your first AI feature
Whether you build web apps, integrate APIs, or run backend services, you already have the mental model.
| You already know | Same idea in RocketRide |
|---|---|
| A route that receives a request | A source node: webhook, chat, or dropper (file drop) |
| Middleware chained in order | Nodes, wired together on a canvas. Most are Python you can open and read |
| The response you return | A response node |
| Config in git, like a Dockerfile | The .pipe file: plain JSON, diffable, reviewable |
| Calling a service from your app | The Python or TypeScript SDK: one call in, one result out |
Three steps, no API keys:
-
Run it locally. Follow the Quick Start and pick Local when asked. That's the whole install.
-
Open a working pipeline. Open
examples/document-processor.pipein your IDE. Give it a PDF or an image and it pulls out the text (including text inside images), finds names, addresses and other personal data, and returns a cleaned copy. It runs on local models, so nothing leaves your machine. Press ▶ on the source node to start it. Its source is awebhook, so it waits for input — step 3 is how you send some. -
Call it from your code. The pipeline is now a function your service can call. Run it from the folder you opened in your IDE: the extension writes the engine's connection details into a
.envthere, and the SDK reads them automatically. Run it from anywhere else and the client falls back to RocketRide Cloud instead.pip install rocketrideimport asyncio from rocketride import RocketRideClient async def main(): async with RocketRideClient() as client: run = await client.use(filepath='examples/document-processor.pipe') out = await client.send( run['token'], 'Alice Smith, 12 Elm St, Springfield.', objinfo={'name': 'note.txt'}, mimetype='text/plain' ) print(out) await client.terminate(run['token']) asyncio.run(main())TypeScript works the same way:
npm install rocketride· SDK docs
Next steps, one at a time:
- Add a model. Drop an
llm_*node between the source and the response and add one API key. Same pipeline, now with an LLM in the loop. - Search by meaning.
examples/rag-pipeline.pipeis the standard "ask questions about my documents" pattern. Needs one LLM key and a vector database (Qdrant can run locally). - Give it tools. An agent node is an LLM allowed to call other nodes in a loop until it's done.
examples/agent-workflow.pipeshows the shape.
| Term | What it means here |
|---|---|
| Pipeline | A request handler built from steps, saved as a .pipe JSON file |
| Node | One step. Providers (OpenAI, Anthropic…), tools (GitHub, Slack…), stores, parsers |
| Embedding | Turning text into a list of numbers so "similar meaning" becomes "nearby numbers" |
| Vector database | A store that finds records by meaning instead of exact match |
| RAG | Retrieve the relevant documents first, then ask the model with them in context |
| Agent | An LLM that can call tools and nodes repeatedly until the task is done |
| OCR / NER / PII | Read text out of images / find names, dates, organisations / detect personal data |
| Chunking | Splitting long documents into pieces small enough to embed and retrieve |
Building Your First Pipe
-
All pipelines are recognized with the
*.pipeformat. Each pipeline and its configuration are JSON objects - but the extension in your IDE will render within our visual builder canvas. -
All pipelines begin with a source node: webhook, chat, or dropper. For specific usage, examples, and inspiration on how to build pipelines, check out our guides and documentation.
-
Connect input lanes and output lanes by type to properly wire your pipeline. Some nodes like agents or LLMs can be invoked as tools for use by a parent node as shown below:
-
You can run a pipeline from the canvas by pressing the ▶ button on the source node or from the
Connection Managerdirectly. -
Deploy your pipelines - pick the path that fits:
-
Docker - Download the RocketRide server image and create a container. Requires Docker to be installed.
docker pull ghcr.io/rocketride-org/rocketride-engine:latest docker create --name rocketride-engine -p 5565:5565 ghcr.io/rocketride-org/rocketride-engine:latest docker start rocketride-engine -
Local Deployment - Download your preferred runtime as a standalone process from the Deploy page in the
Connection Manager. -
RocketRide Cloud - Skip the setup and ship straight to managed hosting. Same portable pipeline JSON, zero infrastructure to run, from prototype to production. Get started
-
-
Run your pipelines as standalone processes or integrate them into your existing Python and TypeScript/JS applications utilizing our SDK.
Observability
Selecting running pipelines allows for in-depth analytics. Trace call trees, token usage, memory consumption, and more to optimize your pipelines before scaling and deploying. Find the models, agents, and tools best fit for your task.
Documentation
Everything on docs.rocketride.org is built from the docs/ tree in this repo, split by audience. docs/README.md is the full map; the short version:
| Looking for | Start at |
|---|---|
| Using RocketRide: quickstart, concepts, guides, cloud, self-hosting | docs/public/product/ (the site, page for page) |
| SDK guides | TypeScript · Python · MCP |
| Building your own client on the engine protocol | docs/public/product/connect/websocket/ |
| Contributing: setup, builder, engine internals, node authoring | docs/development/ |
| Node catalog | each node's README.md under nodes/src/nodes/ |
| Apps: VS Code extension and the shell UIs | each app's own folder under apps/; how they fit the monorepo in docs/development/apps/ |
| Pointing an AI assistant at RocketRide | docs/agents/ |
Repo-wide contributor rules live in AGENTS.md.
Contributing
Good places to start
- Claim an issue with one comment. Comment
/assignon any open issue and it's yours. No permissions or membership needed. - Good first issues are labelled
good first issue;help wantedmarks bigger ones we'd like a hand with. - Add a node. Every node is a small Python package under
nodes/src/nodes/. A new provider, tool, or store makes a good first contribution. Guide: Adding a New Node. - Fix what you just read. Docs PRs are welcome, including this README.
How it works
- Fork, branch as
<type>/RR-<issue>-<short-description>, open a PR againstdevelop, link the issue. Full process, style guides, and test commands: CONTRIBUTING.md. - One build tool for the whole monorepo:
./buildermanages the C++ toolchain, Python environments, and Java/Tika for you. Clone, build, run. - Roles and decisions: GOVERNANCE.md · Releases: RELEASE.md · Security reports: SECURITY.md · Questions: Discussions, Discord, SUPPORT.md
Two ways to run RocketRide
Let us handle the infrastructure, or own every layer.
RocketRide Cloud NOW LIVE
Run pipelines, not infrastructure.
Connecting takes two lines. Same portable pipeline JSON, now hosted for you:
ROCKETRIDE_URI=https://api.rocketride.ai
ROCKETRIDE_AUTH=your-api-token
On-Prem FREE & MIT
Own every layer.
Point a client at your local engine in one line:
ROCKETRIDE_URI=ws://localhost:5565
Contributors
RocketRide is built by a growing community of contributors. Whether you've fixed a bug, added a node, improved docs, or helped someone on Discord, thank you. New contributions are always welcome - check out our contributing guide to get started.