Quickstart
1
Install
- Homebrew
- Arch Linux
- Manual
2
Authenticate
3
Ask
Common workflows
- Interactive
- One-shot
- Pipe data
- Investigate
- Query the graph
- Use with agents
Start a terminal chat with session history and markdown output:
Stay up to date
Stable Annie CLI releases tell you when a newer version is available in an interactive terminal. The TUI keeps the available version in its status bar, and successful human-readable commands may show one reminder every 24 hours. Check synchronously whenever you need the current release status:Investigate GCP changes
Use deterministic graph commands when you need retained GCP evidence in a terminal, script, or CI job. List recent events, narrow them to one provider operation, then inspect the affected inventory:2 with
RESOURCE_AMBIGUOUS and lists at most ten stable-ID candidates. JSON keeps the same candidates at
.error.details.candidates. Select one id or anyshiftID and retry; Annie never traverses from an
arbitrary first match.
--operation groups activity by the GCP-native operation identifier. --correlation selects the
broader Anyshift event story. They are separate identifiers. Text output keeps the main evidence
fields; use JSON when automation needs warnings, availability, before and after values, pagination,
or provenance references:
annie graph cloud-events browsing uses bounded page mode. Text output reports the number
shown, whether more results exist, and the next cursor without calculating or claiming an exact
full-window total. Use --exact-stats only when you need the exact total and event-type breakdown;
that opt-in can be slower on large accounts. In page-mode JSON, total is null, byType is empty,
and statistics reports { "mode": "none", "exact": false }.
An unknown status is not success. Unknown provenance does not mean unmanaged, and unknown freshness
does not mean stale. If a response contains nextCursor, pass it back with --cursor to continue
that result page.
Repository context
Add an.annie.yaml file to a repository when you want every question from that workspace to use the same Anyshift project, metadata, and runbooks:
.annie.yaml
.annie.yaml by walking up from your current directory. Repository settings apply only to that invocation and do not change your global default project.
Use project-scoped personal context when a value should follow you across repositories:
.annie.yaml.
Invocation flags take precedence over TUI session context, repository context, and personal project context:
annie context preview to check file status without printing file contents.
Structured output
Pass a local JSON Schema when a script or CI job needs a predictable object instead of prose:service-risk.schema.json
--schema requires --output json and supports JSON Schema Draft 7 and Draft 2020-12 with an object at the root. Remote schema references are rejected.
Conversation history
Resume a previous investigation with its transcript instead of starting over:annie conversation delete <id> requires confirmation and may be restricted to administrators.
Reference
Query options
Query options
Graph commands
Graph commands
All non-interactive graph commands support
--project <name|uuid> and --output text|json. Run annie graph <command> --help for command-specific flags.Inspect public exposure for a Cloudflare hostname or a Kubernetes service:originReachability for internet-facing ALB or NLB security-group evidence versus pinned Cloudflare IP ranges. That field is not DNS proxied / RESOLVES_DIRECTLY_TO, and text output prints it separately from traffic gaps. See Origin reachability.graph triage is deterministic evidence, not AI. It optionally queries incident_context for the
resource (target + since + LIMIT). Returned hops are incident, alerts, service,
onCall, responders, and history. Empty hops are omitted from findings. History cites reviewed
resolution evidence only (confirmed_fix, explicit_reference, or unknown), never
temporal-only association. Raw queries use
incident_context; PagerDuty
setup is on the PagerDuty integration page.graph show accepts a hashedID or anyshiftID returned by graph discovery. It uses the
project-scoped Graph API and never guesses from a display name. Resolve a name first, then inspect
the selected identity:graph show --at reads are not
supported until the Graph API has snapshot semantics; use annie graph history for retained change
evidence instead.Discover the query language without authentication:Automation and exit codes
Automation and exit codes
JSON output uses the
annie.cli/v1 envelope. Natural-language answers are returned under .answer.content, while Graph results are returned under .data.Require a schema-validated answer with:Sessions and TUI
Sessions and TUI
Use
Tab for command completion, Page Up/Down to scroll, and Ctrl+C to cancel.Past investigations and reports
Past investigations and reports
Projects
Projects
--project <name|uuid>.Authentication and CI
Authentication and CI
For local use:For CI, create an access token in Settings → Access tokens, store it as a secret, and set:
ANNIE_PROJECT_ID is only required when the token can access multiple projects. Use personal tokens locally and shared tokens for team automation. Token authentication cannot perform administrative operations.Feedback
Feedback
/rate up, /rate down, or /rate hypothesis <n> up|down.Configuration and privacy
Configuration and privacy
~/.annie/config.yaml. Disable anonymous telemetry with:NO_COLOR.Create account
Start using Anyshift
Request a demo
See the CLI in action