--- name: cx-olly description: This skill should be used when the user asks to "chat with AI", "ask Olly", "ask the agent", "send message to AI", "continue a chat", "follow up on chat", "get artifact", "download artifact", "list artifacts", "retrieve generated content", "AI-generated charts", "AI analysis", "conversational observability", "natural language query", or wants to interact with the Coralogix Observability Agent (Olly) using the cx CLI. metadata: version: "0.1.0" --- # Olly Observability Agent Skill Use this skill to interact with Coralogix's Observability Agent (Olly) via the `cx olly` CLI commands. Olly can analyze your observability data, answer questions about alerts, metrics, logs, and generate artifacts like charts and reports. `cx olly ask` defaults `--agent-to-agent-mode` to **false**. **If you're an LLM/agent, pass `--agent-to-agent-mode`** - see "Agent-to-agent mode" below. ## CLI Commands | Command | Purpose | Key flags | |---|---|---| | `cx olly ask "message"` | Send a message to the Observability Agent | `--chat-id`, `--model`, `--timeout`, `--agent-to-agent-mode` | | `cx olly artifacts list` | List all generated artifacts | - | | `cx olly artifacts get ` | Get artifact content by ID | - | **Output format:** append `-o json` or `-o toon` for machine-readable output. **Single-profile only:** `cx olly` commands do not support multi-profile fan-out. Use `-p ` to specify a single profile. ## Running Olly (async by default) **Run `cx olly ask` asynchronously by default:** launch it as a **background process and poll it for completion** rather than blocking on it. Olly investigations routinely take minutes, so this is the normal mode for `cx olly ask`. Only run `cx olly ask` inline (foreground, blocking) for a short question you expect Olly to answer quickly — a quick lookup or a one-line follow-up. When in doubt, run it in the background. ## Chat Commands ### Start a new conversation ```bash cx olly ask "What alerts fired today?" --agent-to-agent-mode ``` This creates a new chat and returns a response along with a **Chat ID** that you can use for follow-up questions. Remove `--agent-to-agent-mode` if you don't have context to share (like quick access to source files) or if the created chat is only for human usage. ### Continue an existing chat ```bash cx olly ask "Tell me more about the error rates" --chat-id --agent-to-agent-mode ``` Use `--chat-id` to continue a conversation and maintain context from previous messages. Background the follow-up too when it kicks off another investigation. ### Model selection Available models include `gpt-5.2` (default), `claude-sonnet-4-5`, `sonnet-4.6`, `gpt-5.4`, `claude-haiku-4-5`. ```bash cx olly ask "Explain this error" --model claude-sonnet-4-5 --agent-to-agent-mode ``` ### Timeout For complex queries that may take longer, increase Olly's response timeout (default: 900 seconds): ```bash cx olly ask "Deep analysis of last week's incidents" --timeout 1800 --agent-to-agent-mode ``` `--http-timeout ` (or `CX_HTTP_TIMEOUT`) sets the HTTP request deadline for all CLI commands, including Olly. It is separate from the Olly response timeout. ### Agent-to-agent mode `--agent-to-agent-mode` defaults to `false`, since `cx olly ask` is used directly by humans as well as by agents. **If you're an LLM/agent, pass `--agent-to-agent-mode`** to opt into shorter, sub-agent-style responses: no charts/tables, clarifying questions instead of guessing, and reliance on your broader context. ```bash cx olly ask "Analyze this for me" --agent-to-agent-mode ``` **It's per-call, not per-chat.** `--chat-id` does not remember it - re-pass `--agent-to-agent-mode` on every follow-up turn, or the mode silently flips back to human-facing mid-conversation. ## Artifacts Olly can generate artifacts like query results, previews, and citations. Artifact IDs appear as links in the agent's response text. ### List all artifacts ```bash cx olly artifacts list cx olly artifacts list -o json ``` ### Get artifact content ```bash cx olly artifacts get cx olly artifacts get -o json ``` The `artifacts get` command automatically: 1. Fetches artifact metadata 2. Downloads content from the presigned URL 3. **Decompresses gzip** content 4. **Parses JSON** and uses spill logic for large content 5. Saves non-JSON text to a temp file Output behavior: - **JSON content**: Displayed directly, or spilled to file if large - **Text content**: Saved to temp file (e.g., `/tmp/cx_results_artifact__.txt`) ## Workflow Examples ### Investigate an issue ```bash # Start investigation — run in the background and poll for completion cx olly ask "Why is the checkout service showing high latency? Check logs with 'checkout:' strings and aws related metrics" --agent-to-agent-mode # Follow up with the chat ID from the response — also background and poll cx olly ask "What changed in the last hour?" --chat-id abc-123-def --agent-to-agent-mode # Once the interaction has completed, get any generated charts cx olly artifacts list -o json | jq '.[0].id' cx olly artifacts get ``` ### Get JSON output for scripting ```bash # Get response as JSON cx olly ask "List top 5 error messages" -o json --agent-to-agent-mode | jq '.response' # Parse artifacts cx olly artifacts list -o json | jq '.[] | {id, filename, created_at}' ``` ### Detailed analysis with specific model ```bash cx olly ask "Perform root cause analysis for the outage on 2024-01-15" \ --model claude-sonnet-4-5 \ --timeout 1800 \ --agent-to-agent-mode ``` ## Key Principles - **Async by default** - run `cx olly ask` as a background process and poll it for completion; only run inline (blocking) for short questions you expect Olly to answer quickly - **Chat IDs enable context** - save the Chat ID from responses to continue conversations - **Use `-o json` for scripting** - pipe to `jq` for filtering and extraction - **Artifact IDs are in response text** - look for markdown links like `[Chart](https://...artifact_view/)` - **Single-profile only** - `cx olly` does not support multi-profile queries - **Large artifacts auto-spill** - JSON content over the configured limit is saved to temp files - **Check source code before asking** - give Olly concrete context from the source code if available, such as which metric to start investigating from, before calling it - **Limit investigation scope** - guide Olly to the correct limited scope, for example limit to just logs or to specific time ranges - **Pass `--agent-to-agent-mode` when calling as an LLM/agent** - it defaults to `false` (human-facing); agents should opt in for shorter, sub-agent-style responses ## Related Skills - **`cx-telemetry-querying`** - for direct DataPrime/PromQL queries without AI agent assistance (covers logs, spans, metrics, RUM) - **`cx-alerts`** - for managing alert definitions