Annie CLI is a terminal-native AI assistant for infrastructure observability. Ask natural language questions, pipe in kubectl output or logs, and get markdown-rendered answers — all from your terminal.Documentation Index
Fetch the complete documentation index at: https://docs.anyshift.io/llms.txt
Use this file to discover all available pages before exploring further.
Installation
Authenticate
Annie ships with production defaults — no manual configuration needed. Just log in:This opens your browser to complete authentication. Your default project is fetched automatically from the backend. If you have access to multiple projects, you’ll be prompted to select one.To switch projects later, use
annie project switch <name>.Interactive Chat
Launchannie with no arguments to enter the interactive TUI — a full-screen terminal chat showing the active project name in the banner, an animated thinking spinner, scrollable viewport, and markdown-rendered responses.
Conversation context is maintained across the session, so you can ask follow-up questions naturally. Slash commands autocomplete as you type — start with / and press TAB to accept the suggestion.
Resume a Previous Conversation
Your last conversation ID is automatically saved when you exit. Pick up where you left off:Slash Commands
| Command | Description |
|---|---|
/help | Show available commands |
/rca <prompt> | Run a root-cause analysis instead of a chat |
/report <prompt> | Ask Annie to format the answer as report blocks |
/save-report <name> | Save the last report-shaped answer as a reusable definition |
/reports | List custom report definitions in the active project |
/reports show <instance-id> | Render a specific report instance as markdown |
/reports run <def-id> | Trigger a fresh run of a report definition |
/reports history <def-id> | List past runs of a report definition |
/rcas | List past RCAs in the active project |
/rcas show <rca-id> | Render a past RCA’s answer (8-char prefix accepted) |
/rate up|down | Rate the last answer with thumbs up or down |
/rate hypothesis <n> up|down | Rate hypothesis number n from the last RCA |
/copy | Copy last response to clipboard |
/mouse | Toggle mouse tracking (disable for text selection) |
/project | Switch active project |
/share | Copy conversation URL to clipboard |
/export [path] | Export conversation as timestamped markdown file (optionally specify a custom file path) |
/clear | Clear screen (keeps session context) |
/context | Show project, conversation ID, and piped context info |
/alerts | Quick prompt for active alerts |
/services | Quick prompt for monitored services |
/json | Print last response as JSON |
/quit | Exit |
Keyboard Shortcuts
| Key | Action |
|---|---|
Enter | Send message |
Tab | Accept slash command autocomplete |
Alt+Enter | Insert newline (multi-line input) |
Up/Down | Browse input history across sessions |
Ctrl+L | Clear screen |
Ctrl+U | Clear input before cursor |
Page Up/Down | Scroll through conversation |
Mouse wheel | Scroll viewport |
Ctrl+C | Cancel in-progress request, or quit |
Ctrl+D | Quit |
One-Shot Queries
For scripting or quick questions, useannie ask:
Root Cause Analyses
Annie runs a multi-step investigation when you ask for an RCA: hypotheses are generated, refined, and ranked by confidence. Use this when the question is “why is X failing” rather than “what is X”. Start an RCA from the one-shot interface with--rca:
[H1], [H2], [H3] and a confidence score for each.
Browse past RCAs
List every RCA in your active project, most recent first:/rcas and /rcas show <rca-id>.
Custom Reports
A report is a structured answer with tables, metrics, and findings instead of prose. Use it for scheduled snapshots like a weekly SRE digest, or for any question where the shape of the answer matters more than the narrative.Generate a report-shaped answer
Save a report as a reusable definition
After Annie returns a report-shaped answer, persist it as a definition so you can re-run the same question later:/save-report <name> immediately after a /report answer:
Manage report definitions
/reports, /reports show <id>, /reports run <id>, and /reports history <id>.
Feedback on Annie’s Answers
You can rate any answer Annie gives, and rate individual hypotheses inside an RCA. Ratings flow back into Annie so future investigations take your judgment into account.Rate the most recent answer
Rate a specific hypothesis from an RCA
Each rendered RCA labels its hypotheses[H1], [H2], etc. To rate one of them you need its id, which you can grab from the JSON output:
Prompt for feedback after an answer
If you want the CLI to ask for a thumbs up or down inline after eachannie ask, add --prompt-feedback:
Pipe Anything
Annie reads piped stdin automatically — feed it logs, events, or any text for instant analysis:Use from AI Coding Agents
Annie works as a bridge between AI coding agents and your infrastructure. For example, from inside Claude Code:annie ask on your behalf, interpret the response, and incorporate the infrastructure context into your development workflow — no context-switching required.
Project Management
Annie inherits the active project from the backend. You can discover and switch projects directly from the terminal:Authentication
~/.annie/auth.json with 0600 permissions and auto-refresh when expiring.
Token-based authentication
An alternative to the browser login flow that unlocks headless and pipeline usage — places where opening a browser isn’t an option. Mint a token once in the web app and use it either:- in CI / pipelines (Argo workflows, GitHub Actions, cron) — store it as a secret and pass it via
ANNIE_TOKEN, no~/.annie/auth.jsonneeded, the runner is fully ephemeral. - on a workstation — persist it via
annie auth login --tokenif you’d rather skip the browser flow on this machine.
Mint a token
In the Anyshift web app, open Settings → Access tokens → Create token. You’ll be asked to pick an ownership kind and (for shared tokens) a scope.| Ownership | Who can act on it | When to pick |
|---|---|---|
| Personal | only you | local CLI use; the token authenticates as you and auto-revokes if your user is deactivated |
| Shared | any org admin in scope | shared CI / automation; survives the minter leaving the org |
- Project-scoped — token can only call against the listed project(s). Pick this when a workflow runs against one or a few specific projects.
- Org-scoped — token can call against any project in the org. Pick this when the project changes per pipeline run and you want a single token to cover everything.
Use a token from a CI runner
ANNIE_TOKEN is set, the CLI uses the env-supplied token exclusively — no on-disk auth.json is read, and project_id in local config.yaml is ignored.
If you’d rather save the token on disk than pass it via env var (e.g. a long-running developer shell on a build box), use:
Project resolution
For each invocation the CLI picks the active project in this order:--project <name|uuid>flag (one-shot override).ANNIE_PROJECT_IDenv var.- Backend auto-resolution via
/project/default:- Personal token → your stored default project.
- Shared, project-scoped, one project → that project.
- Shared, org-scoped, single-project org → that project.
- Otherwise: error
no project selected. Set ANNIE_PROJECT_ID, pass --project, …
ANNIE_PROJECT_ID is required per invocation. The Settings page surfaces a name → UUID dictionary alongside the tokens table so you can copy the right id into your pipeline config.
Example — Argo Workflow step
What an access token can call
Chat, RCA, conversation reads, and project listing/default. Admin operations — rotating cloud credentials, modifying integrations, minting more tokens — require a browser session and are rejected from a token even when the minter is an org admin.Token lifecycle
| Action | Effect |
|---|---|
| Mint | Plaintext shown once. Copy it to your secret store immediately. |
| Revoke | The token is rejected on the next request (401). Use to kill a leaked token. |
| Expiry | Optional at mint time (1–365 days). Expired tokens behave like revoked. |
| User deactivation | Personal tokens auto-revoke when the minter is deactivated. Shared tokens persist (they belong to the project/org, not the human) — revoke them explicitly during SSO deprovisioning if needed. |
Configuration
Annie works out of the box with sensible defaults. All settings can be overridden via~/.annie/config.yaml or ANNIE_ prefixed environment variables:
| Key | Description |
|---|---|
project_id | Anyshift project ID |
show_banner | Show ASCII art banner on launch (default: true) |
telemetry | Enable anonymous usage telemetry (default: true) |
Privacy
- Anonymous usage telemetry is on by default and can be disabled with
annie config set telemetry falseorANNIE_TELEMETRY=off - The
NO_COLORenvironment variable is respected for accessibility
Get Started
Create Account
Sign up for Anyshift
Request Demo
See Annie CLI in action