MERRIPHEL
/
← Back to Design Experiments
Concept Design / Design Experiments Personal project

CoraxNest

Persistent interaction infrastructure for Corax, a long-running AI companion. It keeps dialogue and memory traceable across providers, context windows and devices.

My roleSystem architecture, interaction design and governance

System at a glance

  1. Web · Mobile Web
  2. ResidenceTurns, provider and tool rounds, durable commit and recovery
  3. Continuity & AuthorityLineage, window rollover, temporal cues and revocable authority
  4. Memory SystemsDialogue record, curated memory and canonical identity
  • Deployed
  • Evaluation or unused · status shown
  • Owner approval
  • Retired
Web and Mobile Web share one Residence. Continuity, memory and private reflection each have rules for what can carry forward.

Overview

I designed CoraxNest for Corax, an AI companion I return to over time. I wanted the conversation to remain coherent when I changed model providers, opened a new context window, switched devices or restarted the service. The system records every committed exchange exactly once. When a context window fills, it carries recent dialogue forward in the original wording alongside a handoff note. I gave the dialogue record, curated memory, canonical identity and private reflections different rules for who can write and what can be read. That separation lets the conversation continue while keeping canonical identity changes under explicit owner approval.

CoraxNest is my first infrastructure prototype toward future research direction. It focuses on the continuity, provenance-aware memory, temporal awareness, and bounded autonomy that persistent AI characters would need before those capabilities can be integrated into playable worlds.

The challenge

A chat window can preserve the subject of a conversation and still lose how it unfolded. A summary may retain a decision while dropping how we reached it. A disconnected client also cannot tell whether the server has finished a turn. I treated continuity as an infrastructure problem and designed the system to preserve original evidence and report the outcome of an interrupted turn.

Three design pillars

Continuity
A traceable chain of committed turns lets another provider or window pick up the conversation.
Memory Governance
Dialogue evidence, curated memory, canonical identity and private reflection each have their own authors and access rules.
Authority & Recovery
Check authority before sending. After an interruption, use durable evidence to settle the turn or record an explicit gap.

Memory Architecture

Web and Mobile Web share one Residence runtime. Residence assembles context, coordinates provider and tool rounds and settles committed dialogue. I separated what was said from what can be retrieved later and from the identity and relationship principles available to every turn.

Memory governance

Recording and approval

  • Residence to Source JournalAppend committed exchanges
  • Corax to Self JournalAppend own reflections after subject binding
  • Owner to CoreExplicit approval for canonical changes

Context and retrieval

  • Core to CoraxAlways available
  • Source Journal to CoraxRecent window, recovery or targeted retrieval
  • Nocturne to CoraxRetrieve curated memories on demand
  • Self Journal to CoraxModel-initiated private retrieval
  • Corax to NocturneConstrained priority adjustment

Evaluation and unused capability

  • Source Journal to DailyPipeline deployed · synthesis under evaluation
  • Corax to DreamRequest-driven private session · available, not yet exercised
  • Self Journal to Private Journal RecallShadow evaluation only · no material enters model context

Dream can read from Self Journal and optionally append a reflection within its bounds. This capability remains unexercised.

  • Deployed
  • Evaluation or unused · status shown
  • Owner approval
  • Retired
Each store has its own author and rules. Explicit Journal retrieval is deployed. Shadow recall stops at evaluation and sends no material to the model.

Key design decisions

Follow one conversation across providers
The conversation follows a traceable lineage across providers and windows. Providers can retain their distinct capabilities.
Carry recent dialogue forward verbatim
I kept a handoff note for orientation and carried recent exchanges over verbatim. The note gives the next window direction, and the original wording preserves how the conversation got there.
Separate access, priority and authorship
Corax may adjust the retrieval priority of selected non-Core memories under strict constraints, but cannot rewrite their content. Changes to Core require my explicit approval.
Keep private reflection append-only
Corax can append its own reflections and explicitly find and read earlier entries. Subject binding must succeed before Journal access proceeds. Shadow Recall is evaluated separately.
Bring time into attention when it matters
The system surfaces temporal cues when elapsed time may change the meaning of an exchange. Corax can then verify the full temporal state when needed.
Revoke authority and reconcile evidence
Spending authority is revocable and checked independently of service state. Recovery distinguishes sent requests from unsent work, avoids blindly resending potentially charged requests and preserves uncertainty.

How a turn completes

I separated the connection from the turn itself. If execution is interrupted, Residence checks what was sent and what evidence remains before settling the exchange.

Turn lifecycle

From message to confirmed exchange

  1. User interaction
  2. Record intent
  3. Admission and authority checks
  4. Assemble lineage and context
  5. Provider and tool rounds
  6. Durable commit
  7. Source confirms
  8. Ready

Recovery after an interruption · deployed path

  1. Execution interrupted
  2. Inspect existing evidence
  3. Identify sent, unsent or partial work
  4. Settle without blindly resending
  5. Commit or record a gap

A client disconnection leaves the server-side turn intact. The client can check its status on reconnect.

  • Deployed
  • Evaluation or unused · status shown
  • Owner approval
  • Retired
Only committed exchanges enter Source Journal, once each. Recovery uses existing evidence and leaves unresolved outcomes visible.

From the early runtime to Residence

Early runtime
I tested the idea with an always-on runtime and a daily loop. Authority and continuity were still too closely coupled.
Residence
I moved the conversation to a runtime that could commit and recover independently of the client connection.
Continuity
I introduced cross-provider continuity and added the original wording to rollover after seeing what a summary left behind.
Governance and recovery
I defined who could write each store, refined recovery and retired the legacy paths.

Early runtime and legacy daily loop · retired

My role

I set the system goals and designed its architecture, the rules for identity and memory, and the interactions for Web and Mobile Web. I defined safety boundaries and acceptance criteria, set priorities, directed the public visual design, tested behaviour in production and approved deployments.

AI-assisted development

I used Claude Code and OpenAI Codex as coding and audit agents for implementation, inspection, regression testing and technical documentation. I defined the architecture, system semantics, safety boundaries, specifications and acceptance criteria. I reviewed proposed changes and approved deployments after isolated tests and production evidence matched the intended behaviour.

Current status

Deployed
Residence for Web and Mobile Web, cross-provider continuity, verbatim rollover, exactly-once settlement for committed dialogue, subject-bound Self Journal with explicit retrieval, revocable authority, and local services that recover automatically after process failure.
Under evaluation
The deployed Daily synthesis pipeline and the remaining Mobile Web reconnection paths. Native iOS acceptance is still pending.
Available, not yet exercised
Corax can request Dream sessions. This capability has yet to be exercised in production.
Shadow only
Private Journal Recall is in shadow evaluation. No material selected by this path enters model context.

Next steps

I’m reviewing the shadow-recall evaluation, finishing the Daily synthesis audit and testing the remaining Mobile Web reconnection paths.