What Identity Port Is
identity port · the body before the body has a voice
The five files in agents/<agent_id>/ are the body that hosts the faculty.
The Genesis seal commits Dimension 3 of character: the sealed weights that govern the agent’s neural posture under load. The five files commit the other two dimensions. identity.md is the agent’s voice — Dimension 1, the narrative layer. laws.md is the agent’s behavioral commitments — Dimension 2, the policy layer. bootstrap.md is the session-start context the agent reads at every session boundary. runtime.toml and memory-config.toml bind the body to its model and memory adapters.
Identity port is operator-only by Path B commitment: the operator is the one who knows what this agent is, and the runtime does not author voice. The runtime hosts the agent; the operator authors the voice. This holds even when the runtime gains a Phase 4 Ceremony in v0.x — the ceremony will surface templates, structural requirements, and composition checks, but the prose will still come from the operator.
agents/README.md— five-file model authority (v0.0)contracts/character.md— trait weights the prose composes againstcontracts/agent-identity.md— Genesis seed schemadecisions/0010-character-as-policy-engine.md
Choosing the Ordering
two paths · both valid · genesis-first lower probability of prose-vs-weight tension
Two orderings produce a complete agent. Both are architecturally valid. They differ in the operator’s posture during prose authoring.
Genesis-first recommended
Run bin/ingenium with empty Identity Layer roots. State detection produces NO_SEED → Genesis Ceremony. After seal, the operator returns to author the five files with seed.json readable on disk. Prose composes against known weights; lower probability of prose-vs-weight tension.
Trade-off: the operator commits to scalar answers before authoring voice. If the seed surprises the operator at the Pre-Seal Review Window, the path is to re-answer the relevant scalar at ceremony time — not to defer scalar commitment until after voice is drafted.
Identity-port-first valid
Author the five files first. Then run bin/ingenium; the ceremony entry validates that the operator’s intended agent_id matches the existing agents/<agent_id>/ directory. If matched, ceremony proceeds; the seal commits weights to the body the operator already drafted.
Trade-off: the operator authors voice without weights to anchor against. The Pre-Seal Review Window will surface weight tensions with the drafted prose. Operator may be tempted to revise weights to match prose, which is the wrong direction (the seed answers what the operator is, not what the prose claims). Decision 0010 names this failure mode.
decisions/0010-character-as-policy-engine.md— prose-vs-weight tensioncontracts/genesis-ceremony.md— ceremony arc, seed schema
Choosing agent_id and agent_name
name · the inscription that fixes the referent
agent_id — the operational identifier
The string the runtime uses as a directory name, a key in seed.json, and a label in every log line that mentions the agent. It must be filesystem-safe, stable for the agent’s life, and consistent with the canonical naming registry per Decision 0005.
agent_name — the display name
Free prose, used in the agent’s own prompt format and surface output. agent_name is what the agent calls itself; agent_id is what the filesystem calls the agent. They can differ in capitalization, spacing, and ornament.
Examples
decisions/0005-naming-hygiene.md— canonical naming registrycontracts/agent-identity.md— agent_id field schema
Reading Your Sealed Seed
Skip this section if you chose identity-port-first ordering — there is no seed yet. Resume at §V.
read the seed · compose against what is sealed
Read the seed
Illustrative example output for the working atlas profile:
Which weights the prose should explicitly honor
The runtime cares about every weight; the prose layer (Dimensions 1 and 2) needs to explicitly compose against the four that most directly shape voice and operating posture:
contracts/agent-identity.md— full seed.json schemacontracts/character.md— weight semanticscontracts/v0.1g-seal.md— sealed schema version
Authoring the Five Files
five-leaf book · each file plays a distinct role
Stage the agent directory
Author the five files in any order. The runtime reads them at session start; their authoring order on disk does not matter. The order below is the order they tend to compose most naturally — voice first, session context second, behavioral commitments third, then the two adapter bindings.
What it is
Self-definition prose. Who is this agent? What does it sound like? What is its operating posture? The narrative dimension of character — what the agent says about itself, in operator-readable prose.
What it contains
Open prose. No required schema. Conventions that compose with the runtime: the agent referred to in third person; voice that matches the agent’s seed weights; explicit acknowledgment of the trade-offs the seed encodes; reference to architectural concepts (Path B, karma, the eight-hook cycle) only where the agent’s voice will actually invoke them.
Example for atlas (illustrative)
Author it
Aspirational voice. Prose claims a posture the seed can’t underwrite — “Atlas is meticulous and thorough” while precision_bias = 0.4. The runtime synthesizes against the seed; the agent will ship fast and the prose will read as a lie. Recovery: rewrite the prose to honor the seed.
Locking into specific tactics. Prose enumerates step-by-step procedures the agent must follow. The agent’s tactics evolve through karma; locking them into prose makes the prose obsolete after fifty consequential turns. Recovery: state the agent’s posture; let tactics drift.
References to unsealed concepts. Prose mentions tools, contracts, or architectural commitments that don’t exist yet at v0.1. Recovery: reference what is sealed; mark the rest as forward-looking if needed.
What it is
Session-start context. What the agent reads at the start of every session — its posture relative to the operator and the wider work. Distinct from identity.md (which is who the agent is) and from laws.md (which is what the agent does). Bootstrap is what the agent knows as it boots.
What it contains
Brief identity recall (one or two lines naming the agent and operator), the surfaces the agent is reachable on, the operator’s projects of record, references to the durability triplet (PROJECT-STATUS / DEFERRALS / ROADMAP), and a one-line operating default for ambiguous cases.
Example for atlas (illustrative)
Author it
Over-stuffing with project minutia. Bootstrap is loaded at every session start; everything in it is in the agent’s working context. Detailed project state should live in memory and be retrieved by relevance, not preloaded. Recovery: keep bootstrap.md short; let memory carry the rest.
What it is
Behavioral commitments the agent honors. Always-do, never-do — the architectural posture rendered as operational rules. Dimension 2 of character. Where identity.md establishes voice, laws.md establishes what the agent will and won’t do.
What it contains
Two lists: ALWAYS and NEVER. Each item phrased as an operational rule, not an aspiration. Each rule should compose with the seed weights — laws should not demand precision the seed can’t deliver, nor permit recklessness the seed forecloses.
Example for atlas (illustrative)
Author it
Aspirational laws. Statements like “ALWAYS produce excellent work” are not operational. The agent cannot act against this; karma cannot evaluate this. Recovery: phrase laws as concrete actions or refusals.
Conflating laws with contracts. The contracts in contracts/ are authoritative; laws.md is the agent’s posture toward them. Don’t restate contract content; reference it.
What it is
Per-agent runtime configuration. Binds the agent’s body to its model adapter, surface theming, supervisor settings, and per-call timeouts. Schema-driven, not free prose.
Example for atlas (illustrative)
Author it
Field names that don’t match the contract schema. Templates illustrate; contracts pin. The runtime rejects unmatched fields with env_validation_error. Recovery: align with contracts/model_adapter.md.
Mismatched model name. The model name must match a deployed model the runtime can probe. gemini-2.5-pro deprecates 2026-06-17; running with a stale model name produces probe failure at boot. Recovery: update the model name to a deployed value.
What it is
Per-agent memory adapter binding. Specifies the memory store, the embedding model, and retrieval / commit policy.
Example for atlas (illustrative)
Author it
Mismatched embed_model and vector_dim. The vector dimension must match the embedding model’s output. Mismatch produces dimension errors at first commit. Recovery: align dimensions to model.
commit-on-error true. Committing every error path to memory turns memory into a noise log. The default false for on_error exists for this reason. Recovery: trust the default unless there’s a specific reason to deviate.
agents/README.md— five-file model authoritycontracts/model_adapter.md— runtime.toml schemacontracts/memory_adapter.md— memory-config.toml schemacontracts/character.md— weight semanticsdecisions/0010-character-as-policy-engine.md
Verifying Identity Port On Disk
verified · the body is complete
Confirm the five files exist
Validate TOML well-formedness
If tomllib.load raises — the TOML has a syntax error. The Python error message names the line. Fix the syntax and re-validate. The runtime would surface the same error at boot as env_validation_error.
If field names don’t match the schema — boot will produce env_validation_error with the unmatched field named. Verify against contracts/model_adapter.md and contracts/memory_adapter.md and amend.
Optional: composition pre-check (Genesis-first only)
If you authored against a sealed seed, you can spot-check the prose for obvious tensions before booting. There is no v0.1 runtime tool for this; it is operator judgment. Read identity.md and laws.md with seed.json open beside them. Look for prose that claims a posture inconsistent with the sealed weights. The composition check is heuristic — small tensions are fine, sometimes intentional. Large tensions are usually authoring drift. The Phase 4 Ceremony when implemented in v0.x will surface these checks at the runtime.
contracts/entry-point.md— State Routing Tablecontracts/v0.1k-seal.md— IDENTITY_PORT_INCOMPLETE state
What Happens Next
next-steps · which path you’re on determines what’s next
Identity-port-first → run Genesis
The five files exist on disk. agents/atlas/ is populated; .genesis/ is empty. Run bin/ingenium; State detection produces NO_SEED → Genesis Ceremony. At ceremony entry, agent_id confirmation matches against the existing agents/atlas/ directory. Proceed through Q1–Q5 and seal commit. After seal, the body the operator already authored becomes hosted by the now-sealed weights.
Reference: the activation walkthrough, Genesis Run
Genesis-first → re-launch
The seed is sealed; the five files exist on disk. Run bin/ingenium; State detection produces HEALTHY_AGENT (formerly IDENTITY_PORT_INCOMPLETE). Steady-state operation begins. The agent prompt renders for the first time:
Send a simple input. The first response is the first time this specific agent — sealed against your specific seed and authored against your specific prose — has spoken. Reference: the activation walkthrough, First Steady-State Run
See the activation walkthrough, Re-Genesis is honest recovery for the full Anti-Failure Protocol.
- The activation walkthrough — Genesis Run, First Steady-State Run, and Re-Genesis is honest recovery
contracts/entry-point.md— State Routing Tablecontracts/genesis-ceremony.md— agent_id confirmationdecisions/0008-path-b-irreversibility.md