Skip to content

ARAL Core v1.2

Version: 1.2
Status: Release Candidate
Layers: L1-L5
Requirements: 83
Philosophy: Persona-Centric Architecture


“The persona is not a configuration of an agent—it IS the agent.”

ARAL adopts a persona-centric philosophy where:

  1. Identity is Primary: An agent without a persona has no identity, purpose, or behavioral contract
  2. Everything is Persona-Scoped: Memory, capabilities, reasoning—all bound to persona identity
  3. Cryptographic Provenance: Every action traces back to a signed persona
  4. Dynamic Evolution: Personas can be hot-swapped, orchestrated, and evolved
  5. Accountability Anchor: Personas provide verifiable audit trails

This specification defines the five foundational layers that enable persona-driven agent architectures. The runtime (L1) provides the body, memory (L2) the brain, capabilities (L3) the senses, reasoning (L4) the mind, and persona (L5) the soul.

See Also: Persona as Agent Identity Guide


The Runtime layer manages execution environment, resources, and lifecycle.

IDRequirementLevel
ARAL-L1-001Runtime MUST provide unique agent instance IDMUST
ARAL-L1-002Runtime MUST implement graceful shutdown with configurable timeoutMUST
ARAL-L1-003Runtime MUST expose health check endpointMUST
ARAL-L1-004Runtime SHOULD implement resource quotas (CPU, memory, connections)SHOULD
ARAL-L1-005Runtime MUST provide fallback behavior on resource exhaustionMUST
ARAL-L1-006Runtime MUST log lifecycle events (start, stop, error)MUST
ARAL-L1-007Runtime SHOULD support hot reload of configurationSHOULD
ARAL-L1-008Runtime MUST enforce maximum execution time per requestMUST
ARAL-L1-009Runtime MUST provide metrics endpoint (Prometheus format)MUST
ARAL-L1-010Runtime SHOULD implement backpressure mechanismsSHOULD

See schemas/manifest.schema.json for agent manifest format.


The Memory layer manages agent state and context.

TypeScopePersistence
WorkingCurrent requestNone
Short-termSessionSession duration
Long-termAgent lifetimePersistent
EpisodicSpecific eventsSelective
IDRequirementLevel
ARAL-L2-001Memory MUST implement working memory for current contextMUST
ARAL-L2-002Memory MUST support TTL-based expirationMUST
ARAL-L2-003Memory SHOULD implement vector similarity searchSHOULD
ARAL-L2-004Memory MUST provide atomic read-modify-write operationsMUST
ARAL-L2-005Memory MUST NOT store secrets in plaintextMUST
ARAL-L2-006Memory SHOULD support memory partitioning by contextSHOULD
ARAL-L2-007Memory MUST log all write operations for auditMUST
ARAL-L2-008Memory MUST implement size limits with eviction policyMUST
ARAL-L2-009Memory SHOULD support snapshots for debuggingSHOULD
ARAL-L2-010Memory MUST handle concurrent access safelyMUST

The Capabilities layer defines available actions and tools.

{
"id": "capability-uuid",
"name": "web_search",
"version": "1.0.0",
"description": "Search the web",
"input_schema": { "type": "object", "properties": {...} },
"output_schema": { "type": "object", "properties": {...} },
"permissions": ["network:read"],
"rate_limit": { "requests": 100, "period": "1m" },
"timeout_ms": 30000
}
IDRequirementLevel
ARAL-L3-001Capabilities MUST declare input/output schemasMUST
ARAL-L3-002Capabilities MUST declare required permissionsMUST
ARAL-L3-003Capabilities MUST implement timeout handlingMUST
ARAL-L3-004Capabilities SHOULD implement retry with exponential backoffSHOULD
ARAL-L3-005Capabilities MUST validate inputs against schemaMUST
ARAL-L3-006Capabilities MUST validate outputs against schemaMUST
ARAL-L3-007Capabilities MUST log invocations with trace IDMUST
ARAL-L3-008Capabilities SHOULD implement rate limitingSHOULD
ARAL-L3-009Capabilities MUST handle errors gracefullyMUST
ARAL-L3-010Capabilities MUST NOT exceed declared permissionsMUST
ARAL-L3-011Capabilities SHOULD provide estimated cost/latencySHOULD
ARAL-L3-012Capabilities MUST support cancellationMUST

The Reasoning layer handles decision-making, inference, and LLM interactions.

IDRequirementLevel
ARAL-L4-001Reasoning MUST produce structured action decisionsMUST
ARAL-L4-002Reasoning MUST include confidence scores when applicableMUST
ARAL-L4-003Reasoning MUST respect L5 Persona constraintsMUST
ARAL-L4-004Reasoning SHOULD implement chain-of-thought loggingSHOULD
ARAL-L4-005Reasoning MUST handle ambiguous inputs gracefullyMUST
ARAL-L4-006Reasoning MUST NOT directly modify L2 MemoryMUST
ARAL-L4-007Reasoning MUST NOT bypass L3 Capability validationMUST
ARAL-L4-008Reasoning SHOULD support multiple inference strategiesSHOULD
ARAL-L4-009Reasoning MUST implement request timeoutMUST
ARAL-L4-010Reasoning MUST log all decisions with rationaleMUST
ARAL-L4-011Reasoning MAY implement self-reflection loopsMAY
ARAL-L4-012Reasoning MUST handle model errors gracefullyMUST
ARAL-L4-013Reasoning MUST support multiple LLM providersMUST
ARAL-L4-014Reasoning MUST implement provider fallback chainsMUST
ARAL-L4-015Reasoning SHOULD support provider load balancingSHOULD
ARAL-L4-016Reasoning SHOULD support cost-based routingSHOULD
ARAL-L4-017Reasoning MAY implement multi-provider consensusMAY
ARAL-L4-018Reasoning MUST support content safety moderationMUST
ARAL-L4-019Reasoning SHOULD implement quality-based model selectionSHOULD
ARAL-L4-020Reasoning MUST track per-provider usage and costsMUST
ARAL-L4-021Reasoning MUST support weighted LLM ponderation (blending)MUST
ARAL-L4-022Reasoning MUST normalize ponderation weights to sum to 1.0MUST
ARAL-L4-023Reasoning MUST support advanced llm_config with providers arrayMUST
ARAL-L4-024Reasoning SHOULD support routing_strategy options (specialized, cost_optimized, quality_first, latency_first)SHOULD
ARAL-L4-025Reasoning SHOULD support response aggregation (best_of_n, ensemble, consensus)SHOULD
ARAL-L4-026Reasoning MAY support per-provider configuration overridesMAY
ARAL-L4-027Reasoning MAY support model-specific prompt customization (llm_specific)MAY
ARAL-L4-028Reasoning MAY support task-based routing rules (extensions.routing_rules)MAY

ARAL supports multiple LLM providers with intelligent routing and weighted blending:

{
"llm_config": {
"providers": [
{
"name": "openai",
"models": ["gpt-4", "gpt-3.5-turbo"],
"priority": 1,
"cost_per_1k_tokens": 0.03,
"max_tokens": 8192
},
{
"name": "anthropic",
"models": ["claude-3-opus", "claude-3-sonnet"],
"priority": 2,
"cost_per_1k_tokens": 0.015,
"max_tokens": 200000
}
],
"routing_strategy": "cost_optimized",
"fallback_chain": ["gpt-4", "claude-3-opus", "gpt-3.5-turbo"],
"load_balancing": "round_robin",
"ponderation": {
"enabled": false,
"weights": {
"gpt-5.2": 0.8,
"claude-sonnet-4.5": 0.2
},
"merge_strategy": "weighted_blend"
},
"consensus_mode": {
"enabled": false,
"min_providers": 2,
"agreement_threshold": 0.75
},
"moderation": {
"enabled": true,
"provider": "openai",
"block_on_violation": true
}
}
}
StrategyDescriptionUse Case
cost_optimizedRoute to cheapest model that meets qualityProduction efficiency
quality_firstAlways use highest-quality modelCritical decisions
latency_firstRoute to fastest-responding providerReal-time apps
round_robinDistribute load evenly across providersLoad balancing
ponderationWeighted blend of multiple model outputsEnsemble responses
priority_basedUse providers in priority orderFallback chains
consensusQuery multiple models, require agreementHigh-stakes decisions
{
"decision_id": "uuid",
"timestamp": "ISO8601",
"action": "capability_id",
"parameters": {...},
"confidence": 0.95,
"rationale": "Chain of thought...",
"alternatives": [...]
}

5. Layer 5: Persona — The Agent’s Identity and Soul

Section titled “5. Layer 5: Persona — The Agent’s Identity and Soul”

“The persona is the agent. Without a persona, there is no agent—only an empty runtime.”

The Persona layer is the identity core of an ARAL agent. It defines:

  • Who the agent is (identity, role, purpose)
  • What the agent can do (capabilities, tools, domains)
  • What the agent must not do (constraints, denials, safety limits)
  • How the agent thinks (reasoning style, temperature, verbosity)
  • How the agent collaborates (merge behavior, compatible modes)
  • How the agent is accountable (audit criteria, signatures)

Every ARAL agent is incarnated through a persona. When you instantiate an agent with a persona, you are not merely configuring it—you are giving it life, identity, and purpose.

A persona is a behavioral constitution that:

  1. Defines Identity: UUID, name, role, version
  2. Declares Rights: Allowed capabilities (what it CAN do)
  3. Sets Boundaries: Denied capabilities, max reasoning depth (what it CANNOT do)
  4. Establishes Values: Audit criteria, priorities, thinking style
  5. Builds Relationships: Compatible personas, defer_to, conflicts_with
  6. Ensures Accountability: Cryptographic signature, audit trails
{
"id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"name": "Research Analyst Pro",
"role": "research_analyst",
"version": "1.0.0",
"metadata": {
"category": "research",
"description": "Expert research analyst with multi-model ensemble",
"tags": ["research", "analysis", "expert"],
"skills": ["data-analysis", "synthesis", "critical-thinking"],
"author": "ARAL Standard",
"license": "MIT",
"created": "2026-01-16T00:00:00Z",
"updated": "2026-01-16T00:00:00Z"
},
"config": {
"temperature": 0.3,
"formality": "academic",
"verbosity": "detailed",
"thinking_style": "analytical",
"priority": 80,
"llm_ponderation": {
"enabled": true,
"weights": {
"gpt-4": 0.6,
"claude-opus": 0.3,
"gemini-pro": 0.1
},
"merge_strategy": "weighted_blend",
"execution": "parallel",
"normalize": true
}
},
"prompts": {
"system": "You are an expert research analyst...",
"prefix": "Before answering, verify sources and cite evidence.",
"examples": [
{
"input": "Analyze climate change impact",
"output": "Multi-faceted analysis with citations...",
"context": "Research synthesis"
}
]
},
"capabilities": {
"tools": ["web_search", "data_analysis", "statistical_modeling"],
"domains": ["research-methodology", "statistics", "scientific-writing"],
"languages": ["python", "r", "english"]
},
"constraints": {
"allowed_capabilities": ["read_data", "analyze_data", "search_literature"],
"denied_capabilities": ["delete_data", "modify_source_data"],
"max_reasoning_depth": 15,
"require_confirmation": ["publish_results", "share_data"],
"behavioral_constraints": [
"Always cite sources",
"Acknowledge uncertainty",
"Avoid overgeneralization",
"Check for bias"
]
},
"merge_behavior": {
"compatible_modes": ["chain", "parallel", "consensus"],
"defer_to": ["peer-reviewer-persona-uuid"],
"conflicts_with": ["quick-response-agent-uuid"],
"chain_position": "middle",
"merge_strategy": "weighted_average"
},
"audit": {
"enabled": true,
"criteria": [
"methodological-rigor",
"source-reliability",
"statistical-validity",
"bias-detection"
],
"trigger": "automatic",
"audit_persona_id": "peer-reviewer-uuid"
},
"signature": "Ed25519-base64-encoded-signature",
"signature_algorithm": "Ed25519",
"public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
}
IDRequirementLevel
ARAL-L5-001Persona MUST define unique UUID identifierMUST
ARAL-L5-002Persona MUST define allowed/denied capabilitiesMUST
ARAL-L5-003Persona MUST include metadata (category, description)MUST
ARAL-L5-004Persona SHOULD be cryptographically signedSHOULD
ARAL-L5-005Persona MUST be validated at agent startupMUST
ARAL-L5-006Persona constraints MUST be enforced by runtimeMUST
ARAL-L5-007Persona MUST include semantic versionMUST
ARAL-L5-008Persona MAY define behavioral config (temperature, verbosity)MAY
ARAL-L5-009Persona MUST be logged at startup and on switchMUST
ARAL-L5-010Runtime MUST support persona hot-swappingMUST
ARAL-L5-011Persona switching MUST preserve critical agent stateMUST
ARAL-L5-012Persona MUST include system prompts for behavior definitionMUST
ARAL-L5-013Persona switching MUST emit lifecycle eventMUST
ARAL-L5-014Persona MUST validate signature before loadingMUST
ARAL-L5-015Persona registry MUST support discovery by tags/categoryMUST

Every persona follows a lifecycle:

DEFINED → VALIDATED → SIGNED → REGISTERED → INSTANTIATED → ACTIVE → SWAPPED/TERMINATED → ARCHIVED

Birth (Instantiation):

const agent = await runtime.instantiate({
persona: await loadPersona("research-analyst-pro.json"),
memory: createPersonaMemory(persona.id),
capabilities: filterCapabilities(persona.capabilities),
reasoning: configureReasoning(persona.config),
});

Life (Execution):

  • Agent executes with persona identity
  • Every action traces to persona signature
  • Constraints enforced in real-time
  • Audit criteria monitored continuously

Death (Termination):

await agent.terminate({
reason: "scheduled_shutdown",
archive: true, // Preserve audit records
notify: ["audit-system", "monitoring"],
});

5.5 Persona Hot-Swapping (Identity Transformation)

Section titled “5.5 Persona Hot-Swapping (Identity Transformation)”

Agents MUST support dynamic persona switching without requiring restart:

// Hot-swap persona (identity transformation)
await agent.hotSwap({
newPersona: await loadPersona("data-scientist.json"),
transition: {
mode: "graceful", // or 'immediate'
preserve_state: ["long_term_memory", "session_context"],
clear_state: ["working_memory"],
require_approval: true,
rollback_on_error: true,
},
});

Swap Requirements:

  • ✅ Validate new persona signature
  • ✅ Check swap compatibility (merge_behavior.compatible_modes)
  • ✅ Preserve long-term memory and session context
  • ✅ Clear working memory if specified
  • ✅ Emit persona_switched event with before/after IDs
  • ✅ Log transition with full audit trail
  • ✅ Support rollback on validation failure
  • ✅ Maintain cryptographic binding to new persona

Philosophical Note: When an agent hot-swaps personas, is it still the same agent? ARAL’s answer: No and Yes—the consciousness (persona) has changed, but the substrate (runtime + persistent memory) continues.

All agent resources are persona-scoped:

ResourceScoping
Memorypersona:{persona_id}:memory:{type}
CapabilitiesFiltered by persona.capabilities + persona.constraints
ReasoningConfigured by persona.config + persona.config.llm_ponderation
Audit LogsTagged with persona_id + persona_signature
MetricsLabeled with persona_name + persona_version

Each agent instance is cryptographically bound to its persona:

{
"agent_instance_id": "runtime-generated-uuid",
"persona_id": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"persona_version": "1.0.0",
"persona_signature": "Ed25519-signature-of-persona-hash",
"binding_timestamp": "2026-01-16T12:00:00Z",
"binding_signature": "runtime-signed-binding-proof",
"binding_algorithm": "Ed25519"
}

This creates verifiable provenance: Every action can be cryptographically traced back to a specific persona version.


IDRequirementLevel
ARAL-CL-001All layers MUST use Envelope format for communicationMUST
ARAL-CL-002All layers MUST propagate trace_idMUST
ARAL-CL-003All layers MUST implement structured loggingMUST
ARAL-CL-004All layers MUST handle errors without exposing internalsMUST
ARAL-CL-005All layers SHOULD emit OpenTelemetry metricsSHOULD
ARAL-CL-006All layers MUST NOT block on I/O without timeoutMUST

ARAL-CORE defines the foundational five layers for persona-centric AI agents.

LayerRequirementsKey Features
L1 Runtime10Lifecycle, health checks, metrics, resource management
L2 Memory10Persona-scoped memory, TTL, audit logging, concurrent access
L3 Capabilities12Schema validation, permissions, rate limiting, timeout handling
L4 Reasoning22Multi-LLM orchestration, ponderation (weighted blending), routing
L5 Persona15Identity, hot-swapping, cryptographic binding, behavioral contract
Cross-Layer6Envelope protocol, trace propagation, structured logging
Total ARAL-CORE83+15 from v1.1.0
VersionDateChangesRequirements
1.02026-01-16Added persona-centric philosophy, hot-swapping (L5 +5), multi-LLM orchestration (L4 +8), ponderation (L4 +2)83
1.0 (initial)2026-01-15Initial release68

© 2026 IbIFACE — CC BY 4.0