The week of July 20, 2026 covered 6 product areas across Annie and the Anyshift Product Updates series.
The headline is Annie Graph in the terminal. Around it: a public Graph Query Language reference, typed resource resolution in the Graph SDK, Grafana Tempo as a graph APM source, a Backstage integration beta, and Azure Activity Log events in the graph. For the narrative arc, start with the Annie Graph series and the earlier Graph API launch.
Annie Graph lands in the CLI
annie-cli now ships Annie Graph: 19 deterministic production queries from your terminal. Upgrade to v0.8.12 (or later), then run commands like:
annie graph search checkout
annie graph blast checkout
annie graph triage checkout
annie graph check checkout
annie graph exploreThe surface covers discovery (search, show, deps, path, blast, tree, diagram), incident and posture workflows (timeline, triage, brief, owners, posture), automation (check, top, query), and an interactive explore TUI. Every non-interactive command supports --output text|json with the annie.cli/v1 envelope.
This is the delta after last week's annie-cli v0.8.0 project, conversation, and report workflows. Graph commands do not start an Annie chat: they return evidence directly. Open-ended investigation still goes through annie ask.
Graph Query Language reference
The Graph Query Language reference is now public. It documents every deterministic query target, filter, accepted value, alias, and valid form behind annie graph query and the Graph API.
Inspect the catalog from the terminal before you automate:
annie graph query --list
annie graph query --describe blast_radius
annie graph query 'SELECT * FROM connections WHERE resource = checkout'Graph SDK resource resolution
`@anyshift/graph-sdk` moved from last week's v0.2.0 contract cut through v0.3.0 and v0.4.1. The headline addition is typed resource resolution:
npm install @anyshift/graph-sdk@0.4.1const matches = await graph.resolve({ term: "checkout", limit: 10 });
// pick the exact K8S_DEPLOYMENT, then:
const path = await graph.path({
from: { name: "checkout-api", type: "K8S_DEPLOYMENT" },
to: { name: "postgresql", type: "TEMPO_DATASTORE" },
scope: "operational",
});When a Service and a Deployment share a name, resolution lets you pin the type instead of guessing. The SDK capabilities matrix covers the helpers that consume those selectors. The same resolve path is available from the Graph API.
Grafana Tempo in the graph
Grafana Tempo is now a first-class APM source for graph queries. Tempo-backed edges connect Kubernetes workloads to Tempo services and datastores, so operational path, serviceTree, and topology helpers can follow the same dependency story Datadog already provided.
Pass source: "tempo" or source: "auto" on the helpers that accept an APM source. Tempo mode reads services, calls, datastores, messaging destinations, and Kubernetes identity bridges derived from traces. It does not expose individual span search.
Backstage integration beta
You can install Anyshift production context into your own Backstage. The Backstage setup guide walks through the beta npm packages:
yarn workspace app add @anyshift/backstage-plugin-anyshift@next
yarn workspace backend add @anyshift/backstage-plugin-anyshift-backend@nextService pages get live dependencies, monitors, changes, and blast radius from the Graph API. A catalog backend module can synchronize infrastructure resources. Packages are published under the next dist-tag while the integration is in beta. See also the Backstage product overview.
Azure Activity Log in the graph
Azure Activity Log control-plane events now feed the production graph. Annie sees who changed what, when, and which operation ran, on deterministic per-operation chains.
When a write completes, Anyshift refetches the affected resource so properties stay current and ownership edges update in the same cycle (for example a subnet detach removing the NSG edge while unrelated edges survive). Folded sub-resources such as NSG rules retarget to their parent owner instead of leaving orphan events.
FAQ
What shipped at Anyshift the week of July 20, 2026?
Six customer-facing updates. Annie Graph landed in annie-cli with 19 deterministic production queries, the Graph Query Language reference went public, Graph SDK gained typed resource resolution through v0.4.1, Grafana Tempo became a graph APM source, a Backstage integration beta published on npm, and Azure Activity Log events now feed the production graph.
What is Annie Graph in the CLI?
Annie Graph is a set of 19 deterministic, read-only commands in annie-cli for production discovery, blast radius, incident triage, posture checks, and CI gates. Commands return text for operators or versioned JSON for automation, without starting an Annie conversation.
How does Graph SDK resource resolution work?
Graph SDK v0.3 and later add graph.resolve so agents and scripts can pick an exact resource when several share a name. Pass a type like K8S_DEPLOYMENT to disambiguate Service versus Deployment before path, blast, or dependency queries.
What does Grafana Tempo add to the Anyshift graph?
Tempo-backed APM edges let graph.path and related helpers follow operational paths through Tempo services and datastores. You can select source tempo or auto alongside Datadog when building service trees and topology.
What does Azure Activity Log add to the Anyshift graph?
Azure Activity Log control-plane events land in the production graph with who, when, and what-operation attribution. Terminal writes trigger a targeted refetch so resource properties and ownership edges stay current after the change.
