CLI for Google Gemini Enterprise
Project description
geadm
geadm is a command-line companion for operating Google Gemini Enterprise. It gives platform teams fast answers to the questions that come up daily while running a Gemini Enterprise deployment: What's deployed? Are the connectors syncing? What are users asking, and what is Model Armor flagging? How close are we to a quota ceiling? Is everything healthy?
It inventories engines, data stores, connectors and agents; inspects and tails the platform's Cloud Logging streams; summarises Cloud Monitoring metrics and quota utilisation; and runs a one-shot health check across all of it.
By design, the current release is strictly read-only — every command works with viewer roles alone, so it can be handed to anyone on the team without change-risk. It may grow administrative verbs (e.g. triggering connector syncs, managing agents) in a future release.
Contributing with an AI coding agent? Read AGENTS.md — it maps the project subagents, skills and hard constraints.
Install
uv tool install geadm # or: pipx install geadm / pip install geadm
From a checkout:
uv tool install .
# or for development:
uv sync && uv run geadm --help
Authentication & roles
geadm uses Application Default Credentials (gcloud auth application-default login);
it never reads or writes key files.
| Role | Used by |
|---|---|
roles/discoveryengine.viewer |
geadm ls …, geadm doctor |
roles/logging.viewer |
geadm logs …, geadm doctor |
roles/monitoring.viewer |
geadm stats, geadm quota, geadm doctor |
User credentials (as opposed to service accounts) also need a quota project:
geadm uses the target project automatically, which requires
serviceusage.services.use there. If you don't have it, pass
--quota-project <other-project> (or set GOOGLE_CLOUD_QUOTA_PROJECT) to bill
a project you can use.
Enabling connector/observability logging on a project is a one-time setup
step requiring roles/discoveryengine.agentspaceAdmin; geadm only ever reads
what's there.
Commands
Global options: --project (defaults to the ADC project), --location
(default global; regional locations are routed to
{location}-discoveryengine.googleapis.com). Every command supports --json
for machine-readable output, and time-windowed commands take --since
(30m, 1h, 24h, 7d).
Overview — geadm info
geadm info
Project-wide dashboard: summary tiles (engines, data stores, connector health, agents, license seats/activation/unmet demand) plus a card per engine showing its data stores with their connector sources and its agents ("My Agent" user defaults are grouped into a single ×N line).
Inventory — geadm ls
geadm ls engines|datastores|connectors|agents|licenses
Walks the collection hierarchy: engines and data stores under
default_collection, data connectors across all collections (each
connector-backed source lives in its own), agents per engine, and user
licenses in the project's default_user_store.
Logs — geadm logs
geadm logs connector [--datastore ID] [--severity ERROR] [--since 1h]
geadm logs user [email] [--since 24h] [--follow]
geadm logs ai [--since 24h] [--follow]
logs connector shows data-connector sync activity. logs user shows
end-user Gemini Enterprise activity — prompts, assistant replies, searches and
Model Armor screening events — for one user, or all users when the email is
omitted. logs ai streams the raw gen_ai.user.message/gen_ai.choice
content logs (prompt and reply text with no identity field, so it cannot be
scoped per user — use logs user for that). --follow/-f tails either
stream live (newline-delimited JSON with --json). When a log turns out to be
empty, geadm tells you whether logging simply isn't enabled on the project or
nothing matched your filter.
⚠ Sensitive output:
geadm logs userandgeadm logs aican surface end-user prompt and response content when prompt/response logging is enabled on the project, and print a warning banner before any output.
Metrics — geadm stats
geadm stats [--engine ID] [--since 24h]
Discovers the project's discoveryengine.googleapis.com metrics at runtime and
summarises query volume, latency and connector sync freshness over the window.
Quotas — geadm quota
geadm quota [--since 24h]
Pairs each Discovery Engine quota's latest usage with its limit per location: percent used (highlighted at ≥75% / ≥90%), byte quotas in human units, and counts of quota-exceeded events over the window — the quickest way to spot the next capacity ceiling before ingestion hits it.
Health check — geadm doctor
geadm doctor [--since 24h]
Runs the whole suite concurrently — inventory reachability, connector states and sync freshness, connector/API error logs, metric availability — and renders a live PASS/WARN/FAIL table. Exits non-zero if any check fails, so it drops straight into CI or cron.
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 geadm-0.1.0.tar.gz.
File metadata
- Download URL: geadm-0.1.0.tar.gz
- Upload date:
- Size: 79.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21d27c810b7b3cd126b03435d818edf1493a1611c80215ba0ab36757d254ec63
|
|
| MD5 |
5ba9e4cfbfd03a4a7cdb0c06fb2bef9d
|
|
| BLAKE2b-256 |
a60e1cf261bf6de3d9596dfadb51afab727428fd5815318428cb50dc5bcf2e17
|
Provenance
The following attestation bundles were made for geadm-0.1.0.tar.gz:
Publisher:
release.yml on egen/geadm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geadm-0.1.0.tar.gz -
Subject digest:
21d27c810b7b3cd126b03435d818edf1493a1611c80215ba0ab36757d254ec63 - Sigstore transparency entry: 2064009273
- Sigstore integration time:
-
Permalink:
egen/geadm@51667f399c573baa708f7e34771c5539e3e0affb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/egen
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@51667f399c573baa708f7e34771c5539e3e0affb -
Trigger Event:
release
-
Statement type:
File details
Details for the file geadm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: geadm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add7e53e601725ebf85d54de4c32eb77498410706abd1da97577e0e50725fefd
|
|
| MD5 |
d5593936ecaa5735dee2664fafbee436
|
|
| BLAKE2b-256 |
bf45e85081c57cf9817fb995e719fd307ff3bef4b582cc77156e0ffcf7677c19
|
Provenance
The following attestation bundles were made for geadm-0.1.0-py3-none-any.whl:
Publisher:
release.yml on egen/geadm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geadm-0.1.0-py3-none-any.whl -
Subject digest:
add7e53e601725ebf85d54de4c32eb77498410706abd1da97577e0e50725fefd - Sigstore transparency entry: 2064009369
- Sigstore integration time:
-
Permalink:
egen/geadm@51667f399c573baa708f7e34771c5539e3e0affb -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/egen
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@51667f399c573baa708f7e34771c5539e3e0affb -
Trigger Event:
release
-
Statement type: