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.
Installation
Interactive Chat
Launch annie 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:
# Resume the last conversation
annie --resume
# Resume a specific conversation by ID
annie --conversation <id>
When resumed, follow-up questions continue in the same conversation thread — Annie retains the full context from the previous session.
Slash Commands
| Command | Description |
|---|---|
/help | Show available commands |
/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 |
Input history is persisted across sessions so you can recall previous questions with the Up arrow.
One-Shot Queries
For scripting or quick questions, use annie ask:
# Ask a question directly
annie ask "why is checkout slow?"
# Add context
annie ask "what changed?" --context env=prod --context team=payments
# Verbose mode shows the reasoning chain
annie ask "show me active alerts" --verbose
# JSON output for scripting
annie ask "list services" --output json | jq '.answer'
# Follow-up mode (interactive REPL after initial answer)
annie ask "what's failing?" --follow
# Override project for a single query (name or UUID, does not change default)
annie ask --project "Production - US East" "list s3 buckets"
# Custom timeout (default: 15m)
annie ask "list all ec2 instances" --timeout 20m
# Resume a previous conversation
annie ask --resume "any new alerts since then?"
annie ask --conversation <id> "what about the database?"
Pipe Anything
Annie reads piped stdin automatically — feed it logs, events, or any text for instant analysis:
kubectl get events -A | annie ask "anything unusual?"
kubectl logs -n prod -l app=backend --tail=200 | annie
cat error.log | annie ask "what's the root cause?"
When both stdin and stdout are pipes, Annie falls back to one-shot mode for scripting.
Use from AI Coding Agents
Annie works as a bridge between AI coding agents and your infrastructure. For example, from inside Claude Code:
> Use the annie cli to determine how many ec2 instances are in <Anyshift Project Name>
Claude Code will run 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:
# List all projects (active project marked with *)
annie project list
# Show current project name and ID
annie project current
# Switch by name (case-insensitive, partial match)
annie project switch "Production - US East"
Authentication
# Browser login (default)
annie auth login
# Check status
annie auth status
# Logout
annie auth logout
Tokens are stored locally in ~/.annie/auth.json with 0600 permissions and auto-refresh when expiring.
Configuration
Annie works out of the box with sensible defaults. All settings can be overridden via ~/.annie/config.yaml or ANNIE_ prefixed environment variables:
annie config set <key> <value>
annie config get <key>
annie config list
| Key | Description |
|---|---|
api_url | Anyshift backend API URL |
platform_url | Anyshift web app URL (for custom deployments) |
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