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

# Quickstart

> Connect your first AI agent to muster — and learn why the quality checks you'll write are worth having regardless.

## 1. Sign up

Go to [app.getmuster.io](https://app.getmuster.io) and create your account. Your 14-day free trial starts immediately — no credit card required.

## 2. Add your agent

From the dashboard, click **Add Agent** and fill in:

* **Name** — e.g. `invoice-processor-v2`
* **Framework** — LangChain, LangGraph, n8n, etc.
* **Owner email** and **Department**

muster assigns a risk score automatically based on what your agent does.

## 3. Connect your agent

Choose the path that fits your agent:

**Option A — OTel (recommended for coded agents):**
Set three env vars and Muster receives traces, infers quality checks, and tracks costs automatically.

```bash theme={null}
OTEL_EXPORTER_OTLP_ENDPOINT=https://backend.getmuster.io/api/v1/otel
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer <your-jwt>
OTEL_EXPORTER_OTLP_PROTOCOL=http/json
```

**Option B — Platform connector (for n8n, Flowise, Dify):**
Elitery deploys a connector that monitors your flows automatically. No action needed from you.

**Option C — SDK / precise checks (for Finance, Compliance, Legal agents):**
Install `muster-sdk` to run exact business-rule checks against each output.

```python theme={null}
from muster_sdk import MusterAgent
agent = MusterAgent(agent_id="invoice-processor-v2", muster_url="...", token="...")

@agent.govern(required_fields=["vendor_name", "total"])
async def process_invoice(input_data): ...
```

Or send a plain HTTP signal if you prefer no library:

## 4. Send a quality signal (Option C / plain HTTP)

<Note>
  Send signals to your **backend URL**, not the dashboard URL.

  * **Trial / shared instance:** `https://backend.getmuster.io`
  * **Your dedicated instance:** You'll receive your own URL from Elitery (e.g. `https://backend.yourcompany.getmuster.io`)

  The URL is also shown in your dashboard → **Onboarding** page.
</Note>

If using Option C (plain HTTP), add this after your agent runs. No library required.

<CodeGroup>
  ```python Python theme={null}
  import httpx, threading, time

  def muster_emit(job_id, checks, token_input=None, token_output=None, model=None, latency_ms=None):
      """Fire-and-forget. One call covers correctness + cost + latency."""
      def _send():
          try:
              httpx.post(
                  f"https://backend.getmuster.io/api/v1/jobs/{job_id}/quality",
                  json={
                      "agent_id": "invoice-processor-v2",
                      "job_id": job_id,
                      "overall_passed": all(c["passed"] for c in checks),
                      "checks": checks,
                      "token_input": token_input,   # → cost tracking
                      "token_output": token_output,
                      "model": model,
                      "latency_ms": latency_ms,     # → SLA monitoring
                  },
                  timeout=2.0,
              )
          except Exception:
              pass  # never block your agent
      threading.Thread(target=_send, daemon=True).start()

  # Call after your agent finishes each job
  start = time.time()
  output = your_agent.run(input)  # your existing code

  muster_emit(
      job_id=job_id,
      checks=[
          {"check_id": "output_not_empty",    "severity": "HIGH", "passed": bool(output)},
          {"check_id": "subtotal_arithmetic", "severity": "HIGH",
           "passed": abs(computed - declared) < 0.01,
           "expected": str(declared), "actual": str(computed)},
      ],
      token_input=output.usage.prompt_tokens,      # from your LLM response
      token_output=output.usage.completion_tokens,
      model="gpt-4o",
      latency_ms=int((time.time() - start) * 1000),
  )
  ```

  ```bash cURL theme={null}
  curl -X POST https://app.getmuster.io/api/v1/jobs/job-001/quality \
    -H "Content-Type: application/json" \
    -d '{
      "agent_id": "invoice-processor-v2",
      "job_id": "job-001",
      "overall_passed": true,
      "checks": [
        {"check_id": "output_not_empty", "severity": "HIGH", "passed": true},
        {"check_id": "subtotal_arithmetic", "severity": "HIGH", "passed": true,
         "expected": "1234.56", "actual": "1234.56"}
      ]
    }'
  ```

  ```javascript Node.js theme={null}
  // Fire and forget
  fetch(`https://backend.getmuster.io/api/v1/jobs/${jobId}/quality`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      agent_id: "invoice-processor-v2",
      job_id: jobId,
      overall_passed: true,
      checks: [
        { check_id: "output_not_empty", severity: "HIGH", passed: !!output },
      ],
    }),
  }).catch(() => {}); // never fail
  ```
</CodeGroup>

## 5. View your data

Head to the **Health Heatmap** in your dashboard. Within minutes of your first signal you'll see:

* Pass rate per check (e.g. `subtotal_arithmetic: 94%`)
* Trend direction — Stable / Degrading / Improving
* Cost data if you included `token_input` / `token_output`

<Note>
  The quality endpoint requires no authentication. Rate limit: 1,000 requests/minute per agent.
</Note>

## What to check

Pick checks that reflect your agent's actual job. A few starting points:

| Agent type      | Good first checks                                                    |
| --------------- | -------------------------------------------------------------------- |
| Data extraction | `output_not_empty`, `required_fields_present`, `subtotal_arithmetic` |
| Classification  | `decision_is_valid_enum`, `decision_has_rationale`                   |
| Document review | `clause_identification`, `risk_flag_present`                         |
| Any agent       | `output_not_empty`, `latency_within_sla`                             |

See the full [check ID reference](/sdk/python#recommended-check-ids) for more.

## Next steps

<CardGroup cols={2}>
  <Card title="OTel integration" icon="broadcast-tower" href="/connectors/otel">
    3 env vars — works with LangChain, CrewAI, or any custom agent.
  </Card>

  <Card title="Platform connectors" icon="plug" href="/connectors/overview">
    Elitery-managed connectors for n8n, Flowise, Bedrock, and more.
  </Card>

  <Card title="SDK guide" icon="code" href="/sdk/overview">
    Precise business-rule checks for Finance, Compliance, and Legal agents.
  </Card>

  <Card title="Quality checks concept" icon="chart-line" href="/concepts/quality-checks">
    How muster tracks trends and detects degradation.
  </Card>
</CardGroup>
