[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11224":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},11224,"pup","DataDog\u002Fpup","DataDog","Give your AI agent a Pup — a CLI companion with 200+ commands across 33+ Datadog products.",null,"https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup","Rust",876,85,3,6,0,16,35,110,48,9.8,false,"main",[25,26,27,28],"cli","client","datadog","observability","2026-06-12 02:02:30","# :dog2: Give Your Agent a Puppy: Introducing Pup CLI\n\n**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!**\n\n[![CI](https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frust-stable-orange?logo=rust)](https:\u002F\u002Fwww.rust-lang.org\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue.svg)](LICENSE)\n\nEvery AI agent needs a loyal companion. Meet Pup — the CLI that gives your agents full access to Datadog's observability platform (because even autonomous agents need good tooling, not just tricks).\n\n## What is Pup?\n\nA comprehensive, AI-agent-ready CLI covering a wide range of Datadog product domains. We've unleashed the full power of Datadog's APIs so your agents can fetch metrics, sniff out errors, and track down issues without barking up the wrong API tree.\n\nAI agents are the fastest-growing interface for infrastructure management. Companies like Vercel and AWS are racing to make their platforms agent-accessible, but we're leading the pack. Pup makes Datadog a great choice for AI-native workflows by exposing the API surface in a way agents can navigate without barking up the wrong tree.\n\n## Why Your Agent Will Love It\n\n- :paw_prints: **Well-trained**: Self-discoverable commands (no need to chase documentation)\n- :guide_dog: **Obedient**: Structured JSON\u002FYAML output for easy parsing\n- :service_dog: **On a leash**: OAuth2 + PKCE for scoped access (no more long-lived keys running wild)\n- :dog: **Knows all the tricks**: Monitors, logs, metrics, RUM, security and more!\n\n## Try It (Humans Welcome Too!)\n\n```bash\n# Give your agent credentials (house-training, basically)\npup auth login\n\n# Now they can fetch data like a good pup\npup monitors list --tags=\"team:api-platform\"         # Fetch monitors\npup logs search --query=\"status:error\" --from=\"1h\"   # Sniff out errors\npup metrics query --query=\"avg:system.cpu.user{*}\"   # Track the metrics tail\n```\n\n:dog: **TL;DR**: We built a comprehensive CLI so AI agents can use Datadog like a pro. Give your agent a pup. They're housetrained, loyal, and know way more tricks than you'd expect.\n\n*P.S. No actual puppies were harmed in the making of this CLI. Just a lot of Rust code and API endpoints.*\n\n## API Coverage\n\nPup covers most major Datadog product surfaces. See\n[docs\u002FCOMMANDS.md](docs\u002FCOMMANDS.md) for the canonical command reference, or run\n`pup --help` (or `pup agent schema` for machine-readable output) for the live\nlist of commands as built.\n\n💡 **Tip:** Use Ctrl\u002FCmd+F to search for specific APIs. [Request features via GitHub Issues](https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup\u002Fissues).\n\n---\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📊 Core Observability\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Metrics | ✅ | `metrics search`, `metrics query`, `metrics list`, `metrics get` | V1 and V2 APIs supported |\n| Logs | ✅ | `logs search`, `logs list`, `logs aggregate` | V1 and V2 APIs supported |\n| Events | ✅ | `events list`, `events search`, `events get` | Infrastructure event management |\n| RUM | ✅ | `rum apps`, `rum sessions`, `rum metrics`, `rum retention-filters`, `rum playlists`, `rum heatmaps` | Apps, sessions, metrics, retention filters, replay playlists, heatmaps |\n| APM Services | ✅ | `apm services`, `apm entities`, `apm dependencies`, `apm flow-map` | Services stats, operations, resources; entity queries; dependencies; flow visualization |\n| Traces | ✅ | `traces search`, `traces aggregate`, `traces metrics` | Span search\u002Faggregation and span-based metric definitions |\n| Profiling | ✅ | `profiling aggregate`, `profiling analytics`, `profiling timeline`, … | Continuous Profiler queries (requires API + App keys) |\n| Database Monitoring | ✅ | `dbm samples search` | DBM query sample search |\n| Session Replay | ❌ | - | Not yet implemented |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔔 Monitoring & Alerting\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Monitors | ✅ | `monitors list`, `monitors get`, `monitors delete`, `monitors search` | Full CRUD support with advanced search |\n| Dashboards | ✅ | `dashboards list`, `dashboards get`, `dashboards delete`, `dashboards url` | Full management capabilities |\n| SLOs | ✅ | `slos list`, `slos get`, `slos delete`, `slos status` | Full CRUD plus V2 status query |\n| Synthetics | ✅ | `synthetics tests`, `synthetics locations`, `synthetics suites` | Tests, locations, and V2 suites management |\n| Downtimes | ✅ | `downtime list`, `downtime get`, `downtime cancel` | Full downtime management |\n| Notebooks | ✅ | `notebooks list`, `notebooks get`, `notebooks delete` | Investigation notebooks supported |\n| Status Pages | ✅ | `status-pages pages`, `status-pages components`, `status-pages degradations` | **New** — Pages, components, and degradation management |\n| Powerpacks | ❌ | - | Not yet implemented |\n| Workflow Automation | ✅ | `workflows get`, `workflows create`, `workflows update`, `workflows delete`, `workflows run`, `workflows instances` | Full CRUD plus run and instance management (list, get, cancel) |\n| Local Runbooks | ✅ | `runbooks list`, `runbooks describe`, `runbooks run`, `runbooks import`, `runbooks validate` | **New** — YAML-defined multi-step runbooks with pup\u002Fshell\u002Fhttp\u002Fworkflow step types, variable interpolation, and reusable templates |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔒 Security & Compliance\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Security Monitoring | ✅ | `security rules`, `security signals`, `security findings`, `security content-packs`, `security risk-scores` | Rules, signals, findings, content packs, entity risk scores |\n| Cloud Security | ✅ | `security findings analyze`, `security findings schema` | DDSQL analytics for misconfigurations, identity risks, and all Cloud Security finding types |\n| Application Security | ✅ | `security findings analyze`, `security asm-custom-rules`, `security asm-exclusions` | API findings via DDSQL, WAF custom rules and exclusion filters |\n| Static Analysis | ✅ | `static-analysis ast`, `static-analysis custom-rulesets`, `static-analysis sca`, `static-analysis coverage` | Code security analysis |\n| Audit Logs | ✅ | `audit-logs list`, `audit-logs search` | Full audit log search and listing |\n| Data Governance | ✅ | `data-governance scanner-rules list` | Sensitive data scanner rules |\n| CSM Threats | ✅ | `csm-threats` | Cloud Security Management threat rules and agent rules |\n| Sensitive Data Scanner | ✅ | `data-governance scanner-rules list` | Listed via Data Governance row above |\n| Agentless Scanning | ✅ | `agentless-scanning aws list\u002Fget\u002Fcreate\u002Fupdate\u002Fdelete`, `agentless-scanning gcp list`, `agentless-scanning azure list` | Cloud agentless scanning configuration for AWS, GCP, and Azure |\n| Logs Restriction | ✅ | `logs-restriction list`, `logs-restriction get`, `logs-restriction create`, `logs-restriction update`, `logs-restriction delete` | Log restriction queries for fine-grained log access control |\n| Data Deletion | ✅ | `data-deletion requests list`, `data-deletion requests create`, `data-deletion requests cancel` | GDPR\u002Fcompliance data deletion request management |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>☁️ Infrastructure & Cloud\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Infrastructure | ✅ | `infrastructure hosts list`, `infrastructure hosts get` | Host inventory management |\n| Tags | ✅ | `tags list`, `tags get`, `tags add`, `tags update`, `tags delete` | Host tag operations |\n| Network | ✅ | `network flows list`, `network devices`, `network interfaces` | Network flows, device inventory, interface tags |\n| Cloud (AWS) | ✅ | `cloud aws list`, `cloud aws cloud-auth persona-mappings` | AWS integration management with persona mapping CRUD |\n| Cloud (GCP) | ✅ | `cloud gcp list` | GCP integration management |\n| Cloud (Azure) | ✅ | `cloud azure list` | Azure integration management |\n| Cloud (OCI) | ✅ | `cloud oci` | Oracle Cloud tenancy configs and products |\n| Containers | ✅ | `containers list`, `containers images list` | Containers |\n| Processes | ✅ | `processes list` | Process inventory query |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🚨 Incident & Operations\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Incidents | ✅ | `incidents list`, `incidents get`, `incidents attachments`, `incidents settings`, `incidents handles`, `incidents postmortem-templates` | Incident management with settings, handles, and postmortem templates |\n| On-Call (Teams) | ✅ | `on-call teams` (CRUD, memberships with roles) | Full team management system with admin\u002Fmember roles |\n| Case Management | ✅ | `cases` (create, search, assign, archive, projects, jira, servicenow, move) | Complete case management with Jira\u002FServiceNow linking |\n| Error Tracking | ✅ | `error-tracking issues search`, `error-tracking issues get` | Error issue search and details |\n| Service Catalog | ✅ | `service-catalog list`, `service-catalog get` | Service registry management |\n| Scorecards | ✅ | `scorecards list`, `scorecards get` | Service quality scores |\n| Fleet Automation | ✅ | `fleet agents`, `fleet deployments`, `fleet schedules` | Agent management, deployments, schedules (Preview) |\n| HAMR | ✅ | `hamr connections get`, `hamr connections create` | **New** — High Availability Multi-Region connections |\n| Investigations | ✅ | `investigations list`, `investigations get`, `investigations trigger` | Bits AI SRE investigation management |\n| Change Management | ✅ | `change-management create`, `change-management get`, `change-management update`, `change-management create-branch`, `change-management decisions` | Change request management with decisions and branching |\n| Incident Services\u002FTeams | ✅ | `incidents services`, `incidents teams` | Service and team CRUD scoped to incident management |\n| Live Debugger | ✅ | `debugger probes list`, `debugger probes get`, `debugger probes create`, `debugger probes delete`, `debugger probes watch` | Remote log probe management for Live Debugger |\n| Software Catalog | ✅ | `software-catalog entities list`, `software-catalog entities upsert`, `software-catalog kinds list`, `software-catalog relations list` | Software Catalog entity and kind management (next-gen catalog) |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔧 CI\u002FCD & Development\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| CI Visibility | ✅ | `cicd pipelines list`, `cicd events list` | CI\u002FCD pipeline visibility and events |\n| Test Optimization | ✅ | `cicd tests`, `cicd flaky-tests`, `test-optimization` | Test events, flaky test management, and Test Optimization API |\n| DORA Metrics | ✅ | `cicd dora` | DORA deployment patching |\n| Code Coverage | ✅ | `code-coverage branch-summary`, `code-coverage commit-summary` | Branch and commit-level coverage summaries |\n| Deployment Gates | ✅ | `deployment-gates gates`, `deployment-gates evaluations`, `deployment-gates rules` | Deployment gate CRUD, evaluation triggers, and rule management |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>👥 Organization & Access\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Users | ✅ | `users list`, `users get`, `users roles`, `users seats` | User and role management with seat assignment |\n| Organizations | ✅ | `organizations get`, `organizations list` | Organization settings management |\n| API Keys | ✅ | `api-keys list`, `api-keys get`, `api-keys create`, `api-keys delete` | Full API key CRUD |\n| App Keys | ✅ | `app-keys list`, `app-keys get`, `app-keys create`, `app-keys update`, `app-keys delete` | Full application key CRUD |\n| Service Accounts | ✅ | - | Managed via users commands |\n| Roles | ❌ | - | Only list via users |\n| AuthN Mappings | ✅ | `authn-mappings list`, `authn-mappings get`, `authn-mappings create`, `authn-mappings update`, `authn-mappings delete` | SAML\u002FIdP attribute-to-role authentication mappings |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>⚙️ Platform & Configuration\u003C\u002Fb>\u003C\u002Fsummary>\n\n| API Domain | Status | Pup Commands | Notes |\n|------------|--------|--------------|-------|\n| Usage Metering | ✅ | `usage summary`, `usage hourly` | Usage and billing metrics |\n| Cost Management | ✅ | `costs datadog projected`, `costs datadog attribution`, `costs datadog by-org`, `costs datadog aws-config`, `costs datadog azure-config`, `costs datadog gcp-config`, `costs ccm custom-costs`, `costs ccm tag-descriptions`, `costs ccm tag-metadata`, `costs ccm tags`, `costs ccm tag-keys`, `costs ccm budgets`, `costs ccm commitments` | Cost attribution, cloud cost configs (AWS\u002FAzure\u002FGCP), and Cloud Cost Management (custom costs, tag descriptions, budgets, commitment programs) |\n| Product Analytics | ✅ | `product-analytics events send`, `product-analytics query` | Server-side product analytics events and queries |\n| Integrations | ✅ | `integrations slack`, `integrations pagerduty`, `integrations webhooks`, `integrations jira`, `integrations servicenow`, `integrations google-chat`, `integrations ms-teams` | Third-party integrations including Jira, ServiceNow, Google Chat, and Microsoft Teams |\n| Feature Flags | ✅ | `feature-flags flags`, `feature-flags environments`, `feature-flags allocations`, `feature-flags exposure`, `feature-flags enable`, `feature-flags disable` | Feature flag management with environment, allocation, and exposure control |\n| Data Streams (Kafka) | ✅ | `kafka topic-configs`, `kafka broker-configs`, `kafka client-configs`, `kafka read-messages` | **Experimental** — Kafka cluster inspection via Datadog |\n| Restricted Datasets | ✅ | `datasets list`, `datasets get`, `datasets create`, `datasets update`, `datasets delete` | Restricted dataset management for data access control |\n| Observability Pipelines | ✅ | `obs-pipelines list`, `obs-pipelines get`, `obs-pipelines create`, `obs-pipelines update`, `obs-pipelines delete`, `obs-pipelines validate` | Full pipeline CRUD and validation |\n| LLM Observability | ✅ | `llm-obs projects`, `llm-obs experiments`, `llm-obs datasets` | **New** — LLM Obs projects, experiments, and dataset management |\n| Reference Tables | ✅ | `reference-tables list`, `reference-tables get`, `reference-tables create`, `reference-tables batch-query` | **New** — Reference table management for log enrichment |\n| Miscellaneous | ✅ | `misc ip-ranges`, `misc status` | IP ranges and status |\n| App Builder | ✅ | `app-builder list`, `app-builder get`, `app-builder create`, `app-builder update`, `app-builder delete`, `app-builder publish` | Low-code app management with publish\u002Funpublish and batch delete |\n| Key Management | ✅ | `api-keys`, `app-keys` | API key and application key CRUD (listed in Organization & Access above) |\n| IP Allowlist | ❌ | - | Not yet implemented |\n\n\u003C\u002Fdetails>\n\n## Installation\n\n### Homebrew (macOS\u002FLinux)\n\n```bash\nbrew tap datadog-labs\u002Fpack\nbrew install datadog-labs\u002Fpack\u002Fpup\n```\n\n### Build from Source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup.git && cd pup\ncargo build --release\ncp target\u002Frelease\u002Fpup \u002Fusr\u002Flocal\u002Fbin\u002Fpup\n```\n\n### Manual Download\n\nDownload pre-built binaries from the [latest release](https:\u002F\u002Fgithub.com\u002FDataDog\u002Fpup\u002Freleases\u002Flatest).\n\n## Authentication\n\nPup supports two authentication methods. **OAuth2 is preferred** and will be used automatically if you've logged in.\n\n### OAuth2 Authentication (Preferred)\n\nOAuth2 provides secure, browser-based authentication with automatic token refresh.\n\n```bash\n# Set your Datadog site (optional)\nexport DD_SITE=\"datadoghq.com\"  # Defaults to datadoghq.com\n\n# Login via browser\npup auth login\n\n# Use any command - OAuth tokens are used automatically\npup monitors list\n\n# Check status\npup auth status\n\n# Logout\npup auth logout\n```\n\n**Token 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.\n\n**Note**: OAuth2 requires Dynamic Client Registration (DCR) to be enabled on your Datadog site. If DCR is not available yet, use API key authentication.\n\nSee [docs\u002FOAUTH2.md](docs\u002FOAUTH2.md) for detailed OAuth2 documentation.\n\n### API Key Authentication (Fallback)\n\nIf OAuth2 tokens are not available, Pup automatically falls back to API key authentication.\n\n```bash\nexport DD_API_KEY=\"your-datadog-api-key\"\nexport DD_APP_KEY=\"your-datadog-application-key\"\nexport DD_SITE=\"datadoghq.com\"  # Optional, defaults to datadoghq.com\n\n# Use any command - API keys are used automatically\npup monitors list\n```\n\n### Bearer Token Authentication (WASM \u002F Headless)\n\nFor WASM builds or environments without keychain access, use a pre-obtained bearer token:\n\n```bash\nexport DD_ACCESS_TOKEN=\"your-oauth-access-token\"\nexport DD_SITE=\"datadoghq.com\"\n\npup monitors list\n```\n\nAPI key authentication (`DD_API_KEY` + `DD_APP_KEY`) also works in WASM. See the [WASM](#wasm) section below.\n\n### Authentication Priority\n\nPup checks for authentication in this order:\n1. **`DD_ACCESS_TOKEN`** - Stateless bearer token (highest priority)\n2. **OAuth2 tokens** (from `pup auth login`) - Used if valid tokens exist\n3. **API keys** (from `DD_API_KEY` and `DD_APP_KEY`) - Used if OAuth tokens not available\n\n## Usage\n\n### Authentication\n\n```bash\n# OAuth2 login (recommended)\npup auth login\n\n# Check authentication status\npup auth status\n\n# Refresh access token\npup auth refresh\n\n# Logout\npup auth logout\n```\n\n### Test Connection\n\n```bash\npup test\n```\n\n### Monitors\n\n```bash\n# List all monitors\npup monitors list\n\n# Get specific monitor\npup monitors get 12345678\n\n# Delete monitor\npup monitors delete 12345678 --yes\n```\n\n### Metrics\n\n```bash\n# Search metrics using classic query syntax (v1 API)\npup metrics search --query=\"avg:system.cpu.user{*}\" --from=\"1h\"\n\n# Query time-series data (v2 API)\npup metrics query --query=\"avg:system.cpu.user{*}\" --from=\"1h\"\n\n# List available metrics\npup metrics list --filter=\"system.*\"\n```\n\n### Dashboards\n\n```bash\n# List all dashboards\npup dashboards list\n\n# Get dashboard details\npup dashboards get abc-123-def\n\n# Print a live 1 week dashboard URL\npup dashboards url abc-123-def --from=now-1w --to=now --live=true\n\n# Delete dashboard\npup dashboards delete abc-123-def --yes\n```\n\n### SLOs\n\n```bash\n# List all SLOs\npup slos list\n\n# Get SLO details\npup slos get abc-123\n\n# Delete SLO\npup slos delete abc-123 --yes\n```\n\n### Incidents\n\n```bash\n# List all incidents\npup incidents list\n\n# Get incident details\npup incidents get abc-123-def\n```\n\n## Global Flags\n\n- `-o, --output`: Output format (json, table, yaml) - default: json\n- `-y, --yes`: Skip confirmation prompts for destructive operations\n\n## Environment Variables\n\n- `DD_ACCESS_TOKEN`: Bearer token for stateless auth (highest priority)\n- `DD_API_KEY`: Datadog API key (optional if using OAuth2 or DD_ACCESS_TOKEN)\n- `DD_APP_KEY`: Datadog Application key (optional if using OAuth2 or DD_ACCESS_TOKEN)\n- `DD_SITE`: Datadog site (default: datadoghq.com)\n- `DD_AUTO_APPROVE`: Auto-approve destructive operations (true\u002Ffalse)\n- `DD_TOKEN_STORAGE`: Token storage backend (keychain or file, default: auto-detect)\n\n## Agent Mode\n\nWhen pup is invoked by an AI coding agent, it automatically switches to **agent mode** which returns structured JSON responses optimized for machine consumption (including metadata, error details, and hints). Agent mode also auto-approves confirmation prompts.\n\nAgent mode is **auto-detected** when any of these environment variables are set to `1` or `true`:\n\n| Variable | Agent |\n|----------|-------|\n| `CLAUDE_CODE` or `CLAUDECODE` | Claude Code |\n| `CURSOR_AGENT` | Cursor |\n| `CODEX` or `OPENAI_CODEX` | OpenAI Codex |\n| `AIDER` | Aider |\n| `CLINE` | Cline |\n| `WINDSURF_AGENT` | Windsurf |\n| `GITHUB_COPILOT` | GitHub Copilot |\n| `AMAZON_Q` or `AWS_Q_DEVELOPER` | Amazon Q |\n| `GEMINI_CODE_ASSIST` | Gemini Code Assist |\n| `SRC_CODY` | Sourcegraph Cody |\n| `PI_CODING_AGENT` | pi.dev |\n| `FORCE_AGENT_MODE` | Any agent (manual override) |\n\nYou can also enable it explicitly with the `--agent` flag or by setting `FORCE_AGENT_MODE=1`:\n\n```bash\n# Auto-detected (e.g., running inside Claude Code)\npup monitors list\n\n# Explicit flag\npup monitors list --agent\n\n# Environment variable override\nFORCE_AGENT_MODE=1 pup monitors list\n```\n\nIf you are integrating pup into an AI agent workflow, make sure the appropriate environment variable is set so responses are optimized for your agent. Without it, pup defaults to human-friendly output.\n\n## WASM\n\nPup compiles to WebAssembly via the `wasm32-wasip2` target for use in WASI-compatible runtimes such as Wasmtime, Wasmer, and Cloudflare Workers.\n\n### Building\n\n```bash\n# Install the WASI target\nrustup target add wasm32-wasip2\n\n# Build for WASI\ncargo build --target wasm32-wasip2 --no-default-features --features wasi --release\n```\n\n### Authentication\n\nThe WASM build supports **stateless authentication** — keychain storage and browser-based OAuth login are not available. Use either `DD_ACCESS_TOKEN` or API keys:\n\n```bash\n# Option 1: Bearer token\nDD_ACCESS_TOKEN=\"your-token\" DD_SITE=\"datadoghq.com\" wasmtime run target\u002Fwasm32-wasip2\u002Frelease\u002Fpup.wasm -- monitors list\n\n# Option 2: API keys\nDD_API_KEY=\"your-api-key\" DD_APP_KEY=\"your-app-key\" wasmtime run target\u002Fwasm32-wasip2\u002Frelease\u002Fpup.wasm -- monitors list\n```\n\nThe `pup auth status` command works in WASM and reports which credentials are configured. The `login`, `logout`, and `refresh` subcommands return guidance to use `DD_ACCESS_TOKEN`.\n\n### Limitations\n\n- No local token storage (keychain\u002Ffile) — use `DD_ACCESS_TOKEN` or API keys\n- No browser-based OAuth login flow\n- Networking relies on the host runtime's networking capabilities\n\n### Running with Wasmtime\n\n```bash\n# Run directly\nwasmtime run --env DD_ACCESS_TOKEN=\"your-token\" target\u002Fwasm32-wasip2\u002Frelease\u002Fpup.wasm -- monitors list\n\n# Or with API keys\nwasmtime run --env DD_API_KEY=\"key\" --env DD_APP_KEY=\"key\" target\u002Fwasm32-wasip2\u002Frelease\u002Fpup.wasm -- --help\n```\n\n## Runbooks\n\n`pup runbooks` is a local execution engine for YAML-defined operational procedures. Runbooks live in `~\u002F.config\u002Fpup\u002Frunbooks\u002F` and encode multi-step tasks — from deployment gates to incident triage — using `pup`, shell, HTTP, Datadog Workflow, and interactive confirmation steps.\n\n```bash\n# List available runbooks\npup runbooks list\n\n# Inspect a runbook's steps\npup runbooks describe incident-triage\n\n# Run a runbook, passing required variables\npup runbooks run deploy-service --arg SERVICE=payments --arg VERSION=1.2.3\n\n# Dry-run (show steps without executing)\npup runbooks run deploy-service --dry-run\n\n# Import a runbook from a file\npup runbooks import .\u002Fmy-runbook.yaml\n\n# Validate a runbook file without running it\npup runbooks validate .\u002Fmy-runbook.yaml\n```\n\n### Runbook Features\n\n- **Step types**: `pup` (Datadog commands), `shell`, `http`, `datadog-workflow`, `confirm`\n- **Variable interpolation**: `{{VAR_NAME}}` in any field, passed via `--arg KEY=VALUE`\n- **Reusable templates**: Store shared step definitions in `_templates\u002F` and reference them with `template: \u003Cname>`\n- **HTTP steps**: Full method support (GET\u002FPOST\u002FPUT\u002FPATCH\u002FDELETE) with `body`, `headers`, `content_type`, and `body_file`\n- **Failure handling**: `on_failure: fail|warn|ignore` and `optional: true` per step\n- **Conditional execution**: `when: on_success|on_failure|always`\n- **Polling**: `poll.interval`, `poll.timeout`, `poll.until` for long-running operations\n- **Output capture**: `capture: VAR_NAME` stores stdout for use in later steps\n- **Timestamped output**: Every step shows start time, elapsed duration, and labeled stdout\u002Fstderr\n\nSee `docs\u002Fexamples\u002Frunbooks\u002F` for ready-to-use examples and [docs\u002FEXAMPLES.md](docs\u002FEXAMPLES.md) for full reference.\n\n## Agent Skills\n\nPup ships a set of skills and domain agents embedded in the binary, installable to any AI coding assistant. Run `pup skills list` to see what's available in the version you have installed.\n\n```bash\n# Install all skills and agents for your AI assistant\npup skills install\n\n# Install for a specific tool\npup skills install --target-agent=claude-code\npup skills install --target-agent=cursor\n\n# List available skills and agents\npup skills list\npup skills list --type=skill\npup skills list --type=agent\n\n# Install a specific skill\npup skills install dd-monitors\n```\n\nFor Claude Code, skills install to `.claude\u002Fskills\u002F` and agents install to `.claude\u002Fagents\u002F` (native subagent format). For other tools, everything installs as `SKILL.md` in the tool's skills directory.\n\nPup is also available as a **Claude Code plugin marketplace**:\n\n```\n\u002Fplugin marketplace add DataDog\u002Fpup\n```\n\n## ACP Server\n\n`pup acp serve` turns pup into a local AI agent server, letting coding tools talk directly to Datadog Bits AI. It supports two protocols:\n\n- **[ACP](https:\u002F\u002Fagentcommunicationprotocol.dev\u002F)** — Agent Communication Protocol for ACP-native clients\n- **OpenAI-compatible** — `POST \u002Fchat\u002Fcompletions` for [opencode](https:\u002F\u002Fopencode.ai), Cursor, and any `@ai-sdk\u002Fopenai-compatible` client\n\n```bash\n# Start the server (auto-discovers your first Datadog AI agent)\npup acp serve\n\n# Or target a specific agent\npup acp serve --agent-id \u003Cuuid> --port 9099\n```\n\nPoint any OpenAI-compatible client at `http:\u002F\u002F127.0.0.1:9099` to start asking questions about your Datadog environment.\n\n**opencode** (`~\u002FLibrary\u002FApplication Support\u002Fopencode\u002Fopencode.jsonc`):\n```jsonc\n{\n  \"provider\": {\n    \"datadog\": {\n      \"name\": \"Datadog AI\",\n      \"npm\": \"@ai-sdk\u002Fopenai-compatible\",\n      \"models\": { \"datadog-ai\": { \"name\": \"Datadog AI Agent\" } },\n      \"options\": { \"baseURL\": \"http:\u002F\u002F127.0.0.1:9099\" }\n    }\n  }\n}\n```\n\nSee [docs\u002FEXAMPLES.md#acp-server](docs\u002FEXAMPLES.md) for full usage details.\n\n## Development\n\n```bash\n# Run tests\ncargo test\n\n# Build\ncargo build --release\n\n# Lint\ncargo clippy -- -D warnings\n\n# Format check\ncargo fmt --check\n\n# Build WASM\nrustup target add wasm32-wasip2\ncargo build --target wasm32-wasip2 --no-default-features --features wasi\n\n# Run without building\ncargo run -- monitors list\n```\n\n## License\n\nApache License 2.0 - see LICENSE for details.\n\n## Documentation\n\nFor detailed documentation, see [CLAUDE.md](CLAUDE.md).\n","Pup 是一个专为AI代理设计的命令行工具，集成了超过200个命令，覆盖了33种以上的Datadog产品。该项目使用Rust语言开发，具备自我发现命令、结构化输出及OAuth2 + PKCE认证等核心功能，使得AI代理能够高效地访问和利用Datadog平台上的各种监控与日志服务。特别适用于需要通过程序化方式管理基础设施的企业或开发者场景中，如自动故障排查、性能监控等领域。",2,"2026-06-11 03:31:27","trending"]