Skip to content

DNA — Domain Notation of Anything

Kubernetes CRDs, but for agentic behavior.

DNA is a declarative, typed notation for everything that participates in an agentic system — agents, skills, souls, guardrails, tools, policies. Every participant is identified by (apiVersion, kind), validated against a per-Kind schema, and stored as versionable YAML/Markdown. Changing an agent is a file edit, not a deploy.

apiVersion: github.com/ruinosus/dna/v1
kind: Agent
metadata:
  name: greeter
spec:
  instruction: "You are Helio, a friendly assistant."
  skills: [verification-before-completion]   # a real marketplace skill

DNA ships as a dual SDK — Python (import dna) and TypeScript (@dna/sdk) — that implement the same kernel 1:1. Behavioral parity between them is a test-enforced invariant, not a goal.

Start here

These docs follow the Diátaxis framework — four kinds of documentation, each with one job.

The shape of the idea

Claim Where it lives
The owner names the schema. Standards DNA didn't invent are consumed byte-faithful under their owners' apiVersion. Market fidelity
Behavior is data, not code. Prompts, personas and wiring are versioned documents, validated on write and composed on read. The thesis
The kernel knows no Kinds. A microkernel mediates five ports; extensions register Kinds onto it. Microkernel & ports
Your git log is your SDLC. This repo tracks its own lifecycle as DNA documents, stamped onto every commit. The SDLC loop

Status

DNA is the extracted core of a production system, not a greenfield prototype: the kernel, the extension mechanism, multi-tenancy, layer composition and the market-format readers/writers run in production today.

It is also pre-1.0: public APIs may still move, and the packages are not yet on PyPI/npm. The full test suite (~2,900 tests across both SDKs, including the market-conformance suite) gates every change.

The source lives at github.com/ruinosus/dna.