Skip to content

Architecture Decision Records

This section documents the key architectural decisions made for the Folionaut project.

What is an ADR?

An Architecture Decision Record (ADR) captures an important architectural decision made along with its context and consequences. ADRs help:

  • Document the reasoning behind decisions
  • Provide context for future developers
  • Enable informed reconsideration of decisions

Summary

ADRTitleStatusSummary
001Database ChoiceAcceptedTurso (libSQL) for edge-friendly SQLite
002Caching StrategyAcceptedLayered Redis/Memory with Token Bucket rate limiting
003LLM AbstractionAcceptedProvider abstraction layer for flexibility
004Repository PatternAcceptedAbstract data access for testability
005ObservabilityAcceptedEvents and OpenTelemetry tracing
006PII ProtectionAcceptedGuardrails-based PII detection and sanitization
007Content ModelAcceptedFlexible JSON with app-level validation
008Shared ToolsAcceptedUnified tool implementations for MCP and chat

ADR Template

When adding new ADRs, use this template:

markdown
# ADR NNN: Title

## Status

Proposed | Accepted | Deprecated | Superseded

## Context

What is the issue that we're seeing that is motivating this decision?

## Decision

What is the change that we're proposing and/or doing?

## Alternatives Considered

| Option | Pros | Cons |
|--------|------|------|
| Option A | ... | ... |
| Option B | ... | ... |

## Consequences

### Positive
- ...

### Negative
- ...

### Mitigations
- ...

## References
- ...

Decision Themes

Data Layer

Infrastructure

AI Integration

Released under the MIT License.