Webhook Pipeline
Webhook Pipeline
The simplest useful pipeline: an HTTP endpoint that accepts a question, sends it to an LLM, and returns the answer. This is the "hello world" of RocketRide — a good starting point before adding vector stores, preprocessing, or agents.
The pipeline
Save this as chat.pipe:
{
"nodes": [
{
"id": "source_1",
"provider": "webhook"
},
{
"id": "llm_1",
"provider": "llm_openai",
"config": {
"profile": "openai-4o-mini",
"apikey": "${OPENAI_API_KEY}"
},
"input": [
{ "lane": "questions", "from": "source_1" }
]
},
{
"id": "target_1",
"provider": "response",
"input": [
{ "lane": "answers", "from": "llm_1" }
]
}
]
}
Three nodes, one connection each. The webhook source receives the request, the
llm_openai node answers it, and the response target returns the result.
Start the pipeline
export OPENAI_API_KEY=sk-...
rocketride start --pipeline ./chat.pipe
Output:
Webhook ready - system is ready to accept requests
URL: http://localhost:5567/task/data
Auth: <public-auth-key>
Token: <private-token>
Keep the terminal open — the pipeline runs until you stop it.
Send a question
curl -X POST http://localhost:5567/task/data \
-H "Authorization: Bearer <public-auth-key>" \
-H "Content-Type: text/plain" \
-d "What is the capital of France?"
Response:
{ "answer": "The capital of France is Paris." }
Use the Chat UI variant
Swap webhook for chat to get a browser-based chat window instead of a raw
HTTP endpoint, no curl required:
{ "id": "source_1", "provider": "chat" }
Restart the pipeline. The engine prints a chat URL:
Chat ready - system is ready to accept questions
URL: http://localhost:5567/chat?auth=<public-auth-key>
Open that URL in a browser and start typing. The ?auth= query parameter is a
convenience for the browser; the endpoint also accepts the key in an
Authorization: Bearer <public-auth-key> header, the same scheme the webhook
endpoint uses.
Add a system prompt
Give the LLM a persona by adding a prompt node:
{
"id": "prompt_1",
"provider": "prompt",
"config": {
"text": "You are a helpful assistant that answers questions concisely."
},
"input": [
{ "lane": "questions", "from": "source_1" }
]
}
Then wire llm_1 to receive from prompt_1 instead of source_1.
Next steps
- Add a
qdrantstore between source and LLM to build the full RAG pipeline. - Replace
llm_openaiwithllm_anthropicorllm_ollama— the rest of the pipeline is unchanged. - See the Anthropic integration guide for model profile options.