Skip to main content

Privacy

AI Usage Constellations Without Exposing Session Names

Explore provider, model, project, date, and metric patterns as a session constellation while keeping conversation titles gated and workspace paths represented only by one-way hashes.

By Novus Stream Solutions Editorial Team. Published 2026-08-20. Last reviewed 2026-08-20. 7 min read.

A relationship graph is useful because proximity exposes structure. Sessions cluster around projects, provider colors reveal a changing tool mix, and repository lineage connects work that belongs to the same anonymous workspace. The same graph can become a privacy failure if its most prominent labels are conversation titles or local directory paths.

The AI Stats constellation is built around a stricter rule: numbers are visible; names are gated. The interactive view receives normalized session measurements. It receives a conversation title only when that session was imported with titles, and it never receives a raw workspace path. Under the default stats-only mode, a node is labelled with a generic provider name such as “codex session.”

Open the live surface at /app/constellation after importing your own exports. The graph shows the 300 most recent active sessions in detail. If your history is larger, older sessions are summarized separately by provider so the interactive graph remains responsive; the statistics above the graph describe only the sessions currently in the graph.

What a node represents

Each node is one normalized AI session, not one prompt and not one file. Its available details can include provider and product, models, start and end time, wall time, AI-active time, prompts, responses, tool calls, agents, tokens, API-equivalent cost, project assignment, and repository lineage.

The word available matters. A ChatGPT export that contains no token counts produces an Unavailable token value. It does not produce zero. A Gemini CLI snapshot that names no model cannot appear in the model distribution under an invented label. Every aggregate above the graph includes its own coverage line so a total over ten reporting sessions cannot masquerade as a total over all 300.

Node colors identify providers. Edges connect adjacent sessions that share the same anonymous repository hash. They do not claim that one conversation caused another, that two prompts share meaning, or that the application read their text. The line is lineage, not semantic similarity.

Three layouts answer three different questions

The constellation can arrange the same filtered sessions in three ways:

  • Projects groups confirmed project assignments and leaves unassigned sessions separate.
  • Providers makes tool mix visible by placing sessions from the same source together.
  • Timeline orders the activity so changes in provider use can be read across time.

Layout changes position, not membership. Search and the provider, model, project, and month controls decide which sessions are in the selection. The summary panel is recomputed from that filtered selection, so the graph cannot show twenty nodes while the headline statistics quietly describe three hundred.

Monthly replay is a filter over the session start month. It is not an animation of prompt content and not a claim about when an export was imported. As elsewhere in AI Stats, dates refer to recorded session activity.

In stats-only mode, raw content and conversation titles do not enter the normalized payload. The graph receives generic session labels, anonymous workspace groups, and the measurements the export supports.Generated motif, seeded from this article’s slug. It is decorative and encodes no measurements.

The name gate runs before the graph

AI Stats supports two cloud-content modes at import time.

Stats only is the default. Parsing happens in the browser. Raw prompts, responses, code, attachments, source files, and local file paths are not uploaded. Conversation titles are also omitted. The normalized session can carry counts, timestamps, durations, token categories, model names, quality labels, and anonymous identifiers where the source provides them.

Stats with titles adds conversation titles to that normalized payload. It does not add prompts or transcripts. Choosing it is explicit because a title can reveal a client, health concern, product codename, or private question even when the messages remain absent.

The constellation’s display-name function applies one order everywhere:

  1. A private alias you deliberately assigned to the session.
  2. The imported title, only when that session’s mode is stats_with_titles.
  3. A generic provider label.

There is no fallback that reaches into another field for something more descriptive. Under stats-only mode, even a non-null title left by old or malformed data is not approved for display. The gate is enforced when the server maps a database row into the client graph payload, before any node renderer or search box can read it.

Workspace grouping without workspace paths

Coding-agent exports often identify a repository or working directory. That structure is valuable: it lets sessions from the same body of work cluster together. The original path is not valuable enough to justify storing it.

The browser therefore converts the workspace path into a one-way repository hash before normalized data is stored. Automatic project labels use anonymous forms such as Workspace 3f9ac1d2; they are not truncated directory names. A project name can also be one you typed yourself. The details panel distinguishes a user-named project from an automatic hash-derived cluster instead of implying both came from the source file.

Repository edges use the hash to connect adjacent sessions. The graph can answer “these sessions came from the same anonymous workspace” without knowing whether the original path was a client repository, a personal folder, or a machine username.

Chat providers commonly expose no workspace at all. Their sessions remain unassigned unless you curate them into a project. Absence of a project edge is therefore not evidence that the work was unrelated; it may simply reflect what the source format records.

Statistics belong to the selection on screen

The summary panel reports sessions, AI-active time, wall time, prompts, tool calls, tokens, API-equivalent cost, and days with activity for the current selection. It also shows provider share, the most common reported models, busiest weekdays, the first and last session dates, active days, and how many nodes use a generic label.

Every total states coverage. This is especially important in a spatial view, where a dense cluster can make a partial number feel representative. Token totals may describe only coding-agent sessions. Model rankings omit sessions whose export has no model field. API-equivalent cost can remain unavailable when tokens or a published model rate are missing.

Selecting one node opens the same provenance-minded details: values the export reported, derivations the adapter made, and Unavailable where the source is silent. The graph does not gain permission to fill gaps simply because a visual looks better with complete tooltips.

Search without turning titles into a side channel

Search matches only fields already present in the graph payload: the approved display label, provider, reported model names, and project label. In stats-only mode the display label is generic, so typing a private conversation phrase cannot reveal whether that phrase existed in an omitted title.

This rule also constrains filtering. A model selector can list only models present in exports. A project selector can list confirmed assignments and anonymous automatic groups. A provider selector uses the known adapter id. Filters narrow the normalized facts; they do not query raw imports.

The accessible view carries the same privacy boundary

The canvas graph is not the only way to inspect the constellation. An ordinary table exposes the same detailed session set as links, including provider, reported models, project, start time, AI-active time, prompts, tools, and tokens. Summary statistics remain text outside the graph.

That fallback is important for keyboard and screen-reader access, but it is also a privacy contract. Accessibility code does not receive a richer record than the visual graph. Both are built from the same gated mapper, so adding a table cannot accidentally reintroduce titles that stats-only mode excluded.

What the constellation cannot tell you

The constellation describes recorded activity and source structure. It cannot establish the quality of a session, whether a tool was worth using, or whether two linked sessions discuss the same subject. Provider clusters partly reflect export capabilities. Project clusters partly reflect what coding tools record and what you curated afterward.

Treat the view as an index into provenance, not an automated story about your work. Use it to find a surprising cluster, narrow the selection, inspect coverage, and open individual sessions. If a metric matters enough to quote, verify its source and calculation on the session page or in /methodology.

For the full import boundary, read Privacy and sharing. For a guided first import using the default content mode, continue with Export and import your first source. The goal is not to make private history visually anonymous after uploading it; it is to prevent the unapproved names and raw content from entering the payload in the first place.

Was this page helpful?

Your answer stays in this browser. It is not sent anywhere, and no account or cookie is involved.