Skip to content

Internals

This page names the main building blocks so you know what you are running and where to look.

Kaba Console (kaba)Kaba Control (kabactl)
RoleDesktop clientEngine and headless node
LanguageJavaScriptRust
Runs asDesktop appChild process of the client, a background service, or a container
Version documented0.1460.87

The client bundles the engine. On start it copies the bundled kabactl into the user data directory if it is newer than the installed one, starts it, and waits for it to answer. If a healthy engine is already running, for example as a systemd service, the client uses it.

ComponentUsed for
Electron (Chromium)Window, panes, rendering, the web platform
LitEvery built-in UI and app, as web components
xterm.jsTerminal, with WebGL rendering and inline images
Ghostery ad-blocker engineIn-browser ad and tracker blocking
highlight.js, markdown-itCode and Markdown rendering
uPlotThe header system-load chart and other small charts
esbuildBundling

The client is organised as:

  • Background process (bg/): windows, frames and panes, the privacy layer, downloads, permissions, the tool loop, and the bridge to the engine.
  • Shell (fg/): the header, pane chrome, omnibar, Kaba bar, menus, toasts and dialogs. Each floating surface is its own isolated view.
  • Built-in apps (userland/): desktop, terminal, files, Hippocampus, settings, Projects, Toolbench and the editor, each served from kaba://.

Every web page runs in a sandboxed renderer with context isolation. Pages on the web get no Kaba API; only kaba:// pages do. See SDK security.

ComponentUsed for
Tokio, warp, rustlsAsync runtime and the HTTPS API
iroh and iroh-gossipThe peer mesh and public-service announcements
ArtiTor, built in, including onion services
LanceDB and Apache ArrowThe memory vector store
SQLite via DieselAccounts, devices, policies, frames, history, settings, vault
llama.cppModel inference from GGUF files
BurnLoRA training, on GPU through wgpu
whisper.cpp, ONNX RuntimeSpeech-to-text and voice models
TesseractOCR of screenshots and images
OxigraphThe tool-loop knowledge graph (RDF, SPARQL)
Brave’s adblock engineAd blocking in the proxy
QuickJSRuns the tool loop inside the engine on headless nodes
Argon2id, XChaCha20-Poly1305, BLAKE3Password hashing, encryption at rest, key derivation
OCI runtimes (gVisor runsc, youki, crun, runc)The command sandbox on Linux

The engine is a Cargo workspace:

CrateContents
kabactlThe command-line front end, install, self-update, diagnostics
kabactl-basePaths, schema, shared crypto
kabactl-storeThe SQLite data layer
kabactl-engineModels, training, the vector store, voice, OCR, configuration
kabactl-nodeThe server, proxy, vault, sandbox, terminals, cluster and tool loop
kabactl-ontologyThe knowledge graph
FeatureIn default buildAdds
gpuyesGPU training and compute through wgpu
voiceyesSpeech-to-text and text-to-speech
ocryesTesseract OCR
oci-pullyesPulling container images without Docker (Linux)
toolloop-jsyesThe tool loop inside the engine
llama, llama-vulkan, llama-metal, llama-cuda, llama-rocmnollama.cpp inference and its GPU back ends
multimodalnoImage and audio input to the base model
cpunoCPU-only build

Release builds for each platform choose the back end that suits it. To see what a binary was built with, start the server and read the first lines of kabactl-server.log.

The tool loop is a single dependency-free JavaScript module. The same file runs in the client’s background process, in the Projects page, and inside kabactl through QuickJS. That is why a headless node can run the same task the client can, with the same gates. Its tool catalog and the per-tool schemas are generated from one declarative source, and tests fail if the two drift.