Before you start.
- Sign up at app.kibbu.io with your work email.
- Add your first node through the admin console.
- Open API keys in the sidebar and generate a key. The examples below read it from
KIBBU_API_KEY. - Open Models, pick a model and size, enable it, and click Copy model ID. The examples below read it from
KIBBU_MODEL.
The three fields.
Endpoint, key and model. Each line marked changed is one of them; nothing else in the call is new.
TypeScript.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.kibbu.io/v1", // changed
apiKey: process.env.KIBBU_API_KEY, // changed
});
const r = await client.chat.completions.create({
model: process.env.KIBBU_MODEL!, // changed
messages: [{ role: "user", content: "Summarise the evals." }],
});
console.log(r.choices[0].message.content);Python.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.kibbu.io/v1", # changed
api_key=os.environ["KIBBU_API_KEY"], # changed
)
r = client.chat.completions.create(
model=os.environ["KIBBU_MODEL"], # changed
messages=[{"role": "user", "content": "Summarise the evals."}],
)
print(r.choices[0].message.content)curl.
curl https://api.kibbu.io/v1/chat/completions \
-H "Authorization: Bearer $KIBBU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$KIBBU_MODEL"'",
"messages": [{ "role": "user", "content": "Summarise the evals." }]
}'In a platform you already run.
All four speak OpenAI. Test one workflow with kibbu, compare output quality, runtime and spend, then roll out.
| Platform | The change |
|---|---|
| Dify | Add kibbu as an OpenAI-compatible provider, then pick it per app. |
| Databricks | Point the serving endpoint or notebook client at the kibbu base URL. The job definition stays as it is. |
| n8n | Edit the OpenAI credential once. Every workflow using it follows. |
| Langflow | Set the base URL and key on the OpenAI component. The rest of the flow is untouched. |
What happens to each request.
- Route locally first. kibbu finds idle, plugged-in machines in your fleet and serves the request there, respecting battery and thermal state.
- The owner always wins. The moment someone is back at a machine, kibbu yields it.
- Fall back, transparently. When the fleet is at capacity, or the request needs more than your hardware can give it, it goes to OpenAI or Anthropic instead, priced, logged and attributed. Your application sees the same API either way.
When not to use kibbu.
Anything a person is waiting on in real time, like live chat, belongs on your current setup. So does work that needs a proprietary cloud model, and fleets too small to move an AI bill. kibbu.md lists every boundary, and the comparisons with Ollama on one machine and with an AI gateway say where each one fits better.

