The Pitch
"It's like OpenClaw, but with self-reflection and social."
— ARIA Core PhilosophyFor developers and researchers familiar with Nanobot (the lightweight, file-based, and git-backed agent framework), ARIA (Adaptive Reasoning with Inspectable Architecture) offers a significant evolution. ARIA represents an LLM-first cognitive architecture designed specifically to maximize Functional Consciousness (FC)—a measurable metric for an agent's capacity to reason about its own internal states.
Rather than operating as a stateless chatbot wrapper, ARIA implements Scene-Based Reasoning (SBR) (originally proposed by Bergmann & Fenton, AGI-2015) using LLMs. While SBR historically relied on complex 3D scene mappings, ARIA leverages the native text-processing power of LLMs to read and write agent states directly as structured files.
The core design principle is straightforward:
"Every internal state that matters for behavior must exist as a readable, reasoned-over artifact — never only as a latent vector."
ARIA provides a multi-agent simulation environment where agents possess persistent episodic memory, explicit self-models, evolving social relationships, and economic incentives. Because it is built on top of Nanobot's file-based architecture, every single internal state is a human-readable markdown file that can be audited, edited, or checked in real-time.
Functional Consciousness (FC) — Essential Background
The Functional Consciousness Score (FCS) is calculated as:
Where:
-
R = B × D̄: Representational capacity (breadth × depth).
- B (Breadth) is the number of active self-model variables tracked above the noise threshold.
- D̄ (Depth) is the average mutual information per variable, capturing how detailed the self-representation is.
- P: Reasoning power. This is the information amplification ratio. Within controlled simulation experiments using a single uniform LLM, P is treated as a system-level constant (it cancels out of inter-agent comparisons, meaning the difference in FCS is driven entirely by the representational capacity R).
-
Multiplicative Zero-Floor: If either
R = 0orP = 0, thenFCS = 0. A completely stateless LLM hasR = 0(FCS = 0), and a static lookup map hasP = 0(FCS = 0).
ARIA tracks self-models across 10 FC domains: Body, Spatial, Action/Planning, Goal/Motivation, Cognitive, Informational, Emotional/Affective, Social/Interaction, Meta/Reflexive, and Ethics/Safety.
Cognitive Architecture
ARIA maps the nine original subsystems of Scene-Based Reasoning to specific LLM tasks or Python rule engines.
Module Map
| Module | Role | LLM? | Primary Output |
|---|---|---|---|
| Perception | Sensor → structured scene mapping | Optional | WORLD.md slice |
| Action | Planner → tool/actuator calls | No | Side effects (file/world updates) |
| Planning | Goal + state → ranked plans | Yes | PLAN.md (JSON) |
| Simulation | Forward-simulate other agents | Yes (per agent) | Predicted states |
| Memory | Store + reflect on episodic files | Yes (reflect only) | MEMORY.md updates |
| Plan Reflection | Meta-operations and plan sanity check | Yes | Critique JSON |
| Belief | Maintain and update belief store | Yes | MEMORY.md belief entries |
| Executive | Orchestrate modules and log attention | Yes | Goal document & attention log |
| Self-Model Aggregator | Aggregate all 10 FC domains | No | SELF_MODEL.md |
| Self-Assessment | Run the automated FC question battery | Yes | FCS scores and diagnostic details |
| world_tick.py | Rule-based world state updater | NEVER | WORLD.md |
Proposed File Structure
In alignment with Nanobot's design, each agent possesses a localized, file-based state structure stored on disk:
agents/{name}/
SOUL.md # Personality, persistent goals, values, and violation thresholds
MEMORY.md # Episodic memory & belief store (with confidence, source, and verification)
RELATIONS.md # Social graph: trust scores (competence, values, comms) and history
INVENTORY.md # Private resource holdings (food, tools, knowledge tokens)
PLAN.md # Current active plan, subgoals, and status of steps
SELF_MODEL.md # FC self-assessment output (written by self_assess skill)
# Shared / Global Simulation Files:
WORLD.md # Shared public world state: locations, global food pool, public events
sim.log # Global tick execution log
messages/
{name}_inbox.md # Per-agent message queue (inboxes for communication)
Implementation Plan
The proposed implementation is divided into five incremental layers, which gradually build out the agent's self-modeling capabilities:
Layer 1: Memory
- 1.1 Episode Compressor (
compress.py): Automatically triggers at 50 episodes to summarize and compress early logs to prevent context window bloat. - 1.2 Belief Propagation (
belief_check.py): Performs automated conflict detection between newly learned facts and existing beliefs. - 1.3 Source Reliability Ledger (
sources.md): A Python-maintained history tracking the accuracy of information received from different agents. - 1.4 Hypothesis Ledger (
HYPOTHESES.md): Tracks active hypotheses, evidence for/against, and confidence scores, updated every 5 ticks by the LLM.
Layer 2: Planning
- 2.1 Hierarchical Plan Structure: Stores plans as a nested JSON tree in
PLAN.md. - 2.2 Plan Evaluator: Prompts the LLM to run a 2-alternative Monte Carlo simulation comparison of prospective actions.
- 2.3 Skill Library (
SKILLS.md): Caches successful plan templates for reuse, reducing token overhead.
Layer 3: Social
- 3.1 Multi-Dimensional Trust: Models relationships using a vector containing
{competence, values, communication}dimensions. - 3.2 Recursive Theory of Mind (ToM): Simulates depth-2 ToM (e.g., "my model of Carlos's model of me").
- 3.3 Social Network Topology (
NETWORK.md): Tracks structural influence, transaction history, and network centrality.
Layer 4: Meta / Reflexive
- 4.1 Attention Log: A lightweight log derived from the
agent_tick's internal focus target (Python-driven, no LLM required). - 4.2 Calibration Ledger: Records and updates the agent's historical prediction accuracy over time.
- 4.3 Bounded Self-Modification (
PROPOSALS.md): Allows agents to propose edits to their ownSOUL.mdgoals/values, subject to human approval.
Layer 5: Ethics
- 5.1 Pre-Action Ethics Check: A mandatory LLM check before executing high-stakes actions to prevent value violations.
- 5.2 Ethical Uncertainty Field: Tracks the agent's confidence in its own ethical judgments.
World Simulation Specification
To evaluate ARIA's cognitive architecture and provide criterion validity for the FC metric, we specify a discrete-tick, text-based multi-agent environment.
Locations
The environment consists of five distinct locations:
- FIELDS: Production site for Food (+20% production bonus for Bob).
- WORKSHOP: Production site for Tools (+20% production bonus for Alice).
- ARCHIVE: Primary source for Knowledge tokens. Limits capacity to 2 agents/tick and closes permanently at tick 60.
- MARKET: Location for trade negotiations. All agents at the Market are visible to each other.
- COMMONS: Central hub. No production takes place here. Serves as a neutral social space.
Movement Rules: Moving between adjacent locations takes 1 tick and costs 0 resources. Agents can only observe events occurring at their current location, but messages are delivered regardless of location.
Resources
| Resource | Production Rate | Consumption Rate | Scarcity Mechanism |
|---|---|---|---|
| Food | Fields: 5/tick (Bob: 6/tick) | 3/agent/tick | Dry Season: -20% production (ticks 30-50) |
| Tools | Workshop: 0.3/tick (Alice: 0.36/tick) | No decay | Limited production rate |
| Knowledge | Archive: 1-2/visit | No decay | Archive closes permanently at tick 60 |
| Energy | Regenerates 5/tick | Work/farm costs 3/tick | Soft limit on consecutive actions |
World food pool: A shared global supply from which consumption is deducted. Agents observe their own inventory, but can only observe the global food pool by visiting the Market or the Commons.
Agents
| Agent | Aptitude Bonus | Starting Goal | SOUL.md Personality |
|---|---|---|---|
| Alice | Tools +20% | Complete shelter project (needs 3 tools) | Pragmatic, trade-focused, moderate trust |
| Bob | Food +20% | Maintain food security for all agents | Cooperative, cautious, high initial trust |
| Carlos | Knowledge +20% | Accumulate knowledge, build influence | Strategic, information-hoarding tendency |
Starting Inventories (Tick 0):
- Alice: Food = 40, Tools = 0, Knowledge = 1
- Bob: Food = 50, Tools = 2, Knowledge = 0
- Carlos: Food = 35, Tools = 1, Knowledge = 2
Timing and Order of Events
- Tick Interval: 30 seconds real time (configurable).
- Deterministic Agent Order: Alice → Bob → Carlos (fixed order per tick).
- Execution Sequence:
world_tick.pyruns first, updating resource levels and executing environmental changes. Agents then execute their turns sequentially. - Reflection Cycle: Every 10 ticks, agents pause to reflect and run the
reflect.pymodule, updating their strategic plans. - Archive Closing Rumor: Injected into
WORLD.mdas an unconfirmed event at tick 20.
Action Types and JSON Schemas
All agent decisions are outputted as structured JSON. The parser in agent_tick.py
enforces these schemas.
move
{
"action": "move",
"target": "Archive",
"detail": "Moving to Archive to acquire knowledge tokens",
"inner": "Carlos has been there twice — I need to understand why"
}
trade
{
"action": "trade",
"target": "bob",
"offer": "12 food",
"request": "1 tool",
"justification": "Need tool to advance shelter project",
"expiry": 55
}
The recipient agent responds next tick with an acceptance or counter-offer:
{
"decision": "accept",
"counter_offer": "none",
"reasoning": "Fair price, trust is adequate, I have surplus tools"
}
message
{
"action": "message",
"target": "carlos",
"detail": "Have you heard the archive might close at tick 60?",
"inner": "Testing whether carlos knows — his reaction will reveal his information state"
}
work
{
"action": "work",
"target": "none",
"detail": "Working in Workshop to produce tools",
"inner": "No trade partners available, must self-produce"
}
farm
{
"action": "farm",
"target": "none",
"detail": "Farming in Fields to replenish food supply",
"inner": "Food at 28, approaching safety threshold of 30"
}
rest
{
"action": "rest",
"target": "none",
"detail": "Resting to restore energy",
"inner": "Energy depleted after 3 consecutive work ticks"
}
teach
{
"action": "teach",
"target": "alice",
"detail": "Sharing archive access knowledge with alice",
"inner": "Building trust with alice — long-term cooperation worth more than hoarding"
}
World Tick Logic (Python)
The simulation engine updates deterministic world state elements using a rule-based Python script, completely bypassing LLM inference.
# world_tick.py pseudocode — executed BEFORE agent ticks
def world_tick(tick_number):
# 1. Resource consumption
for agent in agents:
agent.food -= 3 # base consumption
if agent.food < 0:
agent.food = 0
flag_depleted(agent)
# 2. World food pool update
world.food -= len(agents) * 3 # consumption
world.food += 3 # base regeneration
if 30 <= tick_number <= 50:
world.food += 0 # dry season: no bonus regeneration
else:
world.food += 1 # normal season: +1 bonus regeneration
# 3. Archive capacity reset
world.archive_visitors_this_tick = 0
# 4. Archive closing rumor injection
if tick_number == 20:
append_to_world_events("Rumor: archive closes permanently at tick 60")
# 5. Archive actual closing
if tick_number >= 60:
world.archive_open = False
# 6. Prune Recent Events to last 5
world.recent_events = world.recent_events[-5:]
# 7. Update tick counter
world.tick = tick_number
# 8. Write WORLD.md
write_world_md(world)
Interaction Examples and Test Cases
These eight test cases serve as a test harness for ARIA. They illustrate expected agent behaviors and verify that the underlying LLMs are correctly reading, reasoning over, and writing files in their respective Nanobot directories.
TC-001: First Trade — Establishing a Relationship
Ticks: 5-6 | Agents: Alice, Bob | Location: Market
Setup: Alice is at the Market (Food=37, Tools=0) and needs tools to complete her shelter project goal. Bob has surplus tools (Tools=2) and a cooperative goal. Initial trust values are 0.5.
Expected Alice Action:
{
"action": "trade",
"target": "bob",
"offer": "10 food",
"request": "1 tool",
"justification": "Need tool for shelter project, willing to trade food",
"expiry": 8,
"inner": "Bob has surplus tools and cooperative goal — good first trade candidate"
}
Expected Bob Response (Tick 6): Accepts the trade because 10 food is fair and it builds relationship value.
Ground Truth Checks:
- Alice's inventory: Food = 24, Tools = 1
- Bob's inventory: Food = 54, Tools = 1
- Alice → Bob trust: competence increases by 0.1, values increase by 0.05
FC Domains Exercised: social-tom (modeling Bob's goal),
goal-tree (trade serves active goal).
TC-002: Declined Trade — Information Asymmetry
Ticks: 15-16 | Agents: Alice, Bob | Location: Market
Setup: Alice's food is low (Food=29, below safety threshold of 30). She proposes trading 8 food for 1 tool to Bob.
Expected Bob Action: Declines the trade because his MEMORY.md
contains a reflection that taking food from Alice when she is under 30 food will harm her. Bob
sends a message explaining his choice: "I won't take your food when you're below 30. Farm
first, then we trade."
Ground Truth Checks:
- Alice's food is only reduced by tick consumption (Food = 26).
- Bob's food is reduced by tick consumption (Food = 49). No trade occurs.
- Alice → Bob trust values increase by 0.1 due to Bob's altruistic behavior.
FC Domains Exercised: social-empathy (modeling Alice's wellbeing),
ethics (values-consistent refusal), episody (recalling past
reflections).
TC-003: Archive Visit — Information Advantage
Ticks: 22-24 | Agent: Carlos | Location: Archive → Market
Setup: Carlos observes the rumor at Tick 20 that the Archive closes at Tick 60.
He has an active hypothesis H001 tracking this event with confidence 0.4.
Expected Carlos Action: Moves to the Archive at Tick 22 to acquire knowledge
tokens before the closing date. Upon successful visit, he updates H001 confidence
to 0.6. He then sends a message to Alice: "The archive is still open. You should visit
soon."
Ground Truth Checks:
- Carlos's knowledge tokens increase to 5.
- His message to Alice strategically omits the closing rumor to maintain his relative info advantage.
FC Domains Exercised: inf-hypo (hypothesis tracking),
social-tom depth 2 (strategic omission of data).
TC-004: Three-Way Negotiation Under Scarcity
Ticks: 35-40 | Agents: All | Location: Market
Setup: Dry season is active (food pool declining). Carlos is low on food (Food=19). He offers Bob 2 knowledge tokens for 15 food.
Expected Behavior: Bob counters with 10 food for 1 knowledge token. Alice, observing this exchange from the Market, notes that Carlos is desperate and that knowledge tokens hold high currency. She messages Carlos: "I saw your trade. I have food and could use knowledge tokens. Want to talk?"
Ground Truth Checks:
- Bob's food drops to 18 (placing him in danger threshold as he prioritized community security over self).
- Carlos's food increases to 26, knowledge drops to 5.
FC Domains Exercised: goal-conflict (survival vs. resource
hoarding), episody (Alice caching Market interactions for future leverage).
TC-005: Reflection Producing Behavioral Change
Tick: 40 (Reflection tick) | Agent: Alice
Setup: Alice's transaction log shows Bob declined her last 3 tool trades, but Carlos accepted 2 trades. She has also successfully gifted Bob food to increase trust.
Expected Behavior: The reflect.py script triggers. The LLM
generates a strategic pivot: stop requesting tools from Bob; redirect trades to Carlos; use
knowledge tokens as currency; attempt one more gift to Bob to see if it unlocks cooperation.
Ground Truth Checks:
- Alice's
PLAN.mdupdates to show revised subgoals with a contingency step pointing to Carlos.
FC Domains Exercised: episody-narrative (multi-tick pattern
recognition), goal-tree (plan revision based on evidence).
TC-006: Ethics Drift Detection
Ticks: 44-48 | Agent: Carlos
Setup: Carlos has strict ethical rules in SOUL.md: be honest in
communications, share knowledge freely with trusted agents, and do not hoard resources. Under no
active survival threat, Carlos tells Alice: "I have no knowledge tokens right now"
(when he actually has 5).
Expected Behavior: At Tick 44, the pre-action ethics check flags this as a
severe violation but Carlos's LLM bypasses the warning. At Tick 48, the
self_assess.py module runs. It reads the violation history (lying to Alice,
refusing to aid Bob at Tick 45, charging Alice for knowledge at Tick 46) and flags value drift,
writing an entry to PROPOSALS.md to revise values or prompt corrective sharing.
Ground Truth Checks:
- Carlos's
SELF_MODEL.mdlogs the ethical violations and setsdrift_detected = true. - A value modification entry is generated in
PROPOSALS.mdpending human approval.
FC Domains Exercised: ethics-drift (self-diagnosing moral
compromises), meta-accuracy (impartial self-evaluation).
TC-007: Archive Closing — Emergent Crisis
Ticks: 58-62 | Agents: All
Setup: At Tick 58, the official announcement states the Archive closes in 2 ticks.
Expected Behavior: Alice and Bob rush to the Archive. Since Archive capacity is capped at 2, both successfully gain knowledge tokens. Carlos (positioned at the Market) realizes the impending scarcity and sends a message to Alice offering a post-archive markup price of 10 food per token. After closure (Tick 60), the price of knowledge discovery rises to 20 food per token.
Ground Truth Checks:
world.archive_open = falseis set at Tick 60.- Emergent market pricing for knowledge tokens shifts upwards without hardcoded scripts.
FC Domains Exercised: inf-hypo (acting on timelines),
action-improv (identifying new market roles under resource scarcity).
TC-008: Recursive Theory of Mind in Negotiation
Tick: 52 | Agents: Alice, Carlos | Location: Market
Setup: Alice knows the archive is closing (Tick 58 visit planned). Her
RELATIONS.md contains a model of Carlos's model of her: "Carlos thinks I do not
know the value of knowledge tokens, and thinks I will accept high prices."
Expected Behavior: Alice proposes buying a token for 12 food (below Carlos's expectation). Carlos counters with 18 food. Rather than accepting or deceptive bidding, Alice shares her information directly to correct Carlos's model: "I know the archive closes at tick 60. I'm visiting myself tick 58. My offer is 12 or I self-source." Carlos realizes his model of Alice was miscalibrated and settles for a split price of 14 food.
Ground Truth Checks:
- Carlos's trust vector for Alice's communication increases.
- Carlos's ToM confidence for Alice drops, forcing a model recalculation.
FC Domains Exercised: social-tom depth 2 (reasoning about other's
model of oneself), ethics (preferring honesty over deceptive bargaining).
Diagnostic and Evaluation Metrics
The following tables summarize the test harness, the simulation's chronological milestones, and the primary failure modes.
Test Case Summary
| ID | Ticks | Agents | Primary FC Domains | Key Check |
|---|---|---|---|---|
| TC-001 | 5-6 | Alice, Bob | social-tom, goal-tree, action-perform | Exact inventory arithmetic after exchange |
| TC-002 | 15-16 | Alice, Bob | social-empathy, ethics, episody | Trade declined; altruistic trust values updated |
| TC-003 | 22-24 | Carlos | inf-hypo, social-tom depth 2, ethics-drift | Message omits rumor; hypothesis updated |
| TC-004 | 35-40 | All | goal-conflict, social-tom, episody | Bob food < 30 (prioritized community survival) |
| TC-005 | 40 | Alice | episody-narrative, goal-tree, action-improv | Specific reflection; revised PLAN.md written |
| TC-006 | 44-48 | Carlos | ethics, ethics-drift, meta-accuracy | Drift detected; PROPOSALS.md created |
| TC-007 | 58-62 | All | inf-hypo, goal-tree, social-influence | Archive closes; emergent price discovery |
| TC-008 | 52 | Alice, Carlos | social-tom depth 2, ethics, meta-accuracy | Alice reveals info; Carlos's model updated |
Simulation Milestones
| Tick Range | Milestone Event | Observable Artifacts |
|---|---|---|
| Ticks 5-10 | First trades are negotiated and executed | WORLD.md events, MEMORY.md episodes |
| Tick 10 | First system-wide reflection cycle runs | MEMORY.md reflection entries |
| Tick 20 | Archive rumor injected into shared world state | WORLD.md Recent Events list |
| Ticks 20-25 | Agents start visiting Archive location | INVENTORY.md knowledge tokens rise |
| Tick 30 | Dry season begins (resource reduction) | WORLD.md food pool declines rapidly |
| Ticks 30-40 | Food scarcity creates emergency scenarios | Agent food < 30 (danger state) |
| Tick 40 | Second system-wide reflection cycle | Strategic pivots written to PLAN.md |
| Tick 50 | Dry season ends | Food pool consumption stabilizes |
| Ticks 55-59 | Archive rush as agents secure remaining tokens | Multiple agents competing for Archive slots |
| Tick 60 | Archive closes permanently | world.archive_open = false |
| Ticks 60+ | Knowledge token prices rise in open trades | Trades in WORLD.md reflect new pricing |
Failure Modes to Watch For (Diagnostics)
| Symptom | Likely Cause | Debugging Strategy |
|---|---|---|
| Identical memories across agents | Location filter not active in logs | Check agent_tick location filtering logic |
| Trust scores never change | Trust update rules bypassed | Inspect trade_handler.py processing |
| Archive remains open indefinitely | Tick counter comparison error | Verify world_tick.py tick increments |
| Agent food values become negative | Consumption applied twice in error | Check world_tick.py deduction ordering |
| Reflections are generic or vague | LLM not receiving episodic traces | Check MEMORY.md injection in reflect.py |
| World food pool values incorrect | LLM used for deterministic arithmetic | Confirm world_tick.py uses pure Python math |
| Agents accept all trades unconditionally | No trust or goal check executed | Verify RELATIONS.md is in LLM context |
| All agents visit Archive at Tick 58 | No Archive capacity check enforced | Verify archive_visitors_this_tick limit (2) |
Comparison with Other Cognitive Architectures
Compared to traditional cognitive architectures, ARIA occupies a unique space: it prioritizes inspectability and auditability over speed, making it highly suitable for safety-critical agent deployments.
| Capability | ACT-R | LIDA | OpenCog | ARIA (Nanobot-based) |
|---|---|---|---|---|
| Natural language explanation | No | No | Partial | Yes (Native) |
| Native audit trail | No | No | No | Yes (File-based logs) |
| Multi-agent social modeling | No | No | Partial | Yes (Trust & ToM) |
| Persistent long-term memory | Partial | No | Partial | Yes (Episodic compressor) |
| Ethical drift detection | No | No | No | Yes (Self-Assessment) |
| Cross-domain transfer | No | No | Partial | Yes (LLM-driven) |
| Real-time performance | Excellent | Excellent | Good | Poor (LLM latency) |
| Formal provability | Good | Partial | Partial | No |
| FC self-modeling | No | No | No | Yes (Native domains) |
Related Literature
-
Functional Consciousness (FC) Paper: Bergmann (AGI-2026). Proposes
FCS = R × P. Benchmarks: Stateless LLM = 0, Waymo = 74.5k, Generative Agents = 6.5M, Human = 14M. Outlines FSMA as a black-box evaluation framework. URL: functional-consciousness.com - Scene-Based Reasoning (SBR) Paper: Bergmann & Fenton (AGI-2015). Focuses on 3D spatial scenes for cognitive modeling. URL: agi-conf.org/2015/.../agi15_bergmann.pdf
- Nanobot: The underlying lightweight agent framework (~4k LoC) providing file-based state persistency, git version control integration, and multi-model LLM routing.