Arc Storage Backend
Memtrace requires an Arc instance as its storage backend. All memories are stored in Arc's time-series format, providing high-performance temporal queries and efficient compression.
Overview
Memtrace uses Arc to store all memory data as time-series events. This architecture provides several key benefits:
- Native time-windowed queries - Queries like "what happened in the last 2 hours?" are first-class operations
- High write throughput - Arc handles thousands of memory writes per second
- Efficient compression - Parquet-based storage with automatic compaction
- SQL analytics - Query memories using DuckDB SQL via Arc's query engine
- Scalable storage - 2-tier storage system with hot (local) and cold (S3/Azure) tiers
Database Setup
Memtrace creates a dedicated database in Arc called memtrace with the following measurements:
memories- All memory events (episodic, decision, entity, session)agents- Agent registration metadatasessions- Session lifecycle events
Each measurement is stored as a time-series with automatic partitioning by year/month/day/hour.
Connection Configuration
Configure Arc connection in your memtrace.toml:
[arc]
url = "http://localhost:8080" # Arc instance URL
api_key = "ak_your_arc_key" # Arc API key
database = "memtrace" # Database name (created automatically)
write_timeout = "30s" # Write operation timeout
query_timeout = "60s" # Query operation timeout
Environment variables override config file settings:
export ARC_URL="http://localhost:8080"
export ARC_API_KEY="ak_your_arc_key"
export ARC_DATABASE="memtrace"
Data Storage Format
Memory Records
Each memory is stored as a time-series event with the following schema:
{
"time": "2026-02-13T10:30:00Z",
"agent_id": "my_agent",
"session_id": "sess_abc123",
"memory_type": "episodic",
"event_type": "observation",
"content": "User clicked the settings button",
"tags": ["ui", "navigation"],
"importance": 0.7,
"metadata": {"screen": "dashboard"}
}
Agent Records
Agent registrations are stored with metadata:
{
"time": "2026-02-13T10:00:00Z",
"agent_id": "my_agent",
"name": "my-agent",
"description": "Handles customer support",
"config": {"model": "gpt-4"}
}
Session Records
Session lifecycle events track session creation and closure:
{
"time": "2026-02-13T10:15:00Z",
"session_id": "sess_abc123",
"agent_id": "my_agent",
"status": "active",
"metadata": {"task": "onboarding"}
}
Storage Optimization
Arc automatically optimizes Memtrace data storage through:
- Hourly compaction - Small files are merged into larger, more efficient Parquet files
- Daily compaction - Hour-level files are merged into daily aggregates
- Automatic tiering - Old data moves to cold storage (S3/Azure) based on retention policies
- Query caching - Frequently accessed time windows are cached for faster retrieval
Query Performance
Memtrace queries leverage Arc's optimized time-series engine:
- Time-windowed queries - Fast retrieval of memories within specific time ranges
- Tag filtering - Efficient filtering by tags using Arc's columnar storage
- Importance scoring - Quick filtering by importance threshold
- Content search - Full-text search across memory content
Typical query performance:
- Recent memories (last 24h): < 10ms
- Filtered search (7 days): < 50ms
- Full-text search (30 days): < 200ms
Requirements
Minimum Arc Version
Memtrace requires Arc 2026.02.1 or later.
Arc Configuration
Your Arc instance should be configured with:
[storage]
path = "/path/to/arc/data"
tier_enabled = true # Optional: enable cold storage tiering
[compaction]
hourly_min_files = 10
daily_min_files = 12
Authentication
Memtrace requires an Arc API key with the following permissions:
database:create- Create the memtrace databasewrite:data- Write memory eventsread:data- Query memory data
Generate an API key in Arc:
curl -X POST http://localhost:8080/api/v1/keys \
-H "x-api-key: <admin_key>" \
-d '{"name": "memtrace", "permissions": ["database:create", "write:data", "read:data"]}'
Monitoring
Monitor Memtrace storage health through Arc's metrics:
# Check database size
curl http://localhost:8080/api/v1/databases/memtrace/stats \
-H "x-api-key: ak_..."
# Check recent writes
curl http://localhost:8080/api/v1/databases/memtrace/measurements/memories/stats \
-H "x-api-key: ak_..."
Key metrics to monitor:
- Write throughput (events/second)
- Query latency (p50, p95, p99)
- Storage size and growth rate
- Compaction progress
Backup and Recovery
Memtrace data is stored in Arc's standard Parquet format, making backups straightforward:
Backup
# Backup Arc data directory
rsync -av /path/to/arc/data/memtrace /backup/location/
# Or use Arc's built-in snapshot feature
curl -X POST http://localhost:8080/api/v1/databases/memtrace/snapshot \
-H "x-api-key: ak_..."
Recovery
# Restore from backup
rsync -av /backup/location/memtrace /path/to/arc/data/
# Restart Arc to pick up restored data
systemctl restart arc
Troubleshooting
Connection Issues
If Memtrace cannot connect to Arc:
- Verify Arc is running:
curl http://localhost:8080/health - Check API key permissions
- Verify network connectivity between Memtrace and Arc
- Check Arc logs for authentication errors
Write Failures
If memory writes fail:
- Check Arc write permissions
- Verify disk space on Arc instance
- Check Arc write timeout settings
- Monitor Arc metrics for backpressure
Query Performance
If queries are slow:
- Check time window size (smaller windows = faster queries)
- Verify Arc compaction is running
- Enable query result caching
- Consider adding indexes on frequently filtered fields