Documentation Index
Fetch the complete documentation index at: https://docs.usedino.dev/llms.txt
Use this file to discover all available pages before exploring further.
.dino.yml
Dino is configured through a.dino.yml file in your project root. Run dino init to generate one interactively, or create it manually.
For REST (OpenAPI) APIs, discovery and routing live in a tenant file under tenants/<id>.yml. Point the CLI at that tenant with tenant: in .dino.yml or dino scan --tenant <id>.
Minimal config (GraphQL, ad-hoc)
Minimal pointer (REST, tenant mode)
tenants/my-api.yml (see below), then:
Full reference (.dino.yml)
| Field | Type | Default | Description |
|---|---|---|---|
endpoint | URL | — | GraphQL endpoint URL for ad-hoc scans (tenant unset). |
protocol | "graphql" | "graphql" | Ad-hoc CLI config: GraphQL only. REST is not selected here — use tenant apis[].type: rest and OpenAPI discovery instead. |
format | "json" | "markdown" | "json" | Output format for scan results. |
tenant | string | — | Tenant ID. Loads config from tenants/<id>.yml. Required for multi-environment, auth, and REST/OpenAPI setups. |
environment | string | — | Target environment (e.g., staging, production). |
snapshotDir | string | ".dino/snapshots" | Directory for schema snapshots used by diff, lint, changelog. |
aiKey | string | — | Anthropic API key for AI reasoning. Prefer the DINO_AI_KEY env var instead. |
auth.enabled | boolean | false | Enable authenticated scans. Required for RBAC matrix when your tenant uses auth. |
auth.role | string | — | Default auth role for scans (e.g., USER, ADMIN). |
autonomy.level | "observe" | "enforce" | "observe" | Shadow Mode level for dino watch. |
rateLimit.burst | integer (1–500) | Tier default | Burst size for rate limit testing. |
REST APIs — tenants/<id>.yml
Define each API under apis[]. The discovery plugin routes on type (graphql vs rest) and source (introspection vs openapi).
apis[] fields
| Field | Type | Description |
|---|---|---|
name | string | API identifier (must match a key under environments.<env>.endpoints) |
type | "graphql" or "rest" | Protocol |
source | "introspection" or "openapi" | Discovery method |
specPath | string | URL or repo-relative path to the OpenAPI document (REST / openapi only) |
JSON Schema
The# yaml-language-server comment at the top of your config file enables IDE autocomplete if you use the YAML extension in VS Code.
dino init adds this comment automatically.
Config file search order
Dino uses cosmiconfig to find your config. It searches in this order:.dino.ymlor.dino.yaml.dinorc(JSON or YAML).dinorc.json,.dinorc.yaml,.dinorc.ymlpackage.json→"dino"key
Precedence
When the same setting is defined in multiple places:--format markdown overrides format: json in your config file.
Smart defaults
If you omit fields, Dino applies sensible defaults:- All shipped pipeline modules enabled (RBAC matrix auto-skips when auth is not configured;
rest-fuzzerruns when REST operations are discovered) - Pipeline timeout: 300 seconds
- Per-request timeout: 30 seconds
- Snapshot dir:
.dino/snapshots - Watch interval: 60 seconds
- Watch autonomy:
observe(safe default — never blocks CI unless you opt in)
Examples
Ad-hoc scan (GraphQL, no tenant)
Authenticated scan with RBAC testing
REST scan (tenant)
tenants/acme-rest.yml defines apis[].type: rest and specPath. Then:
CI/CD with enforce mode
See the Installation guide for setting
DINO_AI_KEY and DINO_API_TOKEN without putting secrets in your config file.