|
ecf907c…
|
leo
|
1 |
# PlanOpticon |
|
ecf907c…
|
leo
|
2 |
|
|
40e3d6b…
|
leo
|
3 |
[](https://github.com/ConflictHQ/PlanOpticon/actions/workflows/ci.yml) |
|
40e3d6b…
|
leo
|
4 |
[](https://pypi.org/project/planopticon/) |
|
40e3d6b…
|
leo
|
5 |
[](https://pypi.org/project/planopticon/) |
|
40e3d6b…
|
leo
|
6 |
[](LICENSE) |
|
40e3d6b…
|
leo
|
7 |
[](https://planopticon.dev) |
|
40e3d6b…
|
leo
|
8 |
|
|
0981a08…
|
noreply
|
9 |
**AI-powered video analysis, knowledge extraction, and planning.** |
|
ecf907c…
|
leo
|
10 |
|
|
0981a08…
|
noreply
|
11 |
PlanOpticon processes video recordings, documents, and 20+ online sources into structured knowledge graphs, then helps you plan with an AI agent and interactive companion. It auto-discovers models across 15+ AI providers, runs fully offline with Ollama, and produces rich multi-format output. |
|
ecf907c…
|
leo
|
12 |
|
|
ecf907c…
|
leo
|
13 |
## Features |
|
ecf907c…
|
leo
|
14 |
|
|
0981a08…
|
noreply
|
15 |
- **15+ AI providers** -- OpenAI, Anthropic, Gemini, Ollama, Azure, Together, Fireworks, Cerebras, xAI, Bedrock, Vertex, Mistral, Cohere, AI21, HuggingFace, Qianfan, and LiteLLM. Defaults to cheap models (Haiku, GPT-4o-mini, Gemini Flash). |
|
0981a08…
|
noreply
|
16 |
- **20+ source connectors** -- YouTube, web pages, GitHub, Reddit, HackerNews, RSS, podcasts, arXiv, S3, Google Workspace, Microsoft 365, Obsidian, Notion, Apple Notes, Zoom, Teams, Google Meet, and more. |
|
0981a08…
|
noreply
|
17 |
- **Planning agent** -- 11 skills including project plans, PRDs, roadmaps, task breakdowns, and GitHub integration. |
|
0981a08…
|
noreply
|
18 |
- **Interactive companion** -- Chat REPL with 15 slash commands, auto-discovery of workspace knowledge, and runtime provider/model switching. |
|
0981a08…
|
noreply
|
19 |
- **Knowledge graphs** -- SQLite-backed (zero external deps), entity extraction with planning taxonomy (goals, requirements, risks, tasks, milestones), merge and dedup across sources. |
|
0981a08…
|
noreply
|
20 |
- **Smart video analysis** -- Change-detection frame extraction, face filtering, diagram classification, action item detection, checkpoint/resume. |
|
0981a08…
|
noreply
|
21 |
- **Document ingestion** -- PDF, Markdown, and plaintext pipelines feed the same knowledge graph. |
|
0981a08…
|
noreply
|
22 |
- **Export everywhere** -- Markdown docs (7 types, no LLM required), Obsidian vaults, Notion markdown, GitHub wiki with push, PlanOpticonExchange JSON interchange, HTML/PDF reports, Mermaid diagrams. |
|
0981a08…
|
noreply
|
23 |
- **OAuth-first auth** -- Unified OAuth manager for Google, Dropbox, Zoom, Notion, GitHub, and Microsoft with saved-token / PKCE / API-key fallback chain. |
|
0981a08…
|
noreply
|
24 |
- **Batch processing** -- Process entire folders with merged knowledge graphs and cross-referencing. |
|
0981a08…
|
noreply
|
25 |
|
|
0981a08…
|
noreply
|
26 |
## Quick Start |
|
0981a08…
|
noreply
|
27 |
|
|
0981a08…
|
noreply
|
28 |
```bash |
|
0981a08…
|
noreply
|
29 |
# Install |
|
0981a08…
|
noreply
|
30 |
pip install planopticon |
|
0981a08…
|
noreply
|
31 |
|
|
0981a08…
|
noreply
|
32 |
# Analyze a video |
|
0981a08…
|
noreply
|
33 |
planopticon analyze -i meeting.mp4 -o ./output |
|
0981a08…
|
noreply
|
34 |
|
|
0981a08…
|
noreply
|
35 |
# Ingest a document |
|
0981a08…
|
noreply
|
36 |
planopticon ingest -i spec.pdf -o ./output |
|
0981a08…
|
noreply
|
37 |
|
|
0981a08…
|
noreply
|
38 |
# Fetch from a source |
|
0981a08…
|
noreply
|
39 |
planopticon fetch youtube "https://youtube.com/watch?v=..." -o ./output |
|
0981a08…
|
noreply
|
40 |
|
|
0981a08…
|
noreply
|
41 |
# Process a folder of videos |
|
0981a08…
|
noreply
|
42 |
planopticon batch -i ./recordings -o ./output --title "Weekly Meetings" |
|
0981a08…
|
noreply
|
43 |
|
|
0981a08…
|
noreply
|
44 |
# Query the knowledge graph |
|
0981a08…
|
noreply
|
45 |
planopticon query |
|
0981a08…
|
noreply
|
46 |
planopticon query "entities --type technology" |
|
0981a08…
|
noreply
|
47 |
|
|
0981a08…
|
noreply
|
48 |
# See available AI models |
|
0981a08…
|
noreply
|
49 |
planopticon list-models |
|
0981a08…
|
noreply
|
50 |
``` |
|
0981a08…
|
noreply
|
51 |
|
|
0981a08…
|
noreply
|
52 |
## Planning Agent |
|
0981a08…
|
noreply
|
53 |
|
|
0981a08…
|
noreply
|
54 |
Run AI-powered planning skills against your knowledge base: |
|
0981a08…
|
noreply
|
55 |
|
|
0981a08…
|
noreply
|
56 |
```bash |
|
0981a08…
|
noreply
|
57 |
# Generate a project plan from extracted knowledge |
|
0981a08…
|
noreply
|
58 |
planopticon agent "Create a project plan" --kb ./results |
|
0981a08…
|
noreply
|
59 |
|
|
0981a08…
|
noreply
|
60 |
# Build a PRD |
|
0981a08…
|
noreply
|
61 |
planopticon agent "Write a PRD for the authentication system" --kb ./results |
|
0981a08…
|
noreply
|
62 |
|
|
0981a08…
|
noreply
|
63 |
# Break down tasks |
|
0981a08…
|
noreply
|
64 |
planopticon agent "Break this into tasks and estimate effort" --kb ./results |
|
0981a08…
|
noreply
|
65 |
``` |
|
0981a08…
|
noreply
|
66 |
|
|
0981a08…
|
noreply
|
67 |
11 skills: `project_plan`, `prd`, `roadmap`, `task_breakdown`, `github_integration`, `requirements_chat`, `doc_generator`, `artifact_export`, `cli_adapter`, `notes_export`, `wiki_generator`. |
|
0981a08…
|
noreply
|
68 |
|
|
0981a08…
|
noreply
|
69 |
## Interactive Companion |
|
0981a08…
|
noreply
|
70 |
|
|
0981a08…
|
noreply
|
71 |
A chat REPL that auto-discovers knowledge graphs, videos, and docs in your workspace: |
|
0981a08…
|
noreply
|
72 |
|
|
0981a08…
|
noreply
|
73 |
```bash |
|
0981a08…
|
noreply
|
74 |
# Launch the companion |
|
0981a08…
|
noreply
|
75 |
planopticon companion |
|
0981a08…
|
noreply
|
76 |
# or |
|
0981a08…
|
noreply
|
77 |
planopticon --chat |
|
0981a08…
|
noreply
|
78 |
``` |
|
0981a08…
|
noreply
|
79 |
|
|
0981a08…
|
noreply
|
80 |
15 slash commands: `/help`, `/status`, `/skills`, `/entities`, `/search`, `/neighbors`, `/export`, `/analyze`, `/ingest`, `/auth`, `/provider`, `/model`, `/run`, `/plan`, `/prd`, `/tasks`. |
|
0981a08…
|
noreply
|
81 |
|
|
0981a08…
|
noreply
|
82 |
Switch providers and models at runtime, explore your knowledge graph interactively, or chat with any configured LLM. |
|
0981a08…
|
noreply
|
83 |
|
|
0981a08…
|
noreply
|
84 |
## Source Connectors |
|
0981a08…
|
noreply
|
85 |
|
|
0981a08…
|
noreply
|
86 |
| Category | Sources | |
|
0981a08…
|
noreply
|
87 |
|----------|---------| |
|
0981a08…
|
noreply
|
88 |
| Media | YouTube, Web, Podcasts, RSS | |
|
0981a08…
|
noreply
|
89 |
| Code & Community | GitHub, Reddit, HackerNews, arXiv | |
|
0981a08…
|
noreply
|
90 |
| Cloud Storage | S3, Google Drive, Dropbox | |
|
0981a08…
|
noreply
|
91 |
| Google Workspace | Docs, Sheets, Slides (via gws CLI) | |
|
0981a08…
|
noreply
|
92 |
| Microsoft 365 | SharePoint, OneDrive (via m365 CLI) | |
|
0981a08…
|
noreply
|
93 |
| Notes | Obsidian, Notion, Apple Notes, OneNote, Google Keep, Logseq | |
|
0981a08…
|
noreply
|
94 |
| Meetings | Zoom (OAuth), Teams, Google Meet | |
|
0981a08…
|
noreply
|
95 |
|
|
0981a08…
|
noreply
|
96 |
## Export & Documents |
|
0981a08…
|
noreply
|
97 |
|
|
0981a08…
|
noreply
|
98 |
Generate documents from your knowledge graph without an LLM: |
|
0981a08…
|
noreply
|
99 |
|
|
0981a08…
|
noreply
|
100 |
```bash |
|
0981a08…
|
noreply
|
101 |
planopticon export summary -o ./docs |
|
0981a08…
|
noreply
|
102 |
planopticon export meeting-notes -o ./docs |
|
0981a08…
|
noreply
|
103 |
planopticon export glossary -o ./docs |
|
0981a08…
|
noreply
|
104 |
``` |
|
0981a08…
|
noreply
|
105 |
|
|
0981a08…
|
noreply
|
106 |
7 document types: `summary`, `meeting-notes`, `glossary`, `relationship-map`, `status-report`, `entity-index`, `csv`. |
|
0981a08…
|
noreply
|
107 |
|
|
0981a08…
|
noreply
|
108 |
Additional export targets: |
|
0981a08…
|
noreply
|
109 |
- **Obsidian** -- YAML frontmatter + wiki-links vault |
|
0981a08…
|
noreply
|
110 |
- **Notion** -- Compatible markdown |
|
0981a08…
|
noreply
|
111 |
- **GitHub Wiki** -- Generate and push directly |
|
0981a08…
|
noreply
|
112 |
- **PlanOpticonExchange** -- Canonical JSON interchange with merge/dedup |
|
c25da17…
|
noreply
|
113 |
|
|
c25da17…
|
noreply
|
114 |
## Local Run |
|
c25da17…
|
noreply
|
115 |
|
|
0981a08…
|
noreply
|
116 |
PlanOpticon runs entirely offline with Ollama -- no API keys, no cloud, no cost. |
|
c25da17…
|
noreply
|
117 |
|
|
c25da17…
|
noreply
|
118 |
> **13.2 hours of video content analyzed, knowledge-graphed, and summarized in ~25 hours of processing time, entirely on local hardware, for free.** |
|
c25da17…
|
noreply
|
119 |
|
|
c25da17…
|
noreply
|
120 |
18 meeting recordings processed on a single machine using `llava` (vision), `qwen3:30b` (chat), and `whisper-large` (transcription via Apple Silicon GPU): |
|
c25da17…
|
noreply
|
121 |
|
|
c25da17…
|
noreply
|
122 |
| Metric | Value | |
|
c25da17…
|
noreply
|
123 |
|--------|-------| |
|
c25da17…
|
noreply
|
124 |
| Recordings | 18 | |
|
c25da17…
|
noreply
|
125 |
| Video duration | 13.2 hours | |
|
c25da17…
|
noreply
|
126 |
| Processing time | 24.9 hours | |
|
c25da17…
|
noreply
|
127 |
| Frames extracted | 1,783 | |
|
c25da17…
|
noreply
|
128 |
| API calls (local) | 1,841 | |
|
c25da17…
|
noreply
|
129 |
| Tokens processed | 4.87M | |
|
c25da17…
|
noreply
|
130 |
| Total cost | **$0.00** | |
|
c25da17…
|
noreply
|
131 |
|
|
c25da17…
|
noreply
|
132 |
```bash |
|
0981a08…
|
noreply
|
133 |
# Fully local analysis -- no API keys needed, just Ollama running |
|
c25da17…
|
noreply
|
134 |
planopticon analyze -i meeting.mp4 -o ./output \ |
|
c25da17…
|
noreply
|
135 |
--provider ollama \ |
|
c25da17…
|
noreply
|
136 |
--vision-model llava:latest \ |
|
c25da17…
|
noreply
|
137 |
--chat-model qwen3:30b |
|
ecf907c…
|
leo
|
138 |
``` |
|
ecf907c…
|
leo
|
139 |
|
|
ecf907c…
|
leo
|
140 |
## Installation |
|
ecf907c…
|
leo
|
141 |
|
|
ecf907c…
|
leo
|
142 |
### From PyPI |
|
ecf907c…
|
leo
|
143 |
|
|
ecf907c…
|
leo
|
144 |
```bash |
|
ecf907c…
|
leo
|
145 |
pip install planopticon |
|
ecf907c…
|
leo
|
146 |
|
|
ecf907c…
|
leo
|
147 |
# With all extras (PDF, cloud sources, GPU) |
|
ecf907c…
|
leo
|
148 |
pip install planopticon[all] |
|
ecf907c…
|
leo
|
149 |
``` |
|
ecf907c…
|
leo
|
150 |
|
|
ecf907c…
|
leo
|
151 |
### From Source |
|
ecf907c…
|
leo
|
152 |
|
|
ecf907c…
|
leo
|
153 |
```bash |
|
ecf907c…
|
leo
|
154 |
git clone https://github.com/ConflictHQ/PlanOpticon.git |
|
ecf907c…
|
leo
|
155 |
cd PlanOpticon |
|
ecf907c…
|
leo
|
156 |
pip install -e ".[dev]" |
|
ecf907c…
|
leo
|
157 |
``` |
|
ecf907c…
|
leo
|
158 |
|
|
ecf907c…
|
leo
|
159 |
### Binary Download |
|
ecf907c…
|
leo
|
160 |
|
|
ecf907c…
|
leo
|
161 |
Download standalone binaries (no Python required) from [GitHub Releases](https://github.com/ConflictHQ/PlanOpticon/releases). |
|
ecf907c…
|
leo
|
162 |
|
|
ecf907c…
|
leo
|
163 |
### Requirements |
|
ecf907c…
|
leo
|
164 |
|
|
ecf907c…
|
leo
|
165 |
- Python 3.10+ |
|
ecf907c…
|
leo
|
166 |
- FFmpeg (`brew install ffmpeg` / `apt install ffmpeg`) |
|
a0146a5…
|
noreply
|
167 |
- At least one API key (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, or `GEMINI_API_KEY`) **or** [Ollama](https://ollama.com) running locally |
|
ecf907c…
|
leo
|
168 |
|
|
ecf907c…
|
leo
|
169 |
## Output Structure |
|
ecf907c…
|
leo
|
170 |
|
|
ecf907c…
|
leo
|
171 |
``` |
|
ecf907c…
|
leo
|
172 |
output/ |
|
ecf907c…
|
leo
|
173 |
├── manifest.json # Single source of truth |
|
ecf907c…
|
leo
|
174 |
├── transcript/ |
|
ecf907c…
|
leo
|
175 |
│ ├── transcript.json # Full transcript with timestamps |
|
ecf907c…
|
leo
|
176 |
│ ├── transcript.txt # Plain text |
|
ecf907c…
|
leo
|
177 |
│ └── transcript.srt # Subtitles |
|
ecf907c…
|
leo
|
178 |
├── frames/ # Content frames (people filtered out) |
|
ecf907c…
|
leo
|
179 |
├── diagrams/ # Detected diagrams + mermaid code |
|
ecf907c…
|
leo
|
180 |
├── captures/ # Screengrab fallbacks |
|
ecf907c…
|
leo
|
181 |
└── results/ |
|
ecf907c…
|
leo
|
182 |
├── analysis.md # Markdown report |
|
ecf907c…
|
leo
|
183 |
├── analysis.html # HTML report |
|
ecf907c…
|
leo
|
184 |
├── analysis.pdf # PDF report |
|
0981a08…
|
noreply
|
185 |
├── knowledge_graph.db # SQLite knowledge graph |
|
0981a08…
|
noreply
|
186 |
├── knowledge_graph.json # JSON export |
|
ecf907c…
|
leo
|
187 |
├── key_points.json # Extracted key points |
|
ecf907c…
|
leo
|
188 |
└── action_items.json # Tasks and follow-ups |
|
ecf907c…
|
leo
|
189 |
``` |
|
ecf907c…
|
leo
|
190 |
|
|
ecf907c…
|
leo
|
191 |
## Processing Depth |
|
ecf907c…
|
leo
|
192 |
|
|
ecf907c…
|
leo
|
193 |
| Depth | What you get | |
|
ecf907c…
|
leo
|
194 |
|-------|-------------| |
|
ecf907c…
|
leo
|
195 |
| `basic` | Transcription, key points, action items | |
|
ecf907c…
|
leo
|
196 |
| `standard` | + Diagram extraction (10 frames), knowledge graph, full reports | |
|
ecf907c…
|
leo
|
197 |
| `comprehensive` | + More frames analyzed (20), deeper extraction | |
|
ecf907c…
|
leo
|
198 |
|
|
ecf907c…
|
leo
|
199 |
## Documentation |
|
ecf907c…
|
leo
|
200 |
|
|
ecf907c…
|
leo
|
201 |
Full documentation at [planopticon.dev](https://planopticon.dev) |
|
ecf907c…
|
leo
|
202 |
|
|
ecf907c…
|
leo
|
203 |
## License |
|
ecf907c…
|
leo
|
204 |
|
|
0981a08…
|
noreply
|
205 |
MIT License -- Copyright (c) 2026 CONFLICT LLC |