docs(adr): add ADR-001 API-first agent-agnostic design
Key decision: Mosaic Stack exposes APIs first, agent skills are thin wrappers. Platform works standalone, agent layer is swappable.
This commit is contained in:
87
docs/design/architecture-decisions.md
Normal file
87
docs/design/architecture-decisions.md
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# Architecture Decision Records (ADRs)
|
||||||
|
|
||||||
|
## ADR-001: API-First with Agent-Agnostic Design
|
||||||
|
|
||||||
|
**Date:** 2025-01-29
|
||||||
|
**Status:** Accepted
|
||||||
|
**Deciders:** Jason, Jarvis
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
Mosaic Stack needs to integrate with AI agents (currently ClawdBot, formerly MoltBot). The question is how tightly to couple the platform with the agent layer.
|
||||||
|
|
||||||
|
### Decision
|
||||||
|
|
||||||
|
**Mosaic Stack will be API-first and agent-agnostic.**
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Users │
|
||||||
|
│ (Web UI, Mobile, CLI, API clients) │
|
||||||
|
└─────────────────────┬───────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Mosaic Stack │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
||||||
|
│ │ Knowledge │ │ Tasks/Gantt │ │ Agent Orchestration │ │
|
||||||
|
│ │ Module │ │ Module │ │ Module │ │
|
||||||
|
│ └──────┬──────┘ └──────┬──────┘ └──────────┬──────────┘ │
|
||||||
|
│ │ │ │ │
|
||||||
|
│ └────────────────┼─────────────────────┘ │
|
||||||
|
│ ▼ │
|
||||||
|
│ REST/GraphQL APIs │
|
||||||
|
└─────────────────────────┬───────────────────────────────────┘
|
||||||
|
│
|
||||||
|
┌───────────────┼───────────────┐
|
||||||
|
▼ ▼ ▼
|
||||||
|
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||||
|
│ ClawdBot │ │ Other │ │ Direct │
|
||||||
|
│ Skills │ │ Agents │ │ API Use │
|
||||||
|
└──────────┘ └──────────┘ └──────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Implications
|
||||||
|
|
||||||
|
1. **All functionality exposed via APIs first**
|
||||||
|
- REST endpoints for CRUD operations
|
||||||
|
- GraphQL for complex queries (optional)
|
||||||
|
- WebSocket for real-time updates
|
||||||
|
|
||||||
|
2. **Agent skills are thin wrappers**
|
||||||
|
- ClawdBot skills (`mosaic-skill-*`) wrap Mosaic APIs
|
||||||
|
- Skills handle: auth, tool definitions, response formatting
|
||||||
|
- Business logic lives in Mosaic, not skills
|
||||||
|
|
||||||
|
3. **Mosaic works standalone**
|
||||||
|
- Web UI is fully functional without any agent
|
||||||
|
- Users can choose to use agents or not
|
||||||
|
- Different agents can integrate (ClawdBot, custom, future)
|
||||||
|
|
||||||
|
4. **Agent layer is swappable**
|
||||||
|
- Not locked to ClawdBot
|
||||||
|
- Could use Claude directly, OpenAI agents, or custom
|
||||||
|
- Mosaic is the source of truth
|
||||||
|
|
||||||
|
### Consequences
|
||||||
|
|
||||||
|
**Positive:**
|
||||||
|
- Platform independence
|
||||||
|
- Multiple integration paths
|
||||||
|
- Clear separation of concerns
|
||||||
|
- Easier testing (API-level tests)
|
||||||
|
|
||||||
|
**Negative:**
|
||||||
|
- Extra network hop for agent access
|
||||||
|
- Need to maintain both API and skill code
|
||||||
|
- Slightly more initial work
|
||||||
|
|
||||||
|
### Related Issues
|
||||||
|
|
||||||
|
- #22: Brain query API endpoint (API-first ✓)
|
||||||
|
- #23-26: mosaic-plugin-* → rename to mosaic-skill-* (thin wrappers)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Future ADRs will be added to this document.*
|
||||||
Reference in New Issue
Block a user