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

# Rasa: Code-First AI Agent Framework

> Learn how Rasa combines CALM, large language models, flows, and explicit business logic to build reliable conversational AI agents.

export const DeveloperLicenseForm = ({buttonLabel = "Get it here", spaced = false}) => {
  const endpoint = "https://api.hsforms.com/submissions/v3/integration/submit/6711345/23b054de-86aa-433a-801f-fcf1a13bc9e2";
  const getPageContext = () => {
    if (typeof window === "undefined") {
      return {};
    }
    return {
      pageName: document.title,
      pageUri: `${window.location.origin}${window.location.pathname}`
    };
  };
  const [email, setEmail] = useState("");
  const [consentGiven, setConsentGiven] = useState(false);
  const [status, setStatus] = useState("idle");
  const [website, setWebsite] = useState("");
  const isSubmitting = status === "submitting";
  const resetStatus = () => {
    if (status !== "idle") {
      setStatus("idle");
    }
  };
  const handleSubmit = async event => {
    event.preventDefault();
    if (website) {
      return;
    }
    const normalizedEmail = email.trim();
    if (!normalizedEmail || isSubmitting) {
      return;
    }
    setStatus("submitting");
    try {
      const response = await fetch(endpoint, {
        method: "POST",
        credentials: "omit",
        headers: {
          "Content-Type": "application/json"
        },
        body: JSON.stringify({
          fields: [{
            name: "email",
            value: normalizedEmail
          }, {
            name: "consent_to_eula_check_box",
            value: String(consentGiven)
          }],
          context: getPageContext()
        })
      });
      if (!response.ok) {
        throw new Error("HubSpot form submission failed");
      }
      setEmail("");
      setConsentGiven(false);
      setStatus("success");
    } catch {
      setStatus("error");
    }
  };
  return <form className={`not-prose rasa-license-form ${spaced ? "rasa-license-form--spaced" : ""}`} onSubmit={handleSubmit}>
      <label className="rasa-license-form__honeypot" aria-hidden="true">
        <span>Leave this field empty</span>
        <input name="website" tabIndex="-1" aria-hidden="true" autoComplete="off" value={website} onChange={event => setWebsite(event.target.value)} />
      </label>
      <input className="rasa-license-form__email" type="email" name="email" required maxLength={254} autoComplete="email" placeholder="you@company.com" aria-label="Work email" value={email} onChange={event => {
    setEmail(event.target.value);
    resetStatus();
  }} />
      <button type="submit" className="rasa-license-form__submit" disabled={isSubmitting}>
        {isSubmitting ? "Submitting…" : buttonLabel}
      </button>
      <label className="rasa-license-form__consent">
        <input type="checkbox" name="consent_to_eula_check_box" required checked={consentGiven} onChange={event => {
    setConsentGiven(event.target.checked);
    resetStatus();
  }} />
        <span>
          I agree to the{" "}
          <a href="https://rasa.com/developer-terms" target="_blank" rel="noopener noreferrer">
            Rasa Developer Edition terms
          </a>
          {"."}
        </span>
      </label>
      {status === "success" && <output className="rasa-license-form__status rasa-license-form__status--success">
          Thanks! Check your inbox for your developer license.
        </output>}
      {status === "error" && <p className="rasa-license-form__status rasa-license-form__status--error" role="alert">
          We couldn’t submit your request. Please try again.
        </p>}
    </form>;
};

Rasa is the code-first interface for building conversational AI agents whose
task execution must follow explicit business logic.

Rasa manages dialogue with
[CALM (Conversational AI with Language Models)](/docs/learn/concepts/calm). Large
language models (LLMs) interpret what a user wants, while flows define the steps
the agent can take to complete a task. This separation keeps business rules in
version-controlled files that teams can review and test.

This section documents Rasa and its developer features. Product names, packages,
and commands may use **Rasa Pro** when they refer to the licensed distribution.

<Card title="Developer Edition" icon="key">
  Build and run agents for up to 1,000 conversations per month with a free Rasa
  Developer Edition license.

  <DeveloperLicenseForm />
</Card>

## What you can build with Rasa

* **Explicit business logic:** Define tasks as flows with reviewable steps,
  conditions, actions, and responses.
* **Conversation handling:** Use conversation patterns for corrections, topic
  changes, clarifications, and other behavior that occurs around a flow.
* **Backend and agent integrations:** Connect APIs through
  [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro)
  servers and connect other agents through the
  [Agent-to-Agent (A2A) protocol](https://a2a-protocol.org/latest/#what-is-a2a-protocol).
* **Custom components:** Extend the framework and inspect its source code when
  you need behavior beyond the built-in components.
* **Testing and observability:** Evaluate conversations before release, then use
  analytics and tracing to investigate production behavior.
* **Deployment control:** Run Rasa on your infrastructure and choose hosted or
  self-managed language models according to your security requirements.

## Who Rasa is for

Rasa is for developers who need to control agent behavior, integrations,
testing, and deployment through code. Teams can use it with
[Rasa Studio](/docs/studio/intro), the no-code interface for conversational AI
practitioners.

Rasa Developer Edition supports local and production use for up to 1,000
external conversations per month or 100 internal employee conversations per
month.

<DeveloperLicenseForm buttonLabel="Get a developer license" spaced />

## Start building

* [Build your first agent with the developer quickstart](/docs/learn/quickstart/pro).
* [Follow the Rasa tutorial to create a money-transfer agent](/docs/pro/tutorial).
* [Learn how CALM separates language understanding from business logic](/docs/learn/concepts/calm).


## Related topics

- [Introduction to the Rasa Platform](/docs/learn/platform-introduction.md)
- [Microsoft Bot Framework](/docs/reference/channels/microsoft-bot-framework.md)
- [Conversational AI with Language Models](/docs/learn/concepts/calm.md)
- [Get Started with Rasa](/docs/index.md)
- [Building a Conversational AI Team](/docs/learn/best-practices/conversational-ai-teams.md)
