Every team builds the same thing. From scratch.
Your agent went somewhere it shouldn't
Give your agent only the tools you explicitly allow. A plugin without access is simply unavailable.
Automation held together with bash
Workflows in YAML. The engine tracks execution, writes logs, and retries on failure.
Switched from OpenAI to Claude — rewrote every LLM call
Plugins call platform.llm.complete(). OpenAI, Claude, Mistral — swap the adapter in config, not a single line in your plugins changes.
.complete(prompt)
Every tool is its own island
Commit, review, release, deploy — one workflow, one platform, one place to look.
Define once. Run anywhere. Trace everything.
Releases, reviews, QA gates, AI agents — all described as code, running on one engine. Version them in git, run them from CLI or CI, inspect every step.
Agent calls the command. Not your key.
Write a plugin — the agent gets a set of commands. Keys, access rights, audit — inside the plugin. The agent doesn't know how GitHub works — it just calls kb github create-pr.
KB Labs native agents go further — every step is traced, analytics calculated automatically, nothing is lost.
21+ adapters. Swap any vendor in config.
Every external dependency — LLM, database, vector store, cache, storage — is behind a typed contract. Change the implementation without touching your code.
LLM
Implement ILLM — any provider works
Databases
Vector
Storage
Comms
Observability
Don't see what you need? Write your own adapter — same contract, loads identically.
KB Labs runs on KB Labs — every day.
Releases, code review, commit policy, QA gates, dependency management — all running as plugins on the same engine you'll install.
I build on KB Labs every day. Every release, every review gate, every QA check. It's the same engine you install.