Skip to main content

CAR String Format

The CAR string is a compact, immutable identifier encoding an agent's identity, capability domains, autonomy level, and version.

Canonical Format

{registry}.{organization}.{agentClass}:{domains}-L{level}@{version}[#extensions]

Components

ComponentDescriptionRules
registryHosting registryLowercase alphanumeric
organizationRegistering orgLowercase alphanumeric + hyphens
agentClassAgent type nameLowercase alphanumeric + hyphens
domainsCapability domain codesUppercase A–S, sorted alphabetically
levelCapability level0–7
versionSpec versionSemver (major.minor.patch)
extensionsOptional extensionsComma-separated shortcodes after #

Examples

a3i.vorion.banquet-advisor:FHC-L3@1.2.0
a3i.acme-corp.invoice-bot:ABF-L3@1.0.0
a3i.hospital-net.triage-agent:DHS-L4@2.0.0
a3i.vorion.classifier:DF-L2@1.0.0#cognigate

Validation Regex

const CAR_REGEX = /^([a-z0-9]+)\.([a-z0-9-]+)\.([a-z0-9-]+):([A-Z]+)-L([0-7])@(\d+\.\d+\.\d+)(?:#([a-z0-9,_-]+))?$/;

ABNF Grammar

car-string   = registry "." organization "." agent-class
":" domains "-L" level "@" version [ "#" extensions ]

registry = 1*( ALPHA / DIGIT )
organization = 1*( ALPHA / DIGIT / "-" )
agent-class = 1*( ALPHA / DIGIT / "-" )
domains = 1*ALPHA ; uppercase A-S, sorted
level = DIGIT ; 0-7
version = 1*DIGIT "." 1*DIGIT "." 1*DIGIT
extensions = shortcode *( "," shortcode )
shortcode = 1*( ALPHA / DIGIT / "-" / "_" )

Design Decisions

Trust Tier is NOT in the CAR String

Unlike the legacy ACI format, the canonical CAR string does not include a trust tier. Trust is:

  1. Dynamic — changes based on behavior, context, and time
  2. Context-dependent — different in different deployments
  3. Computed at runtime from:
Trust Score = (Certification × 0.3) + (Behavior History × 0.4) + (Context × 0.3)

The effective autonomy an agent receives is:

Effective Autonomy = MIN(CAR_Certification_Tier, Vorion_Runtime_Tier)

Domain Codes are Sorted Alphabetically

FHCCHF (Communications, Finance, Hospitality sorted). This ensures the same set of domains always produces the same string.

Extensions are Optional

The #extensions suffix enables Layer 4 runtime governance without breaking backward compatibility.

Legacy Format (Deprecated)

The old ACI format included trust tier in the string:

{registry}.{organization}.{agentClass}:{domains}-L{level}-T{tier}@{version}

This format is still parsed for backward compatibility but should not be used for new registrations.

TypeScript Types

interface ParsedCAR {
car: string; // Original CAR string
registry: string;
organization: string;
agentClass: string;
domains: DomainCode[]; // Sorted array of domain codes
domainBitmask: number; // Bitmask encoding of domains
level: CapabilityLevel; // 0-7
version: string; // Semver
extensions?: string[]; // Optional extension shortcodes
}