OrbiAds CLI — Google Ad Manager from the command line
Project description
OrbiAds CLI
Google Ad Manager from the command line. Deploy campaigns, check inventory, run reports — without opening a browser.
Version Status
- PyPI stable:
orbiads-cli 1.0.1 - Source tree:
orbiads-cli 1.1.0(unreleased)
1.1.0 is a real CLI change, not just a version bump: the local client no
longer ships a baked-in Firebase API key and requires ORBIADS_FIREBASE_KEY
for refresh-token exchange. Do not publish 1.1.0 to PyPI until the CLI release
gate is green.
Install (30 seconds)
# Option 1 — pipx (recommended, auto-handles PATH)
pipx install orbiads-cli
# Option 2 — pip
pip install orbiads-cli
# Option 3 — from this repo
./install.sh cli
Verify:
orbiads --version
# PyPI install: orbiads 1.0.1
# Local source install: orbiads 1.1.0
command not found? See Troubleshooting below.
Authenticate (one time)
orbiads auth login
A code and URL are displayed. Open the URL, enter the code, authorize with Google. Done.
orbiads auth status
# Authenticated as user@gmail.com (network: 12345678)
Quick Start
# See your GAM network
orbiads network info
# List campaigns
orbiads campaigns list
# Get JSON output (for scripts)
orbiads campaigns list --json
# Run a delivery report
orbiads reporting run --template 12345 --json
# Check inventory before trafficking
orbiads inventory ad-units
# Check credit balance
orbiads billing balance
All Commands
| Group | Commands | Description |
|---|---|---|
auth |
login, logout, status |
Google OAuth Device Flow |
network |
info, list, switch |
GAM network context |
campaigns |
list, get, deploy, pause, archive |
Campaign management |
orders |
list, get, create |
Order management |
creatives |
list, get, upload |
Creative management |
advertisers |
list, get, create |
Advertiser management |
inventory |
ad-units, placements, targeting-keys |
Inventory browsing |
reporting |
run, templates |
Reports and exports |
billing |
balance, usage |
Credit balance and history |
config |
list, set, get |
CLI configuration |
Global Flags
| Flag | Description |
|---|---|
--json |
Raw JSON output (for piping to jq, scripts) |
--output table|json|csv |
Output format |
--yes, -y |
Skip confirmation prompts |
--version |
Show CLI version |
CLI + MCP + Skills — How They Work Together
OrbiAds has 3 integration layers that complement each other:
┌─────────────────────────────────────────────────┐
│ Skills (8 guided workflows) │
│ /orbiads:bootstrap /orbiads:qa-preview ... │
│ → Load in Claude Code, ChatGPT, Gemini │
├─────────────────────────────────────────────────┤
│ MCP Server (168 tools) │
│ https://orbiads.com/mcp │
│ → AI agents call tools via MCP protocol │
├─────────────────────────────────────────────────┤
│ CLI (10 command groups) │
│ orbiads campaigns list --json │
│ → Terminal, scripts, CI/CD, automation │
└─────────────────────────────────────────────────┘
↓ ↓ ↓
Same API · Same credits · Same guardrails
| Use case | Best tool |
|---|---|
| Explore GAM interactively with AI | MCP (via Claude/ChatGPT) |
| Guided campaign deployment | Skills (/orbiads:deploy-reporting) |
| Scripted automation, CI/CD | CLI (orbiads deploy --json) |
| Quick checks from terminal | CLI (orbiads network info) |
| Complex multi-step workflows | Skills + MCP combined |
Use CLI inside Claude Code
Claude Code can call the CLI directly:
> Run `orbiads campaigns list --json` and summarize the active campaigns
Or use it as a data source for Skills:
> /orbiads:qa-preview
> Use `orbiads reporting run --template 789` to check delivery
Configuration
Settings are stored in ~/.orbiads/config.json:
orbiads config set output json # default output format
orbiads config set network_id 12345 # default GAM network
orbiads config list # show all settings
For source builds at 1.1.0 and later, token refresh also requires:
export ORBIADS_FIREBASE_KEY="<firebase-web-api-key>"
Windows PowerShell:
$env:ORBIADS_FIREBASE_KEY="<firebase-web-api-key>"
Troubleshooting
command not found: orbiads
The Python scripts directory is not in your PATH.
Quick fix (any OS):
python -m orbiads_cli --version
Permanent fix — use pipx (recommended):
pip install pipx
pipx ensurepath # adds ~/.local/bin to PATH automatically
pipx install orbiads-cli
# restart your terminal
Manual fix by OS:
| OS | Command |
|---|---|
| macOS | echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc |
| Linux | echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc |
| Windows | In PowerShell (admin): [Environment]::SetEnvironmentVariable('PATH', $env:PATH + ';' + (python -c "import sysconfig; print(sysconfig.get_path('scripts'))"), 'User') |
Authentication failed
orbiads auth logout
orbiads auth login # re-authenticate
Network not found
orbiads network list # see available networks
orbiads config set network_id ID # set the correct one
PyPI Release Policy
Publish a new orbiads-cli package only when the CLI package itself changes:
CLI source code, commands, local auth/config behavior, runtime or dev
dependencies, packaging metadata, or documentation rendered on PyPI.
Do not publish PyPI for backend-only, hosted MCP-only, or remote server behavior changes that remain compatible with the existing CLI client.
Before publishing:
- Verify the latest PyPI version.
- Ensure
pyproject.toml,src/orbiads_cli/__init__.py, and this README agree. - Run the CLI tests:
uv run pytest -q. - Build the package:
uv build. - Check the distributions:
twine check dist/*. - Upload, then verify from a clean environment with
pip install orbiads-cli==<version>.
If the source version is ahead of PyPI but the release gate is not green, keep the source version marked as unreleased instead of publishing or pretending the version exists on PyPI.
Current release gate for 1.1.0: not green. On 2026-06-10, uv run pytest -q
passes collection after adding PyYAML to the dev extra, but the suite still
fails on public CLI catalogue drift and MCP parity drift (server_info
unmapped). PyPI therefore remains at 1.0.1.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orbiads_cli-1.1.0.tar.gz.
File metadata
- Download URL: orbiads_cli-1.1.0.tar.gz
- Upload date:
- Size: 152.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab46fd007d5f59ce58f4a0ff3fe8fcf1a2eb0e5e1ad855a909e5115f976fda4c
|
|
| MD5 |
2eb354690f5114adbfa37b122f2d5625
|
|
| BLAKE2b-256 |
4906faeb2e964dad55e1d3c0bc873254475600eb7677f25febf52a20019cf107
|
File details
Details for the file orbiads_cli-1.1.0-py3-none-any.whl.
File metadata
- Download URL: orbiads_cli-1.1.0-py3-none-any.whl
- Upload date:
- Size: 79.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ac3aee8578fd90804890617ff0b0a491d8debdb8d73e925b5f770bbe80545b7
|
|
| MD5 |
f23ecc436a79d369b20ace835609da70
|
|
| BLAKE2b-256 |
9d05dcdb342d3c1523c3ac0563642c148fa25cadd1c6d7a17fccd8062591b32f
|