Skip to content
Scaffold YAML from Claude Code, Cursor, or Grok

Build git-native AI appliances

Your agent is YAML in your repo - reviewed as a pull request, versioned by tag. kdeps ships it with the open-source model as one deployment: cloud, on-prem, edge, or air-gapped.

$ kdeps

kdeps v2.x  |  agent loop
Model: llama3.2 (llamafile, offline)  |  /help for commands

> find the failing tests in ./api and suggest a fix

Ran go test ./api/... - 2 failures in handler_test.go.
Both assert 200, but the router now returns 204 for an
empty body. Update the expected status on lines 41 and 58.

> /model claude-sonnet
Switched to claude-sonnet (Anthropic)

>
$export KDEPS_API_AUTH_TOKEN=dev-token
$kdeps run .
Listening on :16395
 
$curl -s -X POST localhost:16395/api/v1/chat \
-H "Authorization: Bearer $KDEPS_API_AUTH_TOKEN" \
-d '{"q": "What is entropy, in one sentence?"}'
 
{"success": true, "data": {"answer": "Entropy measures how many microscopic arrangements are consistent with a system's macroscopic state."}}

git-native

The YAML is the behavior spec

What the appliance does - model, validation, step order, response shape - is defined entirely by the YAML in your repo. Change it, commit, and it behaves differently; your git history is the changelog of the agent's behavior. Only the model binding lives outside the repo, so the same commit runs local on a laptop and cloud in production.

git show HEAD — resources/llm.yaml
chat:
-  model: llama3.2:1b
+  model: qwen2.5:7b
  prompt: "{{ get('q') }}"
validations:
  check:
+    - len(get('q')) < 2000        # reject prompts over 2k chars

One commit, two behavior changes: a bigger model, and the API now 400s on oversized input. No redeploy config, no console toggle - the diff is the change.

Reviewable

A change to an agent is a diff: a new resource, a tightened validation, a reshaped response. Review it in a pull request like any other code.

Versioned

A git tag is a release. kdeps validate and kdeps bundle build run against any checkout or tag; the built appliance pins the runtime and the model too.

Reproducible

Point CI at a tag: kdeps validate, kdeps bundle build, push the image. The same commit produces the same appliance every time.

Shareable, optionally

The registry is a convenience for installing and publishing agents by name - kdeps registry install owner/repo pulls from a GitHub repo. You never need it to build or deploy your own.

getting started

How it works

Start in the REPL. Write YAML when you want a pipeline. Ship the same file.

01

Run kdeps

kdeps opens the agent REPL. No YAML. No API key. A local model downloads on first use.

02

Write YAML

Declare resources -- chat, HTTP, Python, SQL. Wire them with requires:. One file, both modes.

03

Ship it

kdeps run serves the API. kdeps . loads it as a tool. Export Docker, Kubernetes, ISO, or a binary.

vs doing it yourself

YAML replaces glue code

No Python scripts, no wiring, no boilerplate.

Traditional approachkdeps
Python script + Flask + OpenAI SDK + retry logicOne workflow.yaml file
Manual dependency wiringrequires: in YAML
Write error handling by handonError: block (continue / retry / fail)
Write Dockerfile + CI pipeline for deploymentkdeps bundle build --tag then docker push
Chaining agents by handagent: resource — one agent calls another declaratively

Released under the Apache 2.0 License.