> For the complete documentation index, see [llms.txt](https://dnotifier.gitbook.io/product-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dnotifier.gitbook.io/product-docs/getting-started/dashboard-overview.md).

# Dashboard overview

The DNotifier dashboard at [app.dnotifier.com](https://app.dnotifier.com) is your control center for apps, monitoring, and plan management. This page describes each major section conceptually so you know where to look as you build.

## Apps

The **Apps** section is where you create and manage DNotifier applications.

Each app represents one product or environment (for example, "Production Chat", "Staging AI Assistant"). Every app has:

* A unique **appId** — public identifier used in SDK configuration
* An **app secret** — private credential used during authentication
* Optional settings and metadata visible in the dashboard

You typically create at least two apps in production: one for production traffic and one for development or staging. Never share secrets between environments.

See [**Create an app**](/product-docs/getting-started/create-app.md) for the step-by-step flow.

## Logs

The **Logs** section shows AI session activity when you enable **`logs: true`** on the SDK constructor. Event types you may see include:

* AI session start and completion events
* Token usage summaries
* Model used for the call (`sendAI` / agent override, or project default)

Logs help you debug assistant behavior, audit usage, and correlate SDK calls with user sessions.

{% hint style="info" %}
**Logs ≠ AI history ≠ workflow steps.** Use `logs: true` for ops, `saveHistory` for product history, and `observability: true` for multi-agent graphs. See [Observability overview](/product-docs/observability/observability.md).
{% endhint %}

→ [How to enable session logs](/product-docs/observability/enable-session-logs.md)

## Workflows

The **Workflows** section visualizes multi-step AI pipelines that use DNotifier's workflow and agent APIs.

When you run a workflow with **`observability: true`**, the dashboard shows:

* Workflow name and description
* Individual execution runs (`executionId`)
* Steps inside each run (AI calls, searches, custom steps)
* Status (running, completed, failed) and timing
* Provider / model on AI steps when set

This is especially useful for intent routers, RAG pipelines, and multi-agent content workflows where you need to see what happened inside a single user request.

→ [How to enable AI workflow observability](/product-docs/observability/ai-workflow-observability.md)

## AI Studio → Providers

Open a project, then go to **AI Studio → Providers**. That’s where provider connections live — OpenAI keys, Anthropic, Gemini, Hugging Face, Perplexity, Azure endpoints, Bedrock creds, Ollama URLs, and subscription-backed options when your plan has them.

Path: **Projects** (pick the project) → **AI Studio** → **Providers** → (OpenAI, AWS Bedrock, …).

Once a connection is saved, code just passes `provider` and `model` on `sendAI`. Keep secrets out of the repo.

More detail: [multi-model docs](/product-docs/ai/multi-models.md).

## Usage

The **Usage** section tracks consumption against your plan:

* Message volume (realtime sends and related traffic)
* AI requests and word/token consumption
* Knowledge-base storage
* Active users or rows, depending on plan tier

Usage updates as your SDK connects and sends data. Check here regularly during development to avoid surprise limit errors in production.

## Plan & limits

The **Plan & limits** area (sometimes grouped under billing or settings) describes what your subscription allows:

| Limit type           | What it controls                                                 |
| -------------------- | ---------------------------------------------------------------- |
| Message hard limit   | Maximum messages per billing period                              |
| Message size         | Maximum payload size per message (also returned at connect time) |
| AI enabled           | Whether `sendAI` and related APIs are available                  |
| AI requests / words  | Monthly AI call and word quotas                                  |
| Knowledge base words | Total indexed content capacity                                   |
| Max users / rows     | User or data-row caps per app                                    |

When your SDK calls `connect()`, many of these limits are returned in the auth response and exposed via `getPlanLimits()` in JavaScript and Dart. The dashboard is the source of truth for billing; the SDK mirrors limits for runtime checks.

## How the sections work together

```
┌─────────────┐     credentials      ┌──────────────┐
│    Apps     │ ──────────────────►  │  Your code   │
└─────────────┘                      │  (SDK)       │
       │                             └──────┬───────┘
       │                                    │
       ▼                                    ▼
┌─────────────┐                      ┌──────────────┐
│ Plan limits │ ◄── auth at connect  │  Realtime,   │
└─────────────┘                      │  AI, flows   │
       ▲                             └──────┬───────┘
       │                                    │
┌──────┴──────┐     observability     ┌─────▼────────┐
│   Usage     │ ◄──────────────────── │ Logs &       │
└─────────────┘                       │ Workflows    │
                                      └──────────────┘
```

1. You create an **app** and copy credentials into your project.
2. The SDK **connects** and receives **plan limits**.
3. Your app sends messages, AI requests, or runs workflows.
4. **Usage** increments; **Logs** and **Workflows** capture optional telemetry.

## Next steps

* [**Create an app**](/product-docs/getting-started/create-app.md) — Generate credentials for your first app
* [**Credentials & environment**](/product-docs/getting-started/credentials.md) — Store `appId`, `secret`, and `userId` safely
* [**Install an SDK**](/product-docs/getting-started/installation.md) — Add DNotifier to your project
