brief.md
c0 brief: Call my name Bastian
For: the shared naming session: the team and an agent. Prepared: 2026-11-09 from design c130's decisions walk (D6: "what's this called?"). Outcome wanted: names, or a shortlist with owners for the checks, for the five things below; recorded in this cycle's Outcome; the repo directory renamed.
The questions from the c130 walk, which this brief is built to answer: What makes most sense to the customer? How does the name integrate with their existing cognitive map of the space they govern and the job they undertake? Where can it meld with their existing mental and technological models?
Why a name is a design act
A name is the first explanation a customer hears, and "the choice of explanation determines the nature of the problem's resolution" (Rittel and Webber, in design's brand/design_methodology.md). The brand's writing principles say the rest: form the problem, then solve it; use customer language, not internal jargon; technical terms when accurate, never jargon as a shortcut. So each candidate is judged by the problem it forms in the customer's head, not by how it sounds to us. Design is assemblage: the pieces come first, the composition second. Hence the long "what exists" section.
What needs a name
| # | Thing | Working words today | Where the name shows |
|---|---|---|---|
| 1 | The native desktop app on the endpoint | "the native app"; qnative (this repo); "Qdash" in the c130 prompt | the tray tooltip, the window title, the Applications folder, the installer, the docs, a Jamf admin's deployment list |
| 2 | The control plane | "control plane"; "Qplane" (the session's word, and a public product page since 2025 Q3); Pulse (the backend) | www, the web app's title, "connect to …", the Docker image, the docs |
| 3 | The third data source, and the thing a base URL points at | plane (c131 D3's default); "a running plane data thingy" | --data plane, --plane-url, the footer ("data: plane · hq.acme.example"), config keys, operator docs |
| 4 | The two roles | overseer / citizen (the team's working words, design c137) | the message schema's sender and receiver, the settings ("messages from …"), the docs |
| 5 | This repository and its crates | qnative | the directory, the Cargo workspace, the bundle id, the binary, CI |
| 6 | The SaaS web app's address | app.qpoint.io (today's app); the team asked on 2026-11-09 whether its successor shares the name | the browser's address bar, SSO redirect URIs, bookmarks, the docs, the Connect flow's default plane URL |
What exists (the pieces)
Qpoint's own family
- The q-prefix. qtap (the sensor; 233 mentions on www.qpoint.io), qcontrol (the thing you deploy; 79), qproxy, qdash (the dashboard crate and UI), qtray, qupdate, qevents, qconfig, qharness, qmcp, qmonitor, qsecurity, qworker; design's qmap, qflow, qpixel. The prefix is the family mark; the suffix says the job in one plain word. A new name should either join this family or be the company name itself.
- Qplane is already public.
www.qpoint.io/products/qplane: "QPlane, QPoint's optional cloud control plane", framed as Compliance Evidence: "a persistent, automated auditor for your backend infrastructure… a searchable, historical log of every data flow". 30 mentions across pricing, products and three blog posts. The frame is 2025 Q3 backend compliance; the roadmap makes the same thing the control plane for endpoints and AI governance. The name can hold both. The page's frame will have to widen (c134's concern). - The team's sentence (session
1b21a3ce): "the control plane is something you connect to, Qcontrol is the thing you deploy." Two verbs, two objects. A third verb arrives with the app: you open it. If each verb has exactly one object, the names are right. - The c130 prompt: "Qdash receives a new native app including the tray." Moving the name Qdash to the native app is on the table. Hazards: "dash" says dashboard, and the brand says "we are not a wall of dashboards"; the app is diagnostics, inventory, events and connect. The Rust crate
qdashcurrently serves the web UI, and the web UI is what moves to the control plane. - Pulse: the backend's internal name. Never customer-facing; its fate is engineering's.
- HQ: the c130 prompt says "Notices from HQ". A warm, human word for the overseer side, and a strong candidate for the sender label in messages.
- "The agent": www uses it for qtap in places ("Kill the agent, exhaust memory"). The product governs AI agents. The endpoint app must never be called the agent.
The customer's words (the corpus)
First-hand and relayed items in ../market-analyst/data/all-calls.json, 205 items across 16 calls, counted by the word they use for the space:
| Word | Items | Word | Items |
|---|---|---|---|
| policy | 36 | audit | 8 |
| agent | 22 | dashboard | 7 |
| governance | 22 | MDM | 6 |
| endpoint | 20 | block | 4 |
| inventory | 17 | EDR | 4 |
| server | 14 | fleet | 4 |
| enforce | 12 | admin | 3 |
| machine | 11 | laptop | 3 |
| visibility | 10 | sensor | 3 |
| device | 8 | control plane | 1 |
Reading: customers think in policy, agents, governance, endpoints and inventory. They almost never say "control plane" (once) or "sensor" (three times); those are our words. Their technological map is MDM (Jamf is named: "open Jamf directly"), EDR and SSO; "Qpoint has to be the source of truth for its own behavior" (a CISO advisor). Their mental map is two sentences: "where is my data going" and "people are running agents everywhere". "Agent" is doubly loaded for them, so it is unavailable to us as a name for anything we install.
Precedents: how the neighbours name the pair
| Vendor | Operator side | Endpoint piece | What the employee sees |
|---|---|---|---|
| Jamf | Jamf Pro | the management framework | Self Service: a separate, friendly name that says what it does for the person |
| CrowdStrike | Falcon console | Falcon sensor | nothing; silent by design |
| Kolide | Kolide admin | Kolide agent | Slack messages and a menu-bar app, under "Honest Security": explain and ask, don't block silently |
| Tailscale | admin console | tailscaled | Tailscale, the same name everywhere; the client is just the product |
| 1Password | 1Password.com, the admin console | — | 1Password, the app |
| Apple | Apple Business Manager | MDM | nothing |
Lesson: operators get "console" or "Pro"; the endpoint piece gets "agent" or "sensor"; the vendors that serve the employee well either give the employee-facing app the product's own name (Tailscale, 1Password) or a plain descriptive one (Self Service). Nobody gives it a coined word.
Criteria (the brand, as a checklist)
- Useful: says what it does for the person who sees it.
- Clear and precise: a word the customer already uses, or an obvious compound; no jargon, no fear.
- Forms the right problem: the operator side is the thing you connect to; the endpoint side is what Qpoint found on this machine and how it is doing; neither claims to be a dashboard.
- Fits the family: q-prefix plus one plain word, or Qpoint plus a plain word; pronounceable; typeable in a flag.
- No collisions: not "agent" (AI agents); not a second "control" (qcontrol already); not "overseer" or "citizen" in a UI; not "dash" if dashboard misleads.
- Works everywhere it shows: the tray tooltip, the window title,
docker pull,--data, the Jamf admin's sentence ("I'll check it in …"), the CISO's sentence to an auditor. - Necessary: fewer names is better. Two product names and one pair of role words is the ceiling.
Suggestions, placed by the mental model each attaches to
Thing 1: the native app
| Candidate | Attaches to | For | Against |
|---|---|---|---|
| Qpoint (the app is simply "Qpoint", as Tailscale's client is Tailscale) | the product as a whole: "open Qpoint" | simplest for the employee; the tray icon is the logo; no second brand to learn; the strongest "one name for the person" | puts the company name on one piece; docs must say "the Qpoint app"; the control plane then needs its own name (it has one) |
| Qdash, moved | our own history | the c130 prompt; the crate exists; no new word | "dash" is dashboard, which the brand disavows and the app is not; the web UI loses the name mid-port; the qdash crate serves the web today |
| Qlocal | the customer's map: local versus the plane | says exactly what it reads: this machine; pairs with Qplane (local ↔ plane) | a coined word; "local" is a modifier, not a thing; odd in "open Qlocal" |
| Qdesk / Qstation | the workplace: where the person sits | warm; Self Service-like | invents a noun; "station" also means a node in a network |
| Qhere | the person: what is happening here | wins the sentence test: "check Qhere" | too cute for the auditor sentence |
| "Qpoint on this Mac"-style descriptive | Jamf's model | zero coining; says the scope | not a name for a crate, a bundle id or a tray tooltip |
Proposed shortlist: Qpoint (the app) · Qlocal · Qdash (moved). The agent's argument: the app is Qpoint to the employee (the tray says Qpoint, the window says Qpoint), with qlocal as the crate and binary name where a word is needed, and the control plane keeps Qplane. One company name, one product name, and the three verbs stay clean: you deploy qcontrol, you open Qpoint, you connect to Qplane.
Thing 2: the control plane
| Candidate | Attaches to | For | Against |
|---|---|---|---|
| Qplane (the incumbent) | the plane ↔ local pairing; the team's word; the public page | already public; nothing to rename; the pairing with local reads well | the public frame is backend compliance evidence; the frame must widen, not the name |
| Qpoint Console | the customer's MDM and EDR map | zero coining; what Jamf and CrowdStrike admins expect; "console" is where IT lives, which is right for the operator | generic; drops the family word; two words |
| Qpoint HQ | the c130 prompt; the human frame | warm; the citizen says "HQ sent this" | playful as a Docker image name; better as a role word than a product name |
| Qhub | nothing in particular; vendor-neutral | avoids "plane" versus "data plane" confusion | a coined word while an incumbent exists |
Proposed: keep Qplane as the product name and use console as the common noun in docs ("the Qplane console", "your Qplane"), so the MDM map attaches without a second name. Widen the public page's frame when c134 ships.
Thing 6, the address. Addresses are not names. Proposal: the product is Qplane and app.qpoint.io stays the SaaS hostname: customers bookmark it, SSO redirect URIs point at it, and a self-hosted plane has its own hostname anyway (hq.acme.example). A new product word would earn a new hostname only if the old one misleads; "app" does not. The alternative, plane.qpoint.io, is on the table if the team wants the hostname to teach the name.
Thing 3: the third source and the thing behind it
The nozzle names each source by what it is to the app: synthetic (made up), local (this machine), and the third plane (a running Qplane, SaaS or self-hosted). "Point the app at a plane" reads naturally once Qplane is the name. Config: --plane-url https://hq.acme.example; footer: "data: plane · hq.acme.example". In docs the thing behind the URL is "a plane"; in the UI it is "your Qplane"; "plane instance" is operator-docs vocabulary only. If Qplane were dropped, the fallback is hub and --hub-url.
One caution on the word: in networking, the data plane is the sensor's side and the control plane the controller's; the team's own "their running data plane" in the D6 answer shows how easy the slip is. Any doc says "control plane" in full once, then Qplane.
Thing 4: the two roles
Overseer and citizen are the working words (design c137). The product words:
| Pair | Attaches to | Note |
|---|---|---|
| operator / you | the brand already says "operators"; the employee is addressed, not labelled | the product-UI tone: front-load, speak to the reader. "Your operator asked you to…" |
| IT / you | the customer's map (a CISO advisor: "a path to contact IT") | plain; but the overseer may be security, not IT |
| HQ / you | the c130 prompt | human, memorable; works as a message sender label: "From HQ" |
| admin / user | the industry default | precise and cold; "user" is the word the brand avoids for people |
Proposed: the overseer is the operator in the web app and in docs, and HQ as the default sender label on messages (configurable per plane, so a customer can write "Security" or "IT"); the citizen is you in the UI and the person in docs; "end user" only when talking to IT. Never "overseer" or "citizen" in a UI.
Thing 5: this repo and its crates
The directory takes the crate word of the chosen app name (qlocal, qdash, or qpoint-app); the crates inside keep plain names (app, nozzle, types, fixtures, stories, messages); the bundle id is io.qpoint.<word>; the binary is <word>. Rename once, at this cycle's Outcome, and update design's CLAUDE.md, c130 Key Changes and c131 D1 in the same change. Until then the app reads its display name from one constant (the CLAUDE.md rule), so the decision costs nothing to revisit once.
The session (60 minutes)
Pre-read: this brief; design c130.native-app/plan.md (the D6 and D9 rulings); the Qplane product page.
- The job and the words (10 min). The corpus table. Each person says aloud the sentence a CISO says to an auditor, the sentence a Jamf admin says to a colleague, and the sentence an employee says to IT. The names must fit those three sentences.
- The family and the collisions (10 min). Deploy, open, connect; agent; dash; control; plane versus data plane.
- Candidates by frame (20 min). The tables above, plus the team's. Strike what fails criteria 1 to 5.
- The 5-question pass (15 min) on the top two per thing: useful, clear, precise, necessary, beautiful. Then the tray-tooltip test, the
docker pulltest, the Jamf-admin test. - Decide, or shortlist with owners (5 min): trademark and web search, crates.io and GitHub names, bundle id, the rename, the www frame note.
Outputs: this cycle's Outcome; design c130 Key Changes; c131 D1 (repo and name); c137 D7 (role words); a note to c134 about the Qplane page's frame; the directory rename.
Checks before a name is final
- Trademark search (USPTO, EUIPO) and a plain web search for the exact word with "software".
- Domains and handles only if the name will stand on its own in public.
- crates.io and GitHub availability for the crate word.
- Say it aloud in three accents; type it in a flag; put it in a tray tooltip at 12 px.
- Negative or crowded meanings: "plane" (aviation), "local" (an adjective), "dash" (dashboards; Dash, the docs app), "hub" (GitHub).
Patterns the team may not be considering
- One name for the employee, more for the operator. The employee meets exactly one thing: the app. Giving it the company's name (Tailscale, 1Password) is the strongest simplification available; the operator can hold Qplane and qcontrol as well.
- Name the verbs, not the nouns. If deploy, open and connect each have one object, the names are right whatever words are chosen.
- Let the public page follow the name. Qplane's frame on www is 2025 Q3 compliance evidence; the roadmap widens it. Keep the name, rewrite the frame.
- Role words as schema fields. In c137's message schema the sender label is a string the plane sets ("HQ", "Security", "IT"), so each customer uses their own word for the overseer and we only choose the default.
- The name constant. The app's display name lives in one place; the tray, the title and the installer follow. Deciding late is cheap; deciding twice is not.