NOTICE: This is in Preview mode, we are fine tuning the interactions and bugs that arise. Please file issues or submit PRs. Thank you for your early interest!
A Go-based command-line wrapper for easy interaction with Datadog APIs.
- Native Go Implementation: Fast, cross-platform binary
- OAuth2 Authentication: Secure browser-based login with PKCE protection
- API Key Support: Traditional API key authentication still available
- Simple Commands: Intuitive CLI for common Datadog operations
- JSON Output: Structured output for easy parsing and automation
- Dynamic Client Registration: Each installation gets unique OAuth credentials
Pup implements 38 of 85+ available Datadog APIs (44.7% coverage).
See docs/COMMANDS.md for detailed command reference.
💡 Tip: Use Ctrl/Cmd+F to search for specific APIs. Request features via GitHub Issues.
📊 Core Observability (6/9 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Metrics | ✅ | metrics search, metrics query, metrics list, metrics get |
V1 and V2 APIs supported |
| Logs | ✅ | logs search, logs list, logs aggregate |
V1 and V2 APIs supported |
| Events | ✅ | events list, events search, events get |
Infrastructure event management |
| RUM | ✅ | rum apps, rum sessions, rum metrics list/get, rum retention-filters list/get |
Apps, sessions, metrics, retention filters (create/update pending) |
| APM Services | ✅ | apm services, apm entities, apm dependencies, apm flow-map |
Services stats, operations, resources; entity queries; dependencies; flow visualization |
| Traces | ❌ | - | Not yet implemented |
| Profiling | ❌ | - | Not yet implemented |
| Session Replay | ❌ | - | Not yet implemented |
| Spans Metrics | ❌ | - | Not yet implemented |
🔔 Monitoring & Alerting (6/9 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Monitors | ✅ | monitors list, monitors get, monitors delete, monitors search |
Full CRUD support with advanced search |
| Dashboards | ✅ | dashboards list, dashboards get, dashboards delete, dashboards url |
Full management capabilities |
| SLOs | ✅ | slos list, slos get, slos create, slos update, slos delete, slos corrections |
Full CRUD plus corrections |
| Synthetics | ✅ | synthetics tests list, synthetics locations list |
Test management support |
| Downtimes | ✅ | downtime list, downtime get, downtime cancel |
Full downtime management |
| Notebooks | ✅ | notebooks list, notebooks get, notebooks delete |
Investigation notebooks supported |
| Dashboard Lists | ❌ | - | Not yet implemented |
| Powerpacks | ❌ | - | Not yet implemented |
| Workflow Automation | ❌ | - | Not yet implemented |
🔒 Security & Compliance (6/9 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Security Monitoring | ✅ | security rules list, security signals list, security findings search |
Rules, signals, findings with advanced search |
| Static Analysis | ✅ | static-analysis ast, static-analysis custom-rulesets, static-analysis sca, static-analysis coverage |
Code security analysis |
| Audit Logs | ✅ | audit-logs list, audit-logs search |
Full audit log search and listing |
| Data Governance | ✅ | data-governance scanner-rules list |
Sensitive data scanner rules |
| Application Security | ❌ | - | Not yet implemented |
| CSM Threats | ❌ | - | Not yet implemented |
| Cloud Security (CSPM) | ❌ | - | Not yet implemented |
| Sensitive Data Scanner | ❌ | - | Not yet implemented |
☁️ Infrastructure & Cloud (6/8 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Infrastructure | ✅ | infrastructure hosts list, infrastructure hosts get |
Host inventory management |
| Tags | ✅ | tags list, tags get, tags add, tags update, tags delete |
Host tag operations |
| Network | ⏳ | network flows list, network devices list |
Placeholder - API endpoints pending |
| Cloud (AWS) | ✅ | cloud aws list |
AWS integration management |
| Cloud (GCP) | ✅ | cloud gcp list |
GCP integration management |
| Cloud (Azure) | ✅ | cloud azure list |
Azure integration management |
| Containers | ❌ | - | Not yet implemented |
| Processes | ❌ | - | Not yet implemented |
🚨 Incident & Operations (6/7 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Incidents | ✅ | incidents list, incidents get, incidents attachments |
Incident management with attachment support |
| On-Call (Teams) | ✅ | on-call teams (CRUD, memberships with roles) |
Full team management system with admin/member roles |
| Case Management | ✅ | cases (create, search, assign, archive, projects) |
Complete case management with priorities P1-P5 |
| Error Tracking | ✅ | error-tracking issues search, error-tracking issues get |
Error issue search and details |
| Service Catalog | ✅ | service-catalog list, service-catalog get |
Service registry management |
| Scorecards | ✅ | scorecards list, scorecards get |
Service quality scores |
| Incident Services/Teams | ❌ | - | Not yet implemented |
🔧 CI/CD & Development (1/3 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| CI Visibility | ✅ | cicd pipelines list, cicd events list |
CI/CD pipeline visibility and events |
| Test Optimization | ❌ | - | Not yet implemented |
| DORA Metrics | ❌ | - | Not yet implemented |
👥 Organization & Access (5/6 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Users | ✅ | users list, users get, users roles |
User and role management |
| Organizations | ✅ | organizations get, organizations list |
Organization settings management |
| API Keys | ✅ | api-keys list, api-keys get, api-keys create, api-keys delete |
Full API key CRUD |
| App Keys | ✅ | app-keys list, app-keys get, app-keys register, app-keys unregister |
App key registration for Action Connections |
| Service Accounts | ✅ | - | Managed via users commands |
| Roles | ❌ | - | Only list via users |
⚙️ Platform & Configuration (7/9 implemented)
| API Domain | Status | Pup Commands | Notes |
|---|---|---|---|
| Usage Metering | ✅ | usage summary, usage hourly |
Usage and billing metrics |
| Cost Management | ✅ | cost projected, cost attribution, cost by-org |
Cost attribution by tags and organizations |
| Product Analytics | ✅ | product-analytics events send |
Server-side product analytics events |
| Integrations | ✅ | integrations slack, integrations pagerduty, integrations webhooks |
Third-party integrations support |
| Observability Pipelines | ⏳ | obs-pipelines list, obs-pipelines get |
Placeholder - API endpoints pending |
| Miscellaneous | ✅ | misc ip-ranges, misc status |
IP ranges and status |
| Key Management | ❌ | - | Not yet implemented |
| IP Allowlist | ❌ | - | Not yet implemented |
brew tap datadog/pack
brew install datadog/pack/pupgo install github.com/DataDog/pup@latestDownload pre-built binaries from the latest release.
Pup supports two authentication methods. OAuth2 is preferred and will be used automatically if you've logged in.
OAuth2 provides secure, browser-based authentication with automatic token refresh.
# Set your Datadog site (optional)
export DD_SITE="datadoghq.com" # Defaults to datadoghq.com
# Login via browser
pup auth login
# Use any command - OAuth tokens are used automatically
pup monitors list
# Check status
pup auth status
# Logout
pup auth logoutToken Storage: Tokens are stored securely in your system's keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service). Set DD_TOKEN_STORAGE=file to use file-based storage instead.
Note: OAuth2 requires Dynamic Client Registration (DCR) to be enabled on your Datadog site. If DCR is not available yet, use API key authentication.
See docs/OAUTH2.md for detailed OAuth2 documentation.
If OAuth2 tokens are not available, Pup automatically falls back to API key authentication.
export DD_API_KEY="your-datadog-api-key"
export DD_APP_KEY="your-datadog-application-key"
export DD_SITE="datadoghq.com" # Optional, defaults to datadoghq.com
# Use any command - API keys are used automatically
pup monitors listPup checks for authentication in this order:
- OAuth2 tokens (from
pup auth login) - Used if valid tokens exist - API keys (from
DD_API_KEYandDD_APP_KEY) - Used if OAuth tokens not available
# OAuth2 login (recommended)
pup auth login
# Check authentication status
pup auth status
# Refresh access token
pup auth refresh
# Logout
pup auth logoutpup test# List all monitors
pup monitors list
# Get specific monitor
pup monitors get 12345678
# Delete monitor
pup monitors delete 12345678 --yes# Search metrics using classic query syntax (v1 API)
pup metrics search --query="avg:system.cpu.user{*}" --from="1h"
# Query time-series data (v2 API)
pup metrics query --query="avg:system.cpu.user{*}" --from="1h"
# List available metrics
pup metrics list --filter="system.*"# List all dashboards
pup dashboards list
# Get dashboard details
pup dashboards get abc-123-def
# Delete dashboard
pup dashboards delete abc-123-def --yes# List all SLOs
pup slos list
# Get SLO details
pup slos get abc-123
# Delete SLO
pup slos delete abc-123 --yes# List all incidents
pup incidents list
# Get incident details
pup incidents get abc-123-def-o, --output: Output format (json, table, yaml) - default: json-y, --yes: Skip confirmation prompts for destructive operations
DD_API_KEY: Datadog API key (optional if using OAuth2)DD_APP_KEY: Datadog Application key (optional if using OAuth2)DD_SITE: Datadog site (default: datadoghq.com)DD_AUTO_APPROVE: Auto-approve destructive operations (true/false)DD_TOKEN_STORAGE: Token storage backend (keychain or file, default: auto-detect)
# Run tests
go test ./...
# Build
go build -o pup .
# Run without building
go run main.go monitors listApache License 2.0 - see LICENSE for details.
For detailed documentation, see CLAUDE.md.