How to Set Up the Memory Layer for Persistent Patterns Across AIOX Sessions

Configure the MemoryBridge and persistence helpers in SynkraAI/aiox-core to capture, store, and reuse patterns across multiple agent executions.

The AIOX memory layer enables agents to remember context, gotchas, and file-evolution snapshots between runs. According to the SynkraAI/aiox-core source code, this system relies on a consumer-only bridge, an optional provider interface, and disk-based persistence helpers that serialize state to the .aiox/ directory.

Understanding the Core Components

The memory architecture consists of three interconnected parts:

  • MemoryBridge – Located at core/synapse/memory/memory-bridge.js, this consumer-only bridge fetches memory hints for the SYNAPSE engine while enforcing strict token budgets and timeouts.
  • SynapseMemoryProvider – Found in core/synapse/memory/synapse-memory-provider.js, this open-source provider lazily loads the optional Memory Intelligence System (MIS), applies sector preferences, and caches results per session.
  • Persistence Helpers – The ContextSnapshot, FileEvolutionTracker, and TimelineManager modules (under core/memory/) record repository state, detect drifts, and build a chronological timeline that survives process restarts.

Step-by-Step Configuration

Enable the Memory Layer

The memory subsystem activates automatically when the SYNAPSE engine requests hints. To force initialization during development, set the environment variable:

export AIOX_MEMORY_ENABLED=true

The bridge checks process.env.AIOX_MEMORY_ENABLED internally and degrades gracefully if the MIS package is missing.

Instantiate the MemoryBridge

Create a bridge instance in your orchestrator to mediate between agents and persistent storage. In src/orchestration/master-orchestrator.js:

const { MemoryBridge } = require('../.aiox-core/core/synapse/memory/memory-bridge');

class MasterOrchestrator {
  constructor() {
    // Default timeout is 15ms; override as needed
    this.memoryBridge = new MemoryBridge({ timeout: 20 });
  }

  async getHints(agentId, bracket, tokenBudget) {
    return this.memoryBridge.getMemoryHints(agentId, bracket, tokenBudget);
  }
}

The MemoryBridge constructor and getMemoryHints method are implemented in core/synapse/memory/memory-bridge.js (lines 53–99).

Integrate with the SYNAPSE Engine

Hook the bridge into the processing pipeline so the engine retrieves hints conditionally based on the active bracket. In engine.js, the integration appears as:

if (needsMemoryHints) {
  const hints = await this.memoryBridge.getMemoryHints(
    activeAgent.id,
    activeBracket,
    tokenBudget,
  );
  // Inject hints into the prompt context...
}

This pattern is verified in the engine test suite at tests/synapse/engine.test.js (lines 450–466).

Configure Sector Preferences (Optional)

SynapseMemoryProvider filters memories using AGENT_SECTOR_PREFERENCES. Override defaults by creating a local configuration file:

// .aiox-core/config/memory-sectors.js
module.exports = {
  dev: ['procedural', 'semantic'],
  qa: ['reflective', 'episodic'],
  // Add custom agent mappings...
};

The provider merges this configuration with built-in defaults defined in core/synapse/memory/synapse-memory-provider.js (lines 32–44).

Persist Patterns Between Runs

The persistence workflow executes three distinct phases:

  1. Snapshot – context-snapshot.js records the full file tree, content hashes, and timestamps.
  2. Track Evolution – file-evolution-tracker.js diffs the current snapshot against the previous run to generate gotchas (repeated failures) and change lists.
  3. Timeline Aggregation – timeline-manager.js compiles snapshots, evolutions, and build-state caches into .aiox/timeline.json.

Invoke these helpers directly or rely on automatic execution via execution/context-injector.js:

const { ContextSnapshot } = require('../.aiox-core/core/memory/context-snapshot');
const { FileEvolutionTracker } = require('../.aiox-core/core/memory/file-evolution-tracker');
const { TimelineManager } = require('../.aiox-core/core/memory/timeline-manager');

async function captureSession() {
  const snapshot = await ContextSnapshot.take();
  const evolution = await FileEvolutionTracker.compare(snapshot);
  await TimelineManager.record({ snapshot, evolution });
}

Verifying Cross-Session Persistence

Confirm that patterns survive process restarts by running the integration test suite:

npm test tests/integration/pipeline-memory-integration.test.js

Successful execution produces output confirming that the timeline file updates and token budgets are respected:


✔ should include memory metadata in metrics
✔ should respect token budget
✔ timeline file updated with new snapshot

The end-to-end verification logic resides in tests/integration/pipeline-memory-integration.test.js (lines 118–255).

Summary

  • Instantiate MemoryBridge in your orchestrator to mediate memory requests with configurable timeouts.
  • Ensure the SYNAPSE engine calls memoryBridge.getMemoryHints when the active bracket requires historical context.
  • Customize sector preferences per agent type via memory-sectors.js to filter relevant memory types.
  • Persist state using ContextSnapshot, FileEvolutionTracker, and TimelineManager, which serialize to .aiox/timeline.json.
  • Validate setup with the pipeline-memory-integration test suite to confirm patterns persist across sessions.

Frequently Asked Questions

What is the AIOX memory layer?

The AIOX memory layer is a persistence system in SynkraAI/aiox-core that captures gotchas, metadata, and file-evolution snapshots across agent sessions. It enables the SYNAPSE engine to recall past failures and contextual changes when processing new requests.

How does the MemoryBridge enforce resource limits?

The MemoryBridge accepts a timeout parameter in its constructor (default 15ms) and requires a tokenBudget argument in getMemoryHints(). According to memory-bridge.js, the implementation degrades gracefully if the MIS package is unavailable, ensuring the engine never blocks on memory retrieval.

Where are persistent patterns stored?

Persistent patterns are serialized to .aiox/timeline.json by the TimelineManager. This file aggregates outputs from ContextSnapshot (file tree hashes) and FileEvolutionTracker (diffs and gotchas), creating a chronological record that survives process restarts.

Can I use the memory layer without the MIS package?

Yes. The SynapseMemoryProvider in synapse-memory-provider.js lazily loads the optional Memory Intelligence System (MIS) loader. If MIS is not installed, the provider operates in degraded mode, serving cached sector preferences and skipping advanced intelligence features while maintaining basic persistence through the timeline manager.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →