puppy-kit
Datadog CLI for AI-driven incident management.
A modern CLI for the Datadog API with 18 command groups, Rich terminal output, retry logic, and an optional MCP server that lets AI agents detect, triage, and resolve incidents autonomously.
Features
- 18 command groups covering monitors, incidents, logs, APM, dashboards, and more
- Rich terminal output with tables, colors, and progress indicators
- Optional MCP server exposing Datadog operations as tools for AI agents
- Retry logic with exponential backoff on rate limits and server errors
- Region shortcuts (us, eu, us3, us5, ap1, gov)
- Watch mode, stdin piping, and JSON export
--verboseflag for full output on logs, APM, and LLM commands- Structured JSON envelope with
--format json:{data, count, hint}
Installation
pip install puppy-kit
With uv:
uv tool install "puppy-kit[mcp]"
With MCP server support:
pip install puppy-kit[mcp]
Configuration
Getting Your Credentials
Before using puppy-kit, you need two API keys from Datadog:
-
DD_API_KEY— Your organization's API key. Found in Datadog at Organization Settings > API Keys. This key is scoped to your organization and used for sending and reading data (metrics, logs, events, etc.). -
DD_APP_KEY— Your personal application key. Found in Datadog at Organization Settings > Application Keys. This key is scoped to your user account and is required for management operations such as creating/updating monitors, dashboards, logs queries, and other admin tasks. Granting all scopes is recommended for personal use.
Important: Both keys are required for most puppy commands. Without DD_APP_KEY, you will receive a 403 Unauthorized error on most read and write operations.
To locate these in the Datadog UI:
- Log in to Datadog
- Click your user icon (bottom left) → Organization Settings
- Select API Keys or Application Keys from the left sidebar
- Copy the key or generate a new one
Environment Variables
export DD_API_KEY="your-api-key"
export DD_APP_KEY="your-app-key"
export DD_SITE="us" # optional, defaults to datadoghq.com
Note: DD_SITE is a shortcut (see Region Shortcuts below). For example, use us5 to point to us5.datadoghq.com.
Interactive Setup
puppy config init
This command prompts you interactively for your DD_API_KEY, DD_APP_KEY, and optional DD_SITE, then creates ~/.puppy-kit/config.json with your credentials.
Validate Configuration
Test your setup:
puppy config test
This verifies that your credentials are valid and connected to Datadog.
Region Shortcuts
| Shortcut | Site |
|---|---|
us |
datadoghq.com |
eu |
datadoghq.eu |
us3 |
us3.datadoghq.com |
us5 |
us5.datadoghq.com |
ap1 |
ap1.datadoghq.com |
gov |
ddog-gov.com |
Verify Connectivity
After setting up your credentials, test the connection:
puppy config get # confirm keys are loaded
puppy monitor list # test authenticated read
If you see a 403 Unauthorized error, ensure both DD_API_KEY and DD_APP_KEY are set and have the correct values.
Quick Start
# Monitors
puppy monitor list --state Alert
puppy monitor get 12345
puppy monitor mute 12345
# Incidents
puppy incident list
puppy incident create --title "API latency spike" --severity SEV-2 --team engineering
puppy incident update abc123 --status resolved
# Logs
puppy logs search "status:error" --service my-api --from 30m
puppy logs tail "env:prod"
puppy logs search "status:error" --verbose # Full output
# APM
puppy apm services
puppy apm traces my-service --from 1h
puppy apm services --verbose # Full output
# Metrics
puppy metric query "avg:system.cpu.user{env:prod}" --from 1h
# Dashboards
puppy dashboard list
puppy dashboard get abc-def-123
# Watch mode (auto-refresh)
puppy monitor list --state Alert --watch 10
# JSON export
puppy monitor list --format json
Commands
| Command | Subcommands |
|---|---|
monitor / mon |
list, get, create, update, delete, mute, unmute, validate, mute-all, unmute-all |
incident |
list, get, create, update, delete, fields get, timeline list, todo, impact, attachment |
logs |
search, tail, query, trace |
apm |
services, traces, analytics |
metric |
query, search, metadata |
event |
list, get, post |
host |
list, get, totals |
dashboard / dash |
list, get, create, update, delete, export, clone |
downtime / dt |
list, get, create, update, delete, cancel-by-scope |
dbm |
hosts, queries, explain, samples |
tag |
list, add, replace, detach |
service-check / sc |
post |
user |
list, get, invite, disable |
usage |
summary, hosts, logs, top-avg-metrics |
rum |
events, analytics |
ci |
pipelines, tests, pipeline-details |
cost |
summary, mom |
llm |
traces, projects, datasets, experiments, records |
config |
init, get, test |
All commands support --format json for structured output with {data, count, hint} envelope.
MCP Server
puppy-kit includes an optional Model Context Protocol server that exposes Datadog operations as tools for AI agents.
Setup
Install with MCP support:
pip install "puppy-kit[mcp]"
# or
uv tool install "puppy-kit[mcp]"
Available Tools
| Tool | Description |
|---|---|
dd_monitors_list |
List monitors with optional tag filtering |
dd_monitors_get |
Get full monitor config and current state |
dd_incidents_list |
List incidents — primary triage tool |
dd_incidents_get |
Get incident details, fields, and timeline |
dd_incidents_create |
Create a new incident |
dd_incidents_update |
Update status, severity, fields, and custom workflow data |
dd_incidents_get_fields |
Get custom field values for an incident |
dd_incidents_get_timeline |
Get full incident timeline |
dd_incidents_delete |
Delete an erroneous incident record |
dd_downtimes_list |
List active and scheduled downtimes |
dd_downtimes_cancel |
Cancel an active downtime |
dd_logs_search |
Search logs using Datadog query syntax |
dd_metrics_query |
Query metrics over a time range |
dd_events_search |
List events (deploys, restarts, config changes) |
dd_dashboards_list |
List all dashboards |
dd_dashboards_get |
Get dashboard details |
Claude Code Integration
Add to your Claude Code MCP config (~/.claude/settings.json or project .claude/settings.json):
{
"mcpServers": {
"puppy-kit": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "puppy-kit[mcp]", "puppy-mcp"]
}
}
}
Credentials are read from your active puppy-kit profile (puppy config init) or from environment variables:
{
"mcpServers": {
"puppy-kit": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "puppy-kit[mcp]", "puppy-mcp"],
"env": {
"DD_API_KEY": "your-api-key",
"DD_APP_KEY": "your-app-key",
"DD_SITE": "us5"
}
}
}
}
Development
# Clone and install
git clone https://github.com/WrenchAI/puppy-kit.git
cd puppy-kit
uv sync --all-extras
# Run tests
uv run pytest tests/ -v
uv run pytest tests/test_e2e_mcp.py -v # live e2e tests (requires credentials)
# Lint and format
uv run ruff check puppy_kit/ tests/
uv run ruff format puppy_kit/ tests/
# Run CLI in development
uv run puppy --help
License
Release files for puppy-kit 0.9.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| puppy_kit-0.9.14.tar.gz | 249.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| puppy_kit-0.9.14-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 334.0 kB
Release files / puppy_kit-0.9.14.tar.gz
| Download URL | puppy_kit-0.9.14.tar.gz |
|---|---|
| Size | 249.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c7a843823a66dddfece99da4cda6684a8981484f740454e44f2d79d21892178
|
|
BLAKE2b-256 checksum How to use checksums |
d6783ffed4704b54d1b8995779bedd386b680864b0c6ac4695bb5bbd6fba7445
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.
Transparency logRelease files / puppy_kit-0.9.14-py3-none-any.whl
| Download URL | puppy_kit-0.9.14-py3-none-any.whl |
|---|---|
| Size | 84.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89c1f282d85efa52ff7d64924eec63258c478c48ad4c0caaf246d7821c8a6e3d
|
|
BLAKE2b-256 checksum How to use checksums |
1ab66492c9d425002da9a1e6bc44cfa0810bade027e786d868d4288c356c22c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.
Transparency log