cadre brings private, autonomous AI teammates directly onto your machines and into your team channels.
Powered by Goose over ACP, and backed by your choice of local compute—whether a single Ollama instance on your laptop or a distributed MeshLLM cluster split across your GPU boxes.
No cloud API keys required. No telemetry. Inference runs entirely on your hardware (Buzz agents talk only to your configured relays and whatever network resources their tools access).
nix run github:kleinbem-dev/cadre- In Team Chat: An autonomous member of your Buzz relays (via ACP agent harnesses). Team members
@cadrein channels to debug code, explain regressions, or run commands (defaults to owner-only authorization; configurerespondTofor team allowlists or open channels). - In Your Terminal: An interactive pairing assistant (
cadre/goose) that plans, runs shell commands, navigates code, and edits files. - Flexible Compute: Switch between Ollama or MeshLLM with a single flag. If you have multiple devices, MeshLLM splits models too large for one machine across your fleet.
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ SURFACES │
│ Terminal (cadre) │ Web Dashboard (cadre web) │ Desktop (cadre gui) │ Chat (cadre)│
└───────────────────────────────────────────┬────────────────────────────────────────────┘
│ ACP (Agent Client Protocol)
▼
┌────────────────────────────────────────────────────────┐
│ CADRE │
│ Autonomous Agent Engine (aaif-goose + ACP) │
└───────────────────┬────────────────────────────────────┘
│ OpenAI-Compatible Local API
▼
┌──────────────────────────────────────────────────────────────────────┐
│ LOCAL COMPUTE LAYER │
│ │
│ [Backend: Ollama] [Backend: MeshLLM] │
│ Single-node, instant setup Distributed across fleet │
│ localhost:11434 localhost:9337 │
│ ┌────────────┐ ┌────────────┐ │
│ │ Laptop (8B)├─────┤ GPU (32B) │ │
└───────────────────────────────────┴────────────┴─────┴────────────┴──┘
The gui and chat commands need berd and buzz-app (or buzz-cli) on PATH. The cadre package does not include heavy desktop applications by default. Make them available in your environment or install them via services.cadre.desktop.enable.
# Terminal pairing assistant (Goose in CLI):
nix run github:kleinbem-dev/cadre
# Web Dashboard (SvelteKit + web-config interface):
nix run github:kleinbem-dev/cadre -- web
# Desktop GUI (Berd window on your local backend):
nix run github:kleinbem-dev/cadre -- gui
# Team Chat (Buzz client):
nix run github:kleinbem-dev/cadre -- chat
# Explicitly use Ollama backend:
nix run github:kleinbem-dev/cadre -- --backend ollama --model qwen2.5-coder
# Explicitly use MeshLLM backend:
nix run github:kleinbem-dev/cadre -- --backend mesh --model Qwen3-8B-Q4_K_MRun cadre as a system service on your machines:
{
inputs.cadre.url = "github:kleinbem-dev/cadre";
outputs = { nixpkgs, cadre, ... }: {
nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {
modules = [
cadre.nixosModules.default
{
services.cadre = {
enable = true;
desktop.enable = true; # installs Berd GUI and Buzz chat alongside CLI
backend = "mesh"; # or "ollama"
models = [ "Qwen3-14B-Q4_K_M" ];
# package = pkgs.mesh-llm-cuda; # NVIDIA acceleration
# Deploy autonomous teammates into your Buzz team chat:
buzz.agents.dev = {
relayUrl = "wss://buzz.example.com";
privateKeyFile = "/run/secrets/buzz-cadre-key";
respondTo = "owner-only"; # or "allowlist", "anyone"
owner = "hex-pubkey-here";
};
};
}
];
};
};
}The first machine creates the mesh and prints an invite token at its first start (journalctl -u mesh-llm). Other machines join by providing the token in services.cadre.joinFile.
Run cadre as a user service without needing NixOS:
{
imports = [ cadre.homeManagerModules.default ];
services.cadre = {
enable = true;
desktop.enable = true; # adds Cadre (Berd) and Cadre (Buzz) menu entries on Linux
backend = "mesh";
models = [ "Qwen3-8B-Q4_K_M" ];
};
}cadre packages the self-hosted AI agent stack for Nix:
| Package | Purpose |
|---|---|
cadre |
The unified launcher and agent harness |
goose-cli |
The core autonomous agent runtime (aaif-goose) |
mesh-llm, skippy |
Distributed LLM inference over peer-to-peer mesh |
buzz-app, buzz-cli, buzz-relay, buzz-acp |
Self-hosted Nostr team chat where agents are full participants |
berd, braindump |
Native desktop UI and knowledge tools |
MIT © kleinbem