> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nanny.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> What Nanny is, what it is not, and when to use it.

You deploy a multi-agent system on Friday. Monday morning a customer forwards you an email your agent sent them. Nobody approved it, nobody knew it could send email, and there is no record of what the agent was allowed to do or why it decided to.

This is happening right now at hundreds of companies.

**Nanny is the authorization and audit layer that prevents it.**

Your agent may only do what it is authorized to do, and you can prove it. Nanny is open source, and governs AI agents that take real-world actions. You declare what each agent is allowed to do, which tools it may call and under what rules, and the moment it tries something outside that, Nanny stops the run and records exactly what happened.

No grace period. No soft warnings. No recovery logic. No negotiation.

That boundary is deterministic, auditable, and structurally impossible for any agent to bypass.

***

## What nanny guarantees

When you run an agent under nanny, these three things are true:

* It **will not** call a tool you did not allow.
* It **will not** take an action a rule refuses.
* Every verdict, allow and refuse alike, is **written down**.

A denial stops the run immediately. The agent cannot catch, delay, or prevent
it. An `ExecutionStopped` event is emitted with the exact reason, and Nanny
exits non-zero.

Liability attaches to what an agent was allowed to do, not to how much it used.
Nobody is accountable for a token count; people are accountable when an agent
emails the wrong customer or moves money it should not have.

***

## What nanny is not

Nanny enforces what you declared. It adds no intelligence: it never reads your prompts, interprets your agent's reasoning, or decides anything for you. It evaluates the identity, arguments, labels, and ordering of actions, and nothing else.

***

## Who it is for

Nanny is for developers and teams running agents in production, or preparing to.

It is a good fit if you:

* Are building **multi-agent systems** where different agents have different roles and tool access
* Are running **autonomous agents** that call external tools, browse the web, or write to APIs
* Need to prove an agent **could not** have done something, not just that it did not
* Want a **structured audit trail** of every tool call and stop reason for every execution
* Are building with **CrewAI, LangChain, or any Python or Rust agent framework**
* Want enforcement that is **not tied to any agent framework**, use CrewAI, LangGraph, or any Python or Rust framework without lock-in

***

## The multi-agent scenario

An outreach agent searches the web for context, then emails a prospect. Both
actions are legitimate. Doing the second *after* the first is how an instruction
hidden in a web page becomes an email you did not write.

Nanny governs the ordering, not the content:

```toml theme={null}
[tools]
allowed = ["web_search", "send_outreach"]

[tools.web_search]
reads_untrusted = true    # ingests content you do not control

[tools.send_outreach]
external_effect = true    # acts on the outside world

[rules]
extends = ["nanny:recommended@1.0.0"]
```

`no_send_after_read` ships in that pack. It denies any `external_effect` call
once a `reads_untrusted` call has happened in the same run. Nanny never reads
the page, so it cannot be fooled by what the page says.

The rule names labels, not tools, which is why it works in your application
without being written for it. See [Tool labels](/v0.6/concepts/tool-labels).

***

## The nanny ecosystem

Nanny is designed to meet you where you are and grow with you.

**Nanny CLI**: the enforcement entry point. Governs any agent process in any language as its parent process supervisor. Install it once as a system tool and use `nanny run --serve` from any project that has a `nanny.toml` with a `[start]` command configured.

```bash theme={null}
nanny run --serve   # starts a governor, runs [start].cmd underneath it
```

**Rust SDK**, for Rust agents. Annotate functions with `#[nanny::tool]`, `#[nanny::rule]`, and `#[nanny::agent]` for per-call enforcement and custom rules. See the [Rust SDK guide](/v0.6/guides/rust-sdk).

**Python SDK**, the same model as decorators: `@tool`, `@rule`, `@agent`. Works with LangChain, CrewAI, or any Python agent framework. See [Python SDK](/v0.6/guides/python-sdk).

**Rule packs**, curated sets of rules installed with one command and pinned to a version. See [Rule packs](/v0.6/guides/rule-packs).

**Nanny Cloud**, durable signed audit trails, cost attribution across your fleet, and team access control. The runtime stays unchanged and works without it. See [Connect to Nanny Cloud](/v0.6/guides/managed-mode).

***

## Open source

The Nanny runtime is fully open source under the **Apache 2.0 licence**.

Source code, issues, and contributions live at [github.com/nanny-run/nanny](https://github.com/nanny-run/nanny). Cloud is the managed layer above the OSS primitive, not a replacement for it.

***

## Next steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="bolt" href="/v0.6/quickstart">
    Install nanny and run your first governed agent in under five minutes.
  </Card>

  <Card title="Installation" icon="package" href="/v0.6/install">
    Install, upgrade, and uninstall on macOS, Linux, and Windows.
  </Card>

  <Card title="How it works" icon="cpu" href="/v0.6/concepts/how-it-works">
    Understand the enforcement model and passthrough mode.
  </Card>

  <Card title="Limits" icon="shield" href="/v0.6/concepts/limits">
    Learn how tool permission and rules are enforced.
  </Card>

  <Card title="nanny.toml reference" icon="file-text" href="/v0.6/reference/nanny-toml">
    Full schema for the configuration file.
  </Card>

  <Card title="Rust SDK guide" icon="rust" iconType="brands" href="/v0.6/guides/rust-sdk">
    Per-function governance with `#[nanny::tool]`, `#[nanny::rule]`,
    `#[nanny::agent]`.
  </Card>

  <Card title="Python SDK guide" icon="python" href="/v0.6/guides/python-sdk">
    Per-function governance with `@tool`, `@rule`, `@agent` decorators. Works
    with LangChain, CrewAI, and any Python agent framework.
  </Card>

  <Card title="Governance server" icon="server" href="/v0.6/guides/governance-server">
    Cross-process and cross-machine enforcement with one shared rule set and mTLS.
  </Card>
</CardGroup>
