Resource card
A catalog row opens the card: identity, classification, sources, notes, metadata, costs, and this record’s changelog.

Identity
Name, region, provider id, IP. Agent-backed fields come from sync; devops / owner edit a manual record.
Last sync — the agent saw the resource again (even with no field changes). First seen — when the row appeared in inventory.
Sources
One machine often arrives twice (Proxmox qemu/124 and Prometheus host:10.0.0.5). After a merge the card has Sources:
| Action | Effect |
|---|---|
| Set primary | The card’s primary identity. Only this source writes observed metadata. |
| Detach | A non-primary source becomes its own resource again. |
| Unmerge all | Detach every non-primary source. |
Tags, project, and notes stay on the survivor. You cannot detach primary — switch primary first.
Several sources show as a merge pill on the catalog name.
Classification
Type and status come from the shared taxonomy (aliases such as volume → storage, running → active are normalized on sync).
Changing the type locks it: the next agent sync will not overwrite the type. Devops / owner can unlock. A clash with an existing identity+type pair is a validation error.
Project, tags, notes
- Project — at most one, or none. See Projects.
- Tags — only from the owner’s whitelist. Free-form strings are rejected.
- Notes — up to 2,000 characters, author is stored. Author or owner can delete. Add/delete is written to the changelog.
Metadata
Raw agent fields (memory, disk, uptime, hostname…). The table formats known keys (GiB, “N d”, %). Copy and JSON stay raw.
Sync still merges metadata. Only observed keys (primary_ipv4, hostname typically) create changelog rows.
Domains and costs
An apex card has Subdomains (the catalog slice with ?apex=).
Costs shows the active rate. Create and edit rates in Costs; inventory links to the same rate card.
Deletion
Owner can delete a manual record. Agent-backed rows return on the next sync if the provider still reports them — do not delete those “to clean up.”