1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Architecture Overview
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## System diagram
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```mermaid
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
graph TD
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Sources
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S1[Video Files]
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S2[Google Workspace]
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S3[Microsoft 365]
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S4[Zoom / Teams / Meet]
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S5[YouTube]
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S6[Notes — Obsidian / Notion / Apple Notes]
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S7[GitHub]
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Source Connectors
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SC[Source Connectors + OAuth]
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S1 --> SC
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S2 --> SC
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S3 --> SC
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S4 --> SC
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S5 --> SC
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S6 --> SC
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
S7 --> SC
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SC --> A[Ingest / Analyze Pipeline]
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
A --> B[Frame Extractor]
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
A --> C[Audio Extractor]
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
B --> D[Diagram Analyzer]
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
C --> E[Transcription]
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
D --> F[Knowledge Graph]
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
E --> F
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
E --> G[Key Point Extractor]
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
E --> H[Action Item Detector]
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
D --> I[Content Analyzer]
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
E --> I
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Agent & Skills
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AG[Planning Agent]
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
SK[Skill Registry]
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
CO[Companion REPL]
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
F --> AG
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
G --> AG
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
H --> AG
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
I --> AG
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AG --> SK
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
F --> CO
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
F --> J[Plan Generator]
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
G --> J
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
H --> J
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
I --> J
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
subgraph Output & Export
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
J --> K[Markdown Report]
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
J --> L[HTML Report]
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
J --> M[PDF Report]
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
D --> N[Mermaid/SVG/PNG Export]
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
EX[Exporters — Obsidian / Notion / Exchange / Wiki]
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
end
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AG --> EX
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
F --> EX
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Module structure
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
video_processor/
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── cli/ # CLI commands (Click)
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── commands.py
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── sources/ # Source connectors
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── gdrive.py # Google Drive
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── gws.py # Google Workspace (Docs, Sheets, Slides, Meet)
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── m365.py # Microsoft 365 (OneDrive, SharePoint, Teams)
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── dropbox.py # Dropbox
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── zoom.py # Zoom recordings
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── youtube.py # YouTube videos
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── notion.py # Notion pages
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── github.py # GitHub repos / wikis
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── obsidian.py # Obsidian vaults
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── apple_notes.py # Apple Notes (macOS)
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── extractors/ # Media extraction
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── frame_extractor.py # Video → frames
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── audio_extractor.py # Video → WAV
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── analyzers/ # AI-powered analysis
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── diagram_analyzer.py # Frame classification + extraction
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── content_analyzer.py # Cross-referencing
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── action_detector.py # Action item detection
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── integrators/ # Knowledge assembly
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── knowledge_graph.py # Entity/relationship graph
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── graph_query.py # Query engine
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── plan_generator.py # Report generation
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── agent/ # Planning agent
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── agent.py # Agent loop
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── skills.py # Skill registry
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── companion.py # Companion REPL
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── exporters/ # Export formats
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── markdown.py # Markdown export
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── obsidian.py # Obsidian vault export
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── notion.py # Notion export
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── wiki.py # Wiki generation + push
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── exchange.py # PlanOpticon Exchange Format
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── providers/ # AI provider abstraction
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── base.py # BaseProvider ABC
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── openai_provider.py
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── anthropic_provider.py
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── gemini_provider.py
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── ollama_provider.py # Local Ollama (offline)
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── azure_provider.py # Azure OpenAI
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── together_provider.py
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── fireworks_provider.py
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── cerebras_provider.py
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── xai_provider.py # xAI / Grok
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── discovery.py # Auto-model-discovery
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── manager.py # ProviderManager routing
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── utils/
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── json_parsing.py # Robust LLM JSON parsing
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── rendering.py # Mermaid + chart rendering
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── export.py # HTML/PDF export
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ ├── api_cache.py # Disk-based response cache
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
│ └── prompt_templates.py # LLM prompt management
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── auth.py # OAuth flow management
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── exchange.py # Exchange format schema
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── models.py # Pydantic data models
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
├── output_structure.py # Directory layout + manifest I/O
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
└── pipeline.py # Core processing pipeline
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Key design decisions
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Pydantic everywhere** — All structured data uses pydantic models for validation and serialization
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Manifest-driven** — Every run produces `manifest.json` as the single source of truth
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Provider abstraction** — Single `ProviderManager` wraps OpenAI, Anthropic, Gemini, Ollama, and additional providers behind a common interface
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **No hardcoded models** — Model lists come from API discovery
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Screengrab fallback** — When extraction fails, save the frame as a captioned screenshot
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **OAuth-first auth** — All cloud service integrations use OAuth via `planopticon auth`, with credentials stored locally. Service account keys are supported as a fallback for server-side automation
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Skill registry** — The planning agent discovers and invokes skills dynamically. Skills are self-describing and can be composed by the agent to accomplish complex tasks
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **Exchange format** — A portable JSON format (`exchange.py`) for importing and exporting knowledge graphs between PlanOpticon instances and external tools
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!