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.
Get Started
Authenticate
Annie ships with production defaults, so no manual configuration is needed. Just log in:This opens your browser to complete authentication. Your default project is fetched automatically. If you have access to multiple projects, you’ll be prompted to select one. Switch later with
annie project switch <name>.Core Usage
Interactive Chat
Launchannie with no arguments to enter the full-screen TUI: active project in the banner, animated thinking spinner, scrollable viewport, and markdown-rendered responses. Context is maintained across the session for natural follow-ups. Slash commands autocomplete: start with / and press TAB.
One-Shot Queries
For scripting or quick questions, useannie ask:
Pipe Anything
Annie reads piped stdin automatically. Feed it logs, events, or any text for instant analysis: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”./rca why are our database connection pools getting exhausted?
Each RCA answer ends with hypotheses labeled [H1], [H2], [H3] and a confidence score for each.
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, interprets the response, and incorporates the infrastructure context into your workflow.
Reference
TUI: resume, slash commands, keyboard shortcuts
TUI: resume, slash commands, keyboard shortcuts
Resume a previous conversation. Your last conversation ID is saved when you exit:Follow-up questions continue in the same thread with full context from the previous session.Slash commands:
Keyboard shortcuts:
Input history is persisted across sessions, so you can recall previous questions with the Up arrow.
| 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 |
| 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 |
annie ask: all flags and variations
annie ask: all flags and variations
Browse past RCAs
Browse past RCAs
List every RCA in your active project, most recent first:Render a past RCA’s answer. The first 8 characters of the id are enough:JSON output is also supported:In the TUI, the same flow is
/rcas and /rcas show <rca-id>.Custom reports
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 any question where the shape of the answer matters more than the narrative.Generate a report-shaped answer:In the TUI: In the TUI, run Manage report definitions:All id arguments accept an 8-character prefix. The TUI exposes the same operations as
/report weekly SRE digestSave a report as a reusable definition. After Annie returns a report-shaped answer, persist it so you can re-run the same question later:/save-report <name> immediately after a /report answer:/reports, /reports show <id>, /reports run <id>, and /reports history <id>.Feedback on Annie's answers
Feedback on Annie's answers
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:The CLI remembers the last answer in your shell, so no ids are required.Rate a specific hypothesis from an RCA. Each rendered RCA labels its hypotheses In the TUI, you skip the id lookup entirely. The H-number is enough:Prompt for feedback after an answer. To have the CLI ask for a thumbs up or down inline after each The prompt only fires in interactive terminals, so pipes and scripts are not blocked.
[H1], [H2], etc. To rate one you need its id, which you can grab from the JSON output:annie ask, add --prompt-feedback:Project management
Project management
Annie inherits the active project from the backend. Discover and switch projects from the terminal:
Authentication
Authentication
~/.annie/auth.json with 0600 permissions and auto-refresh when expiring.Token-based authentication (CI / headless)
Token-based authentication (CI / headless)
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:
Shared tokens are further scoped:When Project resolution. For each invocation the CLI picks the active project in this order: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:
- 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.
| 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.
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.To save the token on disk instead of passing it via env var (e.g. a long-running developer shell on a build box):--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| 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 and privacy
Configuration and privacy
Annie works out of the box with sensible defaults. Override settings via
Privacy:
~/.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) |
- 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
Sign Up
Create Account
Sign up for Anyshift
Request Demo
See Annie CLI in action