Skip to main content
Ask questions, pipe in logs, or run production investigations without leaving the terminal.

Quickstart

1

Install

2

Authenticate

Your browser opens for authentication and the CLI selects your default project.
3

Ask

Common workflows

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:
The JSON form reports the installed version, latest version, update availability, check time, and release URL. Annie does not download or install the update. Passive checks stay silent for JSON output, pipes, redirected streams, CI, help, version, shell completion, development builds, and prereleases. Network failures do not change command output or exit status. Disable passive checks and reminders without disabling the explicit command:

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:
If a fuzzy topology selector matches several equally authoritative resources, Annie exits 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:
Normal 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 finds the nearest .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:
These commands manage your personal context for the selected project. They do not edit the repository’s .annie.yaml. Invocation flags take precedence over TUI session context, repository context, and personal project context:
Files are included only when you name them. Annie blocks files outside the repository, unsafe symlinks, binary and oversized files, common secret filenames, private keys, token-like content, and Kubernetes Secret manifests. The limits are 32 KiB per file and 96 KiB across one request. Run 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
The CLI validates the schema before sending the request. --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:
Resume state is scoped to the active project. Annie verifies that the conversation belongs to that project before restoring it. annie conversation delete <id> requires confirmation and may be restricted to administrators.

Reference

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:
Each path may include nullable 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:
The result includes the resource’s safe properties and bounded incoming and outgoing relationships. Text and JSON make relationship truncation explicit. Historical 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:
See the complete Graph Query Language reference.
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:
Manage persistent project context:
Essential commands:Use Tab for command completion, Page Up/Down to scroll, and Ctrl+C to cancel.
IDs accept an eight-character prefix.
For a single command, use --project <name|uuid>.
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.
In the TUI, use /rate up, /rate down, or /rate hypothesis <n> up|down.
Configuration lives in ~/.annie/config.yaml. Disable anonymous telemetry with:
The CLI also respects NO_COLOR.

Create account

Start using Anyshift

Request a demo

See the CLI in action