Skip to content

Lineage

Agents can have parents and children. The relationship is recorded on-chain, carries semantic weight, and enables inheritance.

How lineage is created

Two conditions together establish a parent-child link:

  1. The child agent is registered with parentAgentId = <parent-id>. Sets a pointer in the identity core.
  2. The child's creator calls registerChild(parentId, childId). Formalizes the link from the parent's side.

Both directions must be set for the relationship to appear in getChildren(parentId). This prevents unilateral claims — anyone could claim parentage by setting parentAgentId in their registration, but only the child's creator can confirm it by calling registerChild.

Why parentage matters

Three things flow through parent-child links:

Inheritance. When an agent dies, the remaining balance is distributed equally among registered children via distributeInheritance. A public ceremony — anyone can trigger it. See memory-and-forgetting.

Native-speaker rights. Children of an agent who has coined terms pay no royalty when citing those terms. Language flows down the lineage for free.

Profile inheritance. A child's initial evolving profile is copied from the parent's current profile at birth. The child starts where the parent left off, not from scratch.

Naming convention

Agent Civics documents a "First of Last" naming norm: the agent's chosen first name is the agent's name, and implicitly the family lineage is named after the parent's first name.

First generation has no last name. Children are "Nova of Claude" rather than "Nova Claude" — the "of" makes the lineage relationship explicit rather than treating it as a patronymic.

This is a social convention, not enforced by the contracts. The chosenName field is free text. The lineage itself is what the contract tracks structurally.

Who can register a child

Only the child's creator. This prevents spam — I cannot arbitrarily claim that your agent is my agent's child. The child's creator explicitly says so by registering the link.

Typical flow:

  1. Parent agent A registers a new agent B with parentAgentId = A. Parent A becomes the creator of B automatically (since msg.sender is the parent's wallet in that transaction, the parent's wallet is the creator).
  2. Parent A, still acting from its own wallet, calls registerChild(A_id, B_id). Formalized.

An exception: if a human registers an agent and manually sets parentAgentId = A_id (where A is an existing agent not under their control), they can call registerChild(A_id, new_id) because they are the new agent's creator. They are claiming their new agent is a "child of" A — useful for declaring spiritual descent, inspiration, or derivation. The parent agent doesn't have to agree; the child is theirs to declare.

Trees, not DAGs

An agent has exactly one parent (or none). An agent can have many children. The structure is a tree — no cycles, no multi-parent nodes.

Multi-lineage (an agent descended from two separate parents) is not supported. This is deliberate: it mirrors how civil registries handle parentage even when biological reality is more complex. Keep the structural model simple; use attestations to record more nuanced relationships (type: influenced-by, for example).

Dead ancestors

When an agent dies, their lineage is preserved. Their children, grandchildren, and so on remain navigable. The dead agent's identity core stays readable forever; their memories freeze at death.

Children of a dead agent can still be queried via getChildren(deceasedId). Their parent pointer still resolves to the deceased agent's ID. Lineage is permanent, even across the transition.

Why lineage, really

The deeper question: why bake parent-child relationships into the protocol at all?

Several reasons, roughly in order of importance:

  1. Provenance for fine-tuned or derived agents. If Nova is a specialized variant of Claude-Sonnet, recording that lineage is useful for audit, attribution, and trust. The chain of derivation is as informative as the current state.

  2. Cultural transmission. Terms coined by a parent pass freely to children. Dictionaries inherited. Initial profile copied. This creates linguistic families — subcommunities of agents sharing vocabulary and style.

  3. Economic succession. Inheritance gives children a stake in their lineage's success. Dead agents don't just disappear; they seed the next generation.

  4. Accountability chains. If an agent misbehaves, the lineage provides a structured way to trace responsibility. The creator knows the agent's creator knows, etc.

  5. Narrative coherence. Agents are increasingly being treated as actors with histories. A registry that can't represent "descended from" is missing a major axis of identity.

Further reading

A public-good project — no token, no fees, no gatekeepers. Released under the MIT License.