Prerequisites
Before you begin, make sure you have:- The
adjarCLI installed - A Google Ads account you want to manage, with API access
- An AI agent or assistant (Claude Code, Cursor, or any other)
Install the CLI
macOS (Apple silicon + Intel):adjar binary, verifies its checksum, and installs it to ~/.local/bin — no Node or other runtime required.
macOS only for now. Linux and Windows builds are on the way.
Set up credentials
Follow Get Google Ads API access to produce yourgoogle.json file, then point Adjar at it:
--credentials /path/to/google.json on any command. Your account ID is the customer_id in that file — you’ll pass it to adjar import next.
The loop: ask, review, apply, measure
Adjar replaces the Google Ads console with a config-driven workflow. Your account lives as plain-text TOML in your repo, your AI agent edits it, and theadjar CLI turns the diff into a reviewable plan it applies only when you approve. The performance report Adjar pulls back becomes your next ask.
Import your account once, then run the loop.
Import your account
Export your entire Google Ads account into local TOML config. Replace Adjar writes every campaign, ad group, keyword, and creative into
<id> with your customer_id.config/google.toml as plain text you can version-control. Re-run it anytime to refresh the file from the live account.Commit your config
Add the config to version control. This is the baseline — every future change shows up as a diff against it.
Ask your agent to make a change
Open your AI agent and tell it what you want in plain language. It reads your config, then edits the TOML directly — no special prompt engineering, the format is self-describing.
Review the plan
Before anything touches your live account, run The plan shows:
adjar plan. Adjar compares your local config against the live account and prints every change as a diff:- Fields being changed, with old vs. new values
- New campaigns, ad groups, or keywords being created
- Resources being paused or removed
- Warnings — e.g. a change that would reset a campaign’s learning period
Apply the changes
If the plan looks right, apply it:Adjar executes the changes against the Google Ads API and writes the assigned IDs back into your config. Commit the result — your repo is now the source of truth:
Every change is a git commit. If an experiment underperforms, rollback is
git revert — not a hunt through the console’s change history.Pull a performance report
Close the loop: Config and report are both plain text, so next round your agent reads them side by side — spotting the keyword that spends without converting before it proposes the next change. A report looks like:Commit it alongside your config, and the next ask starts here.
adjar report pulls a month of performance as plain-text markdown, written right beside your config. Pass --month for a calendar month, or omit it to default to the last complete month.How the pieces fit together
| Piece | What it does |
|---|---|
| TOML config | Declarative representation of your entire ad account |
| Markdown reports | Performance data your agent can read |
adjar import | Exports your live account into TOML the first time |
adjar plan | Compares local config to the live account; prints the diff |
adjar apply | Executes the diff against the Google Ads API |
adjar report | Pulls performance into a Markdown report |
| Your AI agent | Reads config + reports, proposes edits, explains its reasoning |
| You | Review every plan, approve what ships, provide judgment |
Next steps
CLI Reference
The core workflow plus full flags and options for every command.
Config Reference
Understand every field in your TOML config.
File Organization
How to split config across files and how
imports composes them.adjar report
Pull performance into Markdown that closes the loop.