# Sienna > Sienna is an agent-friendly marketing CLI: AI agents (Claude Code, Codex, or > any shell-capable agent) install it, authenticate through a hosted browser > handoff, and query Meta Ads and Google Ads with stable JSON contracts and > exit codes. Humans only paste one prompt and click one login link. ## Install and learn - Primary macOS install: download the latest notarized DMG from https://sienna.work/#download, drag Sienna to Applications, open `/Applications/Sienna.app`, and finish Setup. - The app-owned CLI launcher points to `/Applications/Sienna.app/Contents/MacOS/sienna`; Sparkle updates the complete app bundle. - Install the native Plugin: `sienna setup agent --claude` or `sienna setup agent --codex` - Standalone CLI fallback for systems without the macOS app: `curl -fsSL https://get.sienna.work/install.sh | bash` - Standard Skill source: https://get.sienna.work/plugins/marketplace/plugins/sienna/skills/sienna/SKILL.md - Onboarding manifest: https://get.sienna.work/plugins/onboarding.json ## Claude Cowork - The official Claude Directory listing is still in preview. Open Customize, choose Plugins, then Add marketplace. - Add `https://github.com/sienna-work/sienna-plugin` and install `sienna@sienna`. - The Plugin package already contains checksum-verified Linux amd64 and arm64 runtimes; first use does not download an executable. ## Authenticate (headless-friendly) - `sienna auth login --no-browser --persist --json` prints a verification URL; show it to the human, then resume with `sienna auth login --resume --json`. - Link ad platforms with `sienna auth link meta --no-browser --persist --json` or `sienna auth link google --no-browser --persist --json`, then use the matching `--resume --json` command. - `sienna auth status --json` reports exactly what is missing. ## Query - Google Ads: `sienna ads google accounts --json`, `sienna ads google campaigns --customer --json`, `sienna ads google query "" --customer --json` - Meta: `sienna ads meta accounts --json`, `sienna ads meta get /act_/insights --param level=campaign --param date_preset=last_7d --json` - Contract: stdout is data, stderr is diagnostics; exit codes 0 ok / 2 input / 3 not found / 4 auth / 5 network; errors carry recovery hints. ## Endpoints - Homepage: https://sienna.work - Downloads and agent instructions: https://get.sienna.work (latest.json, install.sh, /vX.Y.Z/ binaries) - Auth broker: https://auth.sienna.work (privacy: /privacy, data deletion: /data-deletion)