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

# Developer tools

> API metrics, API keys, webhooks, the Salesforce connector, request logs, and a browser shell — all in one drawer, scoped to a Business Unit.

**Developer tools** is a drawer in the console header — the terminal icon next to the notification bell. It opens over the current page. Closing it (Esc, the close button, or a click outside) leaves the page unchanged.

Everything in the drawer belongs to **one Business Unit**. The selector next to the drawer title sets which unit: it follows the unit currently open in the console, defaults to the first unit on organization pages, and can be changed inside the drawer without navigating. An organization with no Business Unit sees an empty drawer.

## Who can open it

The drawer is for organization **Owners and Admins** — the same people who can issue [API keys](/en/developers/api-keys). Metrics, keys, logs, and the shell require key-management permission. Webhooks and CRM require permission to send a unit's data to another system. Other roles do not see the drawer's contents.

The [command-line tool](/en/developers/cli) and the [MCP server](/en/agent/tools) cover the same work from a terminal or an agent.

## Metrics

Charts of [Developer API](/en/developers/overview) traffic for the selected unit over the **last 24 hours, 7 days, or 30 days**. Each card shows a headline number and a chart:

* **API requests** — total requests, with succeeded and failed stacked per bucket.
* **Error distribution** — total errors by status class (4xx, 5xx). A window with no errors states that instead of drawing an empty chart.
* **Response time** — the request-weighted average, with **average** and **p95** lines over time.

The time axis is always **48 buckets** that divide the window evenly (30 minutes each over 24 hours, 3.5 hours over 7 days, 15 hours over 30 days). Changing the range changes the labels, not the number of buckets. "Updated …" below the grid is when the numbers were fetched.

## API keys

Generate and revoke secret keys, and create publishable keys with allowed origins. Keys are managed only in this tab; there is no sidebar page. After generating a secret key, **Save in 1Password** appears next to **Copy** in browsers with the 1Password extension. Full rules are on [API keys](/en/developers/api-keys).

## Webhooks

Register endpoints, choose events, read the signing secret, send a test, and inspect or resend deliveries. See [Webhooks](/en/developers/webhooks).

## CRM

Connect the unit to Salesforce and review sync status. See [Salesforce](/en/developers/salesforce).

## Logs

Every request the Developer API served with one of this unit's keys, newest first, 25 per page, with **Previous / Next** paging. Requests that failed authentication cannot be attributed to a unit and are not logged.

The filter bar narrows the list on the server — **status class** (2xx–5xx), **method**, **API key**, and **path contains**. Changing a filter returns to page one.

Selecting a row opens its detail: method and path, status, **request ID**, time, duration, **IP address**, **API version**, **user agent**, the key used, and the captured **response body** and **request body**, shown as formatted JSON with a copy button.

<Note>
  Bodies are captured selectively. Only **write requests and error responses** keep them — a routine `GET` shows "Not captured for this request." Each side is truncated at **16 KB**. Sign-in related paths (`/auth/…`) are stored as `[redacted]`, so codes and tokens are not written to the log.
</Note>

## Shell

A browser terminal: an isolated Linux sandbox with the **orriven CLI already signed in and scoped to the selected Business Unit**, plus `curl`, `jq`, `node`, and `python3`. No local install and no `orriven login`.

* The tab does not start on its own — choose **Start shell**. The first start of the day can take a few seconds.
* Changing the drawer's Business Unit switches to that unit's session. The home directory is shared across sessions.
* An idle shell sleeps after **10 minutes**. A session lasts at most **12 hours**. **End session** revokes the shell's sign-in and closes the terminal. Shell sessions also appear on the account page, where they can be revoked.
* Closing the drawer and reopening it reconnects to the same session with its previous output.
* A deployment without a shell service shows "Shell is not enabled in this environment". The other tabs are unaffected.

## Rules

* **One drawer, one Business Unit at a time.** The selector in the title is the drawer's scope, not the console's.
* **Owner/Admin only.** The drawer's tabs use the same authority as issuing a key.
* **Logs and bodies are readable only by people who could read the same data with a key.**
* **The drawer is not a page.** It does not change the current location in the console.

## Related

<CardGroup cols={2}>
  <Card title="API keys" icon="key" href="/en/developers/api-keys">
    Secret and publishable keys, generated in the drawer.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/en/developers/webhooks">
    Endpoints, signatures, retries, and the delivery log.
  </Card>

  <Card title="Command-line tool" icon="square-terminal" href="/en/developers/cli">
    The same work from a terminal.
  </Card>

  <Card title="Members & roles" icon="users" href="/en/organization/members-roles">
    Why the drawer is Owner/Admin only.
  </Card>
</CardGroup>
