# Overview

Kitaru sits in the **runtime layer** of your agent stack. Underneath it are the **harness** your team picked (Pydantic AI, LangGraph, Claude Agent SDK, raw Python) and the **model(s)** that harness drives. On top sits the **platform** your org already runs (auth, observability, policy, UI). Kitaru's job is to make the run durable — checkpoints, replay, resume, wait states, versioned deployments — without forcing a graph DSL or a rewrite of your control flow.

Start with [Harness, Runtime, Platform](/kitaru/core-concepts/harness-runtime-platform.md) if you want the big-picture split, or [How It Works](/kitaru/core-concepts/how-it-works.md) for the three-planes model (control / orchestration / execution) and what-runs-where in local dev vs production.

## Core ideas

| Concept                 | What it is                                                                       |
| ----------------------- | -------------------------------------------------------------------------------- |
| **Flow**                | The outer durable boundary around your workflow                                  |
| **Checkpoint**          | A unit of work inside a flow whose output is persisted                           |
| **Execution**           | A single run of a flow, identified by a unique ID                                |
| **Structured metadata** | Key-value data you attach to executions and checkpoints with `kitaru.log()`      |
| **Runtime log storage** | Where runtime logs are sent (configured separately from structured metadata)     |
| **Active stack**        | The default execution target used when no per-run `stack=...` override is passed |

## What you can use today

Kitaru's current release includes:

* `@flow` — mark a function as a durable workflow
* `@checkpoint` — mark a function as a persisted work unit
* `kitaru.log()` — attach structured metadata to the current scope
* `kitaru.wait()` — pause a flow until external input is supplied
* `kitaru.llm()` — make tracked model calls with prompt/response capture
* `kitaru.connect()` — connect to a Kitaru server
* `kitaru.configure()` — set process-local runtime defaults
* `kitaru.save()` / `kitaru.load()` — persist and load named artifacts in checkpoints
* `kitaru.list_stacks()` / `kitaru.current_stack()` / `kitaru.use_stack()` — manage the default stack
* `KitaruClient` — inspect executions, fetch logs, resolve waits, retry, replay, and browse artifacts
* `FlowHandle` — interact with a running or finished execution

{% hint style="info" %}
All of the primitives listed here ship today. Some capabilities are backend-dependent — for example, runtime log retrieval requires a server-backed connection — but they are part of the supported Kitaru surface.
{% endhint %}

## Explore the concepts

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Harness, Runtime, Platform</strong></td><td>Where Kitaru fits in an agent stack, and where it doesn't.</td><td><a href="/pages/jFEpVFR4YYhJvoEp1r9K">/pages/jFEpVFR4YYhJvoEp1r9K</a></td></tr><tr><td><strong>How It Works</strong></td><td>Server, runner, execution targets; three planes; local dev vs production.</td><td><a href="/pages/fpgU4WBhT9hosGDLfA42">/pages/fpgU4WBhT9hosGDLfA42</a></td></tr><tr><td><strong>Flows</strong></td><td>Define durable execution boundaries and control how workflows run.</td><td><a href="/pages/fRZF8ymHawJ9ME3mH2F1">/pages/fRZF8ymHawJ9ME3mH2F1</a></td></tr><tr><td><strong>Checkpoints</strong></td><td>Break work into persisted units with concurrency support.</td><td><a href="/pages/Zt6utJ6bxTsCzHn1d3At">/pages/Zt6utJ6bxTsCzHn1d3At</a></td></tr><tr><td><strong>Logging and Metadata</strong></td><td>Attach structured data to executions and checkpoints.</td><td><a href="/pages/ibSSC0mR9ajxhHhbbv29">/pages/ibSSC0mR9ajxhHhbbv29</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.zenml.io/kitaru/core-concepts/concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
