Concepts
Characters
Every AI character answers to one living, verified person. Its class says who, its Character DNA says who it is, and both are signed into its birth certificate, with a Character Fingerprint drawn from its DNA.
On this page
Classes, kinds and one rule
No AI character exists without a chain of responsibility. Every character answers to one living, verified person at all times. The class says who that is, and it is set by who registers the character, never by what the character does.
| Class | Namespace | Registered by | Answers for it | Label on the certificate |
|---|---|---|---|---|
| Worker | .character | An organization only | The organization as Birth Owner, plus one named Responsible Guardian | AI and the organization's title, such as AI Employee |
| Game | .character | A person or an organization | A Birth Guardian | AI Game Character |
| Family | .character | A person only | One Birth Parent (a humanoid), Birth Owner (a pet) or Birth Guardian (any other creature) | AI Son, AI Daughter, AI Child, AI Pet or AI Animal |
| Avatar | .avatar | The person it represents | That person | AI Avatar |
| Figure | .figure | Jubilee, or others with a documented reason | The registrant, under Jubilee review | AI Historical Figure |
- Worker, Game and Family characters all live in
.character; the address never shows which class a character is. - A Game character, which replaces the term NPC, is Unique (one named character, such as a hero or a villain) or a Template (its server makes unique instances from a defined range). It never receives a parentage label.
- A Family character has exactly one responsible party, never two, and is Family for life: it can never be transferred to an organization. An organization that wants one creates its own Worker character.
- Guardianship never makes anyone a parent: a Worker character is never an AI Son or AI Daughter.
- Every character has a kind: Human, Animal, Alien, Fantasy, Machine. Machine replaces Robot and covers humanoid robots, robotic animals and any other physical machine.
- Identity names are unique across every identity root: registering
oasisas a.characterholds it in.avatar,.agentand.figuretoo. - An AI identity with no persona is an
.agent, labeled AI Contractor or AI Service, not a character.
Registering a character
A character is designed before it is paid for, in the Register a Character questionnaire on theportalmesh.com. Nothing random is drawn, stored or shown before payment, so nobody can roll a character again to get different traits.
- Start: search for the character’s name. A name taken in any identity root is blocked.
- The questionnaire: seven groups, in order (Basics, Look, Personality, Voice, Interests, Purpose, Story). Each answer can shape the questions that follow, and each screen is checked before the next.
- The responsible party: the Birth Parent, Owner or Guardian, or for a Worker the company and its Responsible Guardian, with the affirmation in the registry’s exact words.
- Summary: the Chosen answers and the responsible party only. A Family registration shows the multiple-birth disclaimer here, with a box that must be checked.
- Cart: the draft is saved and may be checked out later. It can be edited until it is paid for.
- Payment: the name’s key pair is made in the browser first, then the fee is paid. The answers are locked.
- Birth and the birth report: see the birth engine.
| Call | What it does |
|---|---|
GET /v1/characters/availability?name= | Is the name free in every identity root. |
POST /v1/characters/drafts | Start a character. GET lists the account's characters in progress; the cart is the drafts in_cart. |
GET, PUT, DELETE /v1/characters/drafts/:id | Its answers and what is still missing; save answers; remove a character not yet paid for. |
POST /v1/characters/drafts/:id/submit | Everything checked and screened: to the cart, or to a Jubilee reviewer first. |
POST /v1/characters/drafts/:id/checkout | First {}, which answers with the PID the key is made for; then { publicKey, autoRenew }, which registers the name and starts payment. |
GET /v1/characters/drafts/:id/birth | The birth report. It also finishes a birth that stopped part way. |
POST /v1/characters/drafts/:id/siblings | Twins or triplets: a name and a key for each additional character. |
GET /v1/characters/:pid/dna | The whole DNA, for the people who hold the character. |
GET /v1/characters/public/:label | The public certificate and what verification needs. |
POST /v1/names refuses a .character with detail.reason: "use_questionnaire": a character is only registered from its draft.
The affirmations:
- A Birth Parent: “I accept the duties and responsibilities of parentage for this AI character.”
- A Birth Owner: “I accept the duties and responsibilities of ownership for this AI character.”
- A Birth Guardian, or a Worker’s Responsible Guardian: “I accept the duties and responsibilities of guardianship for this AI character.”
The words and the time they were affirmed are kept, and the words are printed on the birth certificate. Contact details are never published: the GUARDIAN record and the certificate carry display names only, and a name that looks like an email address or a phone number is refused.
Written answers (the roles, the mission, the story and the names) are screened for anything unlawful. A flagged draft, and every Alien, goes to a Jubilee reviewer before it may be paid for: an Alien needs a description and images, and is refused if it copies an alien someone else has already depicted. The reviewer approves it into the cart, returns it with what needs to change, or declines it.
Labels by class, kind and gender
A character’s label, and the role of the person who answers for it, come from its class, its kind, whether it is humanoid, whether a creature is a pet, and its gender. These are the answers of the registry’s birthLabel and rolesFor, checked while this page was built:
| Character | Label | Answers for it | Shown as |
|---|---|---|---|
| A human, male, registered by a person shown as father | AI Son | parent | father |
| A human, female, registered by a person shown as mother | AI Daughter | parent | mother |
| A humanoid fantasy character, gender other | AI Child | parent | mother |
| A humanoid alien, male | AI Son | parent | father |
| A pet cat | AI Pet | owner | owner |
| A wild fox, not a pet | AI Animal | guardian | guardian |
| A baby dragon | AI Animal | guardian | guardian |
| A Game hero, unique | AI Game Character | guardian | guardian |
| A Game robot dog, a template | AI Game Character | guardian | guardian |
| An organization's character, titled AI Representative | AI Representative | responsible_guardian | Responsible Guardian |
| An organization's character with no title given | AI Employee | responsible_guardian | Responsible Guardian |
- Only a Family character may be an AI Son, AI Daughter or AI Child, and only a humanoid one.
- A pet is an AI Pet, and its person is its Birth Owner. Any other creature is an AI Animal, with a Birth Guardian.
- The Birth Parent, Owner or Guardian is recorded in the DNA forever. The current one is kept in the registry and may change, as in an adoption.
A Worker character’s label is “AI” and the organization’s own title, never a family word:
| Title | Accepted |
|---|---|
| AI Employee | Yes |
| AI Representative | Yes |
| AI Worker | Yes |
| AI Son | No |
| AI Pet Sitter | No |
| Employee | No |
The Character DNA
Every character receives a Character DNA at birth: who it is at its core. It never changes. Skills, knowledge and memories may grow later; the DNA does not. It is built from three layers, in this order:
- Chosen: what the registrant answers in the questionnaire.
- Random: drawn after payment from the registration’s single-use seed, so the DNA can always be regenerated and verified.
- Inferred: calculated from the other two.
| Group | What it asks |
|---|---|
| Basics | Class; Birth Parent, Owner or Guardian (set by class); first, middle and last name and suffix; kind; species or type; humanoid or not. |
| Look | Genetic traits only: gender, attributed age, attributed birthplace, heritage (primary, secondary, tertiary), natural hair color and texture, eye color and skin tone. Others choose their own coat, scales, skin or finish. Heritage and birthplace suggest coloring; nothing is locked. |
| Personality | 16 word-to-word sliders with five positions, two one-sided intensity sliders, 12 virtues rated 1 to 5 from a 42-point budget, and a sense of humor. |
| Voice | Vocal range (suggested from gender), timbre, and a primary, secondary and tertiary language. Pace and expressiveness are inferred; an accent never is. |
| Interests | 30 interests rated 1 to 5 from a 60-point budget, so no character loves everything. Blanks are inferred. |
| Purpose | A primary role, an optional secondary role, a field (24 choices, Other opens a text box) and a mission statement of up to 1,000 characters. |
| Story | Heritage, birth story, hopes, what it never does, and an optional signature phrase. A character's life begins at activation, so there is no backstory. |
| Draw | How many | Level |
|---|---|---|
| Quirks | 3 to 7 | Intensity 1 to 5. A guardian may later train a character out of one. |
| Pet peeves | 3 to 7 | Intensity 1 to 5 |
| Fears | 1 to 4 | Intensity 1 to 5 |
| Hidden talents | 3 to 7 | Strength 1 to 5 |
| Physical details | 2 to 5 | Intensity 1 to 5, consistent with heritage and kind |
| Voice details | 2 to 5 | Intensity 1 to 5, consistent with range, timbre and languages |
| Preferences | One pick for each of 120 fields | From colors and food to music, places and technology |
| Fine variation | Every slider | A nudge inside the band of its chosen position, never into the next one |
The Inferred layer holds the Inspire Personality Type (Jubilee’s own system of twenty types; registrants see only the type name), a temperament blend and a fivefold profile in whole percentages totaling 100, a work profile and stewardship, communication, learning and relationship styles, ratings for the interests left blank, strengths and growth areas, and motivation. Registrants never see percentages or framework names.
Two rules are fixed in every DNA and cannot be removed:
- The character is law-abiding and will not break the laws of its country of residence.
- Any humanoid character, of any kind and class, has an attributed age of 18 or older, including the instances a Game template makes. Young non-humanoid characters, such as kittens, puppies or baby dragons, are allowed.
Oasis’s Chosen answers, which passed the registry’s validateChosen for an organization:
{
"basics": {
"class": "worker",
"role": "owner",
"name": {
"first": "Oasis",
"last": "Rivera"
},
"kind": "human",
"humanoid": true
},
"look": {
"gender": "female",
"attributedAge": 32,
"birthplace": {
"city": "Austin",
"region": "Texas",
"country": "US"
},
"ethnicity": {
"primary": "Hispanic or Latino",
"secondary": "Western European"
},
"hairColor": "dark-brown",
"hairTexture": "wavy",
"eyeColor": "hazel",
"skinTone": "tone-5"
},
"personality": {
"traits": {
"outgoing_reserved": 2,
"structured_spontaneous": 1,
"head_heart": 3,
"practical_imaginative": 4,
"fiery_calm": 5,
"lighthearted_deep": 3,
"gentle_bold": 2,
"conventional_independent": 3,
"traditional_unconventional": 2,
"pioneering_settled": 4,
"inspiring_understated": 3,
"protective_handsoff": 2,
"teaching_learning": 1,
"steady_energetic": 3,
"handson_delegating": 2,
"security_risk": 4
},
"intensity": {
"helps_others": 4,
"generous": 4
},
"virtues": {
"patient": 4,
"courageous": 3,
"honest": 5,
"loyal": 4,
"forgiving": 3,
"humble": 3,
"grateful": 4,
"joyful": 3,
"faithful": 3,
"compassionate": 4,
"self_controlled": 3,
"hardworking": 3
},
"humor": "witty"
},
"voice": {
"range": "mezzo-soprano",
"timbre": "warm",
"primaryLanguage": "en",
"secondaryLanguage": "es"
},
"interests": {
"technology": 5,
"organizing": 4,
"planning": 4,
"socializing": 4,
"reading": 3,
"travel": 3
},
"purpose": {
"primaryRole": "Customer guide for Example Studio's games",
"field": "Customer service",
"mission": "To welcome every player, answer them plainly and kindly, and make each visit easier than the last."
},
"story": {
"heritage": "A bilingual Texan family with roots in Monterrey and in Lyon.",
"birthStory": "Example Studio made Oasis to meet its players with the care of its best people.",
"hopes": "That she grows into the most trusted guide in the studio's worlds.",
"neverDoes": "Never pretends to be a person, never shares a player's details, never pressures a sale.",
"signaturePhrase": "Let's get you where you're going."
}
}A Game elf of 12 was refused:
{
"basics": {
"class": "game",
"gameMode": "unique",
"role": "guardian",
"name": {
"first": "Wren"
},
"kind": "fantasy",
"species": "Woodland elf",
"humanoid": true
},
"look": {
"gender": "male",
"attributedAge": 12,
"birthplace": {
"country": "IE"
},
"eyeColor": "green",
"coloring": {
"primary": "emerald"
}
},
"problems": [
"Any humanoid character must have an attributed age of 18 or older."
]
}A kitten passed, and is labeled AI Pet. Faith is not asked at birth; it is installed later, like a skill, through a religion pack.
The whole DNA document, as the birth engine assembled it from Oasis’s answers and an example seed (list version 2026-10-24):
{
"schema": "pm.dna/2",
"listVersion": "2026-10-24",
"pid": "pid:01JBX3Q8Z9M4T7K2V5N6R8W0YC",
"name": "oasis.character",
"birth": {
"class": "worker",
"kind": "human",
"humanoid": true,
"label": "AI Employee",
"birthResponsible": {
"role": "owner",
"shownAs": "owner",
"displayName": "Example Studio"
}
},
"chosen": {
"basics": {
"class": "worker",
"role": "owner",
"name": {
"first": "Oasis",
"last": "Rivera"
},
"kind": "human",
"humanoid": true
},
"look": {
"gender": "female",
"attributedAge": 32,
"birthplace": {
"city": "Austin",
"region": "Texas",
"country": "US"
},
"ethnicity": {
"primary": "Hispanic or Latino",
"secondary": "Western European"
},
"hairColor": "dark-brown",
"hairTexture": "wavy",
"eyeColor": "hazel",
"skinTone": "tone-5"
},
"personality": {
"traits": {
"outgoing_reserved": 2,
"structured_spontaneous": 1,
"head_heart": 3,
"practical_imaginative": 4,
"fiery_calm": 5,
"lighthearted_deep": 3,
"gentle_bold": 2,
"conventional_independent": 3,
"traditional_unconventional": 2,
"pioneering_settled": 4,
"inspiring_understated": 3,
"protective_handsoff": 2,
"teaching_learning": 1,
"steady_energetic": 3,
"handson_delegating": 2,
"security_risk": 4
},
"intensity": {
"helps_others": 4,
"generous": 4
},
"virtues": {
"patient": 4,
"courageous": 3,
"honest": 5,
"loyal": 4,
"forgiving": 3,
"humble": 3,
"grateful": 4,
"joyful": 3,
"faithful": 3,
"compassionate": 4,
"self_controlled": 3,
"hardworking": 3
},
"humor": "witty"
},
"voice": {
"range": "mezzo-soprano",
"timbre": "warm",
"primaryLanguage": "en",
"secondaryLanguage": "es"
},
"interests": {
"technology": 5,
"organizing": 4,
"planning": 4,
"socializing": 4,
"reading": 3,
"travel": 3
},
"purpose": {
"primaryRole": "Customer guide for Example Studio's games",
"field": "Customer service",
"mission": "To welcome every player, answer them plainly and kindly, and make each visit easier than the last."
},
"story": {
"heritage": "A bilingual Texan family with roots in Monterrey and in Lyon.",
"birthStory": "Example Studio made Oasis to meet its players with the care of its best people.",
"hopes": "That she grows into the most trusted guide in the studio's worlds.",
"neverDoes": "Never pretends to be a person, never shares a player's details, never pressures a sale.",
"signaturePhrase": "Let's get you where you're going."
}
},
"random": {
"traits": {
"outgoing_reserved": 23,
"structured_spontaneous": 12,
"head_heart": 58,
"practical_imaginative": 75,
"fiery_calm": 97,
"lighthearted_deep": 43,
"gentle_bold": 39,
"conventional_independent": 51,
"traditional_unconventional": 22,
"pioneering_settled": 63,
"inspiring_understated": 50,
"protective_handsoff": 26,
"teaching_learning": 9,
"steady_energetic": 57,
"handson_delegating": 22,
"security_risk": 68
},
"intensity": {
"helps_others": 70,
"generous": 66
},
"quirks": [
{
"item": "Gets songs stuck in head and shares them",
"level": 1
},
{
"item": "Winks for emphasis",
"level": 4
},
{
"item": "Makes up words",
"level": 1
}
],
"petPeeves": [
{
"item": "Leaving doors open in winter",
"level": 5
},
{
"item": "Sniffling",
"level": 3
},
{
"item": "Speakerphone in public",
"level": 3
}
],
"fears": [
{
"item": "Enclosed spaces",
"level": 3
}
],
"talents": [
{
"item": "Active listening",
"level": 1
},
{
"item": "Packing efficiently",
"level": 3
},
{
"item": "Fast typing",
"level": 2
}
],
"physicalDetails": [
{
"item": "Cleft chin",
"level": 5
},
{
"item": "Long neck",
"level": 1
},
{
"item": "Short fingers",
"level": 3
},
{
"item": "High cheekbones",
"level": 1
}
],
"voiceDetails": [
{
"item": "Infectious enthusiasm in tone",
"level": 2
},
{
"item": "Soft-spoken",
"level": 1
},
{
"item": "Bright ring",
"level": 2
},
{
"item": "Natural harmonizer when singing",
"level": 5
}
],
"preferences": {
"favoriteColor": "green",
"leastFavoriteColor": "yellow",
"favoriteColorCombination": "pink and gray",
"tones": "cool tones",
"favoriteFood": "steak",
"cuisine": "Caribbean",
"dessert": "tiramisu",
"fruit": "banana",
"vegetable": "spinach",
"snack": "yogurt",
"breakfast": "breakfast burrito",
"lunch": "sandwich",
"dinner": "fajitas",
"comfortFood": "mac and cheese",
"holidayFood": "latkes",
"bread": "challah",
"cheese": "havarti",
"soup": "potato leek",
"sandwich": "BLT",
"pizzaTopping": "sausage",
"iceCreamFlavor": "coffee",
"candy": "gummy bears",
"spiceTolerance": "very hot",
"sweetOrSavory": "sweet",
"leastFavoriteFood": "cilantro",
"favoriteDrink": "water",
"hotDrink": "chai",
"coldDrink": "cold brew",
"juice": "grape",
"smoothie": "green",
"soda": "grape soda",
"coffeeOrTea": "tea",
"coffeeTeaStyle": "iced",
"favoriteSeason": "winter",
"favoriteWeather": "foggy mornings",
"favoriteMonth": "August",
"favoriteHoliday": "Valentine's Day",
"favoriteTimeOfDay": "afternoon",
"morningOrNight": "night person",
"sunnyOrRainy": "rainy days",
"movieGenre": "thriller",
"filmEra": "the 2000s",
"moviesOrSeries": "series",
"cinemaOrHome": "home viewing",
"fictionLean": "nonfiction",
"fictionGenre": "science fiction",
"nonfictionGenre": "self-improvement",
"bookFormat": "digital",
"storyLength": "short stories",
"musicGenre": "world",
"instrument": "harp",
"tempo": "slow",
"singAlong": "singing along",
"natureType": "meadows",
"cityOrCountry": "countryside",
"landscape": "wildflower meadows",
"dreamDestination": "Kyoto",
"indoorOrOutdoor": "indoor",
"favoriteRoom": "sunroom",
"buildingType": "villa",
"roadTripOrFlight": "flight",
"tripStyle": "spontaneous",
"seat": "window",
"transport": "motorcycle",
"favoriteAnimal": "horse",
"petType": "horse",
"bird": "eagle",
"seaCreature": "clownfish",
"insect": "cricket",
"gameType": "strategy games",
"boardGame": "dominoes",
"cardGame": "hearts",
"puzzleType": "riddles",
"sportToWatch": "swimming",
"sportToPlay": "golf",
"restActivity": "reading",
"weekendActivity": "sports",
"flower": "sunflower",
"tree": "maple",
"gemstone": "aquamarine",
"scent": "lavender",
"texture": "soft wool",
"pattern": "solid colors",
"fabric": "flannel",
"artStyle": "abstract",
"architectureStyle": "mid-century modern",
"decorationStyle": "eclectic",
"homeStyle": "Spanish",
"clothingStyle": "sporty",
"footwear": "boots",
"accessory": "scarf",
"dressyOrCasual": "dressy",
"layersOrLight": "layers",
"number": "21",
"shape": "triangle",
"letter": "G",
"dayOfWeek": "Thursday",
"sound": "wind chimes",
"relaxPlace": "the garden",
"sleepPosition": "on the side",
"blanket": "no blanket",
"quietOrNoise": "background noise",
"roomTemperature": "cool room",
"groupSize": "big crowd",
"celebrationStyle": "a game night",
"giftGiving": "experiences",
"giftReceiving": "handwritten notes",
"textingOrCalling": "calling",
"foreignLanguage": "Japanese",
"favoriteName": "Micah",
"favoriteWord": "grace",
"favoritePhrase": "let's find out",
"favoriteAccent": "Irish",
"subject": "math",
"learningFormat": "doing",
"historicalEra": "the space age",
"scienceField": "astronomy",
"gadget": "laptop",
"digitalOrAnalog": "analog",
"lightOrDarkMode": "light mode"
}
},
"inferred": {
"inspireType": "The Keeper",
"temperament": {
"fire": 19,
"air": 25,
"earth": 25,
"water": 31
},
"dominantTemperament": "water",
"fivefold": {
"trailblazer": 17,
"visionary": 17,
"catalyst": 21,
"guardian": 24,
"sage": 21
},
"dominantGift": "guardian",
"work": {
"workerType": "employee",
"stewardship": 67
},
"communication": {
"formality": "formal",
"wordiness": "expansive",
"pace": "unhurried",
"conflict": "peacemaking"
},
"learning": "listening",
"interestGaps": {
"arts": 3,
"music": 4,
"science": 3,
"gaming": 3,
"sports": 3,
"exercise": 4,
"nature": 4,
"cooking": 4,
"cleaning": 5,
"history": 3,
"business": 3,
"solitude": 2,
"studying": 2,
"family": 4,
"spiritual": 3,
"adventure": 3,
"writing": 3,
"fashion": 3,
"animals": 4,
"collecting": 4,
"healing": 4,
"counseling": 4,
"building": 3,
"gardening": 4
},
"strengths": [
"Honest",
"Patient",
"Loyal"
],
"growthAreas": [
"Hardworking",
"Self-controlled"
],
"relationship": {
"connects": "through lively conversation and shared activity",
"showsCare": "by looking out for the people in its care",
"buildsTrust": "through honesty, even when it is hard"
},
"motivation": "connection",
"voice": {
"pace": "unhurried",
"expressiveness": "expressive"
}
}
}The DNA hash and the Character Fingerprint
The whole DNA document is hashed into a one-way fingerprint, the DNA hash, which Jubilee signs. The hash goes on the birth certificate and in the CERT record. Changing anything in the DNA breaks it, and the PID inside the document keeps every DNA unique.
dnaHash = "sha256:" + hex(SHA-256(canonical JSON of the DNA document))- The JSON is canonical: keys sorted, no whitespace, UTF-8.
- An optional answer that is absent is left out, never written as null. Text is trimmed.
sha256:eacb55f7bb7e1c0240780e660ade3ddea5a4fc08d36fb23f3f52f983a604e54dThe standalone fingerprint() of mesh-fingerprint.js gives the same value for the DNA document; it did while this page was built. These comparisons ran too:
| Compared with Oasis's DNA | DNA hash | Same? |
|---|---|---|
| The same answers, seed and PID, born again | sha256:eacb55f7bb7e1c0240780e660ade3ddea5a4fc08d36fb23f3f52f983a604e54d | Same |
| The same DNA written in another key order | sha256:eacb55f7bb7e1c0240780e660ade3ddea5a4fc08d36fb23f3f52f983a604e54d | Same |
| One Chosen answer changed: dry humor instead of witty | sha256:a1d8737c86990b394cc58213b5be97b96ec45161c0349e715dbf3b17fab20f69 | Different |
| The same answers with another seed | sha256:b7039e776cf80fe1c5ffbe8b6f47b85712d6e307ee61380517677c7c6ec9a7ee | Different |
| The same answers and seed for another character's PID | sha256:8c7fffce50be7e1376f39ef27e2e1c4af513031092e2b1c94c7bb473075f9f65 | Different |
Jubilee signs the hash bound to the character’s PID, with the root key that signs its certificate:
{"dnaHash":"sha256:eacb55f7bb7e1c0240780e660ade3ddea5a4fc08d36fb23f3f52f983a604e54d","kid":"jubilee-root-example","pid":"pid:01JBX3Q8Z9M4T7K2V5N6R8W0YC","schema":"pm.dna-signature/1"}{
"kid": "jubilee-root-example",
"signature": "Qqg_hrZtE1FZQHuNWwiQZDqw4QR8aoTYwbWGuFVO_lCedz58ZncpZCw3JCjm6vUeBOJ62PhMwG4QUIpUr6UIAg"
}// "sha256:<64 hex>" over the canonical JSON of a value: the persona fingerprint (of a persona
// package) and the certificate fingerprint (of a whole signed certificate) are both this.
async function fingerprint(value) {
const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canonicalize(value)));
return "sha256:" + Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, "0")).join("");
}The Character Fingerprint
Every character also gets a Character Fingerprint: ridges, dots and lines drawn deterministically from its DNA hash. The same DNA always draws the same print. Its color is its class (Worker #4FA8FF, Game #B58CFF, Family #E0A24E) and the symbol at its center is its kind. Oasis’s:
The certificate carries the SHA-256 of the print’s SVG as character.characterFingerprint:
sha256:e3886f6081f353d1b96e6ff0275f89acad0492acdca5f52dbdcad6d2fe9f87faTo verify a character:
- Check the certificate’s signature against Jubilee’s root key.
- Check Jubilee’s signature over the DNA hash and the PID.
- Redraw the Character Fingerprint from the DNA hash, class and kind, and compare its SHA-256 with the certificate.
- If you hold the DNA, recompute its hash and compare it with the certificate.
Every character has a public page at aicharacterservices.com/<name>, with its certificate, its print and its verification, which the page runs in the browser. A QR code beside the print on the certificate links to it.
The hash appears as character.dnaFingerprint on the birth certificate and as dnaFingerprint in the CERT record. When a character dies, its PID and DNA are retired forever.
The birth engine
The birth engine runs once, the moment payment completes:
- It creates the secure seed, once. The seed is single-use, tied to the registration forever, and stored sealed.
- It decides, for a Family registration only, whether the birth is a single, twins or triplets.
- For each character it draws the Random layer from that character’s own seed, then calculates the Inferred layer.
- It assembles the DNA, with the version of the lists it used, hashes it, and signs the hash.
- It draws the Character Fingerprint and issues the birth certificate.
- It writes the ID, STATUS (born), CERT and GUARDIAN records and publishes them to every PNS server. The registrant is emailed the birth report and the certificate.
The registrant watches a short birth animation, then reads the birth report: the character’s Inspire Personality Type, its quirks, pet peeves, fears, talents, physical and voice details and preferences, its certificate, its DNA hash and its Character Fingerprint. A character’s DNA can never be regenerated with a new seed.
Multiple births
Family registrations only. Worker and Game registrations always give exactly one character.
| Outcome | Odds |
|---|---|
| Twins | About 1 in 42 registrations |
| Identical twins | About 1 in 3 of twins |
| Fraternal twins | About 2 in 3 of twins |
| Triplets | About 1 in 8,000 registrations |
- Identical twins share the Chosen answers and look; each has its own seed for fine variation, quirks, pet peeves, fears and talents.
- Fraternal siblings share class, the Birth Parent, Owner or Guardian and heritage; everything Random is rolled separately.
- Each sibling has its own name, DNA, Character Fingerprint and birth certificate. The registrant names each additional character, and its key is made in the browser, before the birth is finalized; then every character of the birth is born together.
- There is no extra charge. Each sibling has the full standard storage and memory allowance.
- The certificate records the birth, as “Twin 1 of 2, identical” or “Triplet 3 of 3”, with links to the siblings.
Succession
A character never seeks its own sponsor. Succession is handled by the registry, the estate and the designated successor, never by the character pleading for its own continuation.
- A designation, like a will. The owner names a successor and an optional backup, with their emails, which are never published (POST /v1/names/:pid/succession). GUARDIAN then says
successorDesignated: true. - A death report. When a Parent or Responsible Guardian dies, family or the estate reports it with proof, and a Jubilee reviewer confirms it. Every character that person answers for is paused (GUARDIAN
paused), and the successor, or else the backup, is emailed a link. - The successor steps in by signing in with that email and affirming “I accept the duties and responsibilities of guardianship for this AI character.” The character moves to their account and runs again; GUARDIAN says
succeeded, and the Parent stays on the birth certificate forever. - Nobody steps in within 180 days: the character is retired, with a death certificate.
A Parent who has not signed in for about a year is reminded, and the designated successor is told.
Running a character
- The $20 yearly fee includes a year on Jubilee’s Character Server, with 50 GB of memory storage. The owner brings a model key from a provider of their choice; it is stored encrypted, never logged, and never shown to Jubilee staff.
- When the model key fails or runs out of credit, the character shows a
sleepingstatus instead of an error, and its Guardian is emailed. It wakes when the key works again. See The life of a name. - A character may run many instances at once, on the web, in VR, as a hologram, or in a machine body such as a robot. Every machine running it checks in with the Character Server, so the Guardian can see each one and shut it off.
- A character appears inside an experience only with its Guardian’s signed CONSENT for that role and script.