1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Interactive Companion REPL
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The PlanOpticon Companion is an interactive Read-Eval-Print Loop (REPL) that provides a conversational interface to PlanOpticon's full feature set. It combines workspace awareness, knowledge graph querying, LLM-powered chat, and planning agent skills into a single session.
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use the Companion when you want to explore a knowledge graph interactively, ask natural-language questions about extracted content, generate planning artifacts on the fly, or switch between providers and models without restarting.
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Launching the Companion
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
There are three equivalent ways to start the Companion.
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### As a subcommand
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon companion
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### With the `--chat` / `-C` flag
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon --chat
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon -C
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
These flags launch the Companion directly from the top-level CLI, without invoking a subcommand.
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### With options
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The `companion` subcommand accepts options for specifying knowledge base paths, LLM provider, and model:
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Point at a specific knowledge base
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon companion --kb ./results
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Use a specific provider
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon companion -p anthropic
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Use a specific model
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon companion --chat-model gpt-4o
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Combine options
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon companion --kb ./results -p openai --chat-model gpt-4o
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Option | Description |
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `--kb PATH` | Path to a knowledge graph file or directory (repeatable) |
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `-p, --provider NAME` | LLM provider: `auto`, `openai`, `anthropic`, `gemini`, `ollama`, `azure`, `together`, `fireworks`, `cerebras`, `xai` |
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `--chat-model NAME` | Override the default chat model for the selected provider |
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Auto-discovery
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
On startup, the Companion automatically scans the workspace for relevant files:
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Knowledge graphs.** The Companion uses `find_nearest_graph()` to locate the closest `knowledge_graph.db` or `knowledge_graph.json` file. It searches the current directory, common output subdirectories (`results/`, `output/`, `knowledge-base/`), recursively downward (up to 4 levels), and upward through parent directories. SQLite `.db` files are preferred over `.json` files.
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Videos.** The current directory is scanned for files with `.mp4`, `.mkv`, and `.webm` extensions.
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Documents.** The current directory is scanned for files with `.md`, `.pdf`, and `.docx` extensions.
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**LLM provider.** If `--provider` is set to `auto` (the default), the Companion attempts to initialise a provider using any available API key in the environment (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, etc.).
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All discovered context is displayed in the welcome banner:
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
PlanOpticon Companion
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Interactive planning REPL
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Knowledge graph: knowledge_graph.db (42 entities, 87 relationships)
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Videos: meeting-2024-01-15.mp4, sprint-review.mp4
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Docs: requirements.md, architecture.pdf
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
LLM provider: openai (model: gpt-4o)
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Type /help for commands, or ask a question.
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If no knowledge graph is found, the banner shows "No knowledge graph loaded." Commands that require a KG will return an appropriate message rather than failing silently.
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Slash Commands
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The Companion supports 18 slash commands. Type `/help` at the prompt to see the full list.
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /help
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Display all available commands with brief descriptions.
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /help
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Available commands:
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/help Show this help
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/status Workspace status
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/skills List available skills
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/entities [--type T] List KG entities
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/search TERM Search entities by name
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/neighbors ENTITY Show entity relationships
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/export FORMAT Export KG (markdown, obsidian, notion, csv)
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/analyze PATH Analyze a video/doc
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/ingest PATH Ingest a file into the KG
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/auth SERVICE Authenticate with a cloud service
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/provider [NAME] List or switch LLM provider
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/model [NAME] Show or switch chat model
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/run SKILL Run a skill by name
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/plan Run project_plan skill
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/prd Run PRD skill
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/tasks Run task_breakdown skill
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
/quit, /exit Exit companion
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Any other input is sent to the chat agent (requires LLM).
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /status
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Show a summary of the current workspace state: loaded knowledge graph (with entity and relationship counts, broken down by entity type), number of discovered videos and documents, and whether an LLM provider is active.
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /status
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Workspace status:
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
KG: /home/user/project/results/knowledge_graph.db (42 entities, 87 relationships)
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
technology: 15
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
person: 12
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
concept: 10
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
organization: 5
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Videos: 2 found
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Docs: 3 found
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Provider: active
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /skills
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
List all registered planning agent skills with their names and descriptions. These are the skills that can be invoked via `/run`.
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /skills
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Available skills:
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
project_plan: Generate a structured project plan from knowledge graph
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
prd: Generate a product requirements document (PRD) / feature spec
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
roadmap: Generate a product/project roadmap
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
task_breakdown: Break down goals into tasks with dependencies
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
github_issues: Generate GitHub issues from task breakdown
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
requirements_chat: Interactive requirements gathering via guided questions
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
doc_generator: Generate technical documentation, ADRs, or meeting notes
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
artifact_export: Export artifacts in agent-ready formats
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cli_adapter: Push artifacts to external tools via their CLIs
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
notes_export: Export knowledge graph as structured notes (Obsidian, Notion)
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
wiki_generator: Generate a GitHub wiki from knowledge graph and artifacts
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /entities [--type TYPE]
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
List entities from the loaded knowledge graph. Optionally filter by entity type.
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /entities
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 42 entities
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[technology] Python -- General-purpose programming language
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Alice -- Lead engineer on the project
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[concept] Microservices -- Architectural pattern discussed
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /entities --type person
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 12 entities
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Alice -- Lead engineer on the project
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Bob -- Product manager
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
!!! note
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This command requires a loaded knowledge graph. If none is loaded, it returns "No knowledge graph loaded."
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /search TERM
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Search entities by name substring (case-insensitive).
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /search python
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 3 entities
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[technology] Python -- General-purpose programming language
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[technology] Python Flask -- Web framework for Python
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[concept] Python packaging -- Discussion of pip and packaging tools
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /neighbors ENTITY
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Show all entities and relationships connected to a given entity. This performs a breadth-first traversal (depth 1) from the named entity.
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /neighbors Alice
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 4 entities and 5 relationships
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Alice -- Lead engineer on the project
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[technology] Python -- General-purpose programming language
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[organization] Acme Corp -- Employer
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[concept] Authentication -- Auth system design
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Alice --[works_with]--> Python
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Alice --[employed_by]--> Acme Corp
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Alice --[proposed]--> Authentication
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Bob --[collaborates_with]--> Alice
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Authentication --[discussed_by]--> Alice
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
204
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
205
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /export FORMAT
206
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
207
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Request an export of the knowledge graph. Supported formats: `markdown`, `obsidian`, `notion`, `csv`. This command prints the equivalent CLI command to run.
208
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
209
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
210
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /export obsidian
211
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Export 'obsidian' requested. Use the CLI command:
212
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon export obsidian /home/user/project/results/knowledge_graph.db
213
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
214
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
215
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /analyze PATH
216
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
217
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Request analysis of a video or document file. Validates the file exists and prints the equivalent CLI command.
218
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
219
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
220
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /analyze meeting.mp4
221
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Analyze requested for meeting.mp4. Use the CLI:
222
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon analyze -i /home/user/project/meeting.mp4
223
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
224
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
225
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /ingest PATH
226
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
227
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Request ingestion of a file into the knowledge graph. Validates the file exists and prints the equivalent CLI command.
228
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
229
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
230
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /ingest notes.md
231
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Ingest requested for notes.md. Use the CLI:
232
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon ingest /home/user/project/notes.md
233
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
234
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
235
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /auth [SERVICE]
236
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
237
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Authenticate with a cloud service. When called without arguments, lists all available services. When called with a service name, triggers the authentication flow.
238
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
239
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
240
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /auth
241
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Usage: /auth SERVICE
242
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Available: dropbox, github, google, microsoft, notion, zoom
243
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
244
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /auth zoom
245
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Zoom authenticated (oauth)
246
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
247
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
248
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /provider [NAME]
249
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
250
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
List available LLM providers and their status, or switch to a different provider.
251
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
252
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When called without arguments (or with `list`), shows all known providers with their availability status:
253
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
254
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **ready** -- API key found in environment
255
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **local** -- runs locally (Ollama)
256
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **no key** -- no API key configured
257
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
258
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The currently active provider is marked.
259
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
260
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
261
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /provider
262
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Available providers:
263
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
openai: ready (active)
264
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
anthropic: ready
265
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
gemini: no key
266
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ollama: local
267
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
azure: no key
268
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
together: no key
269
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
fireworks: no key
270
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cerebras: no key
271
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
xai: no key
272
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
273
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Current: openai
274
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
275
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
276
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
To switch providers at runtime:
277
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
278
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
279
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /provider anthropic
280
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switched to provider: anthropic
281
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
282
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
283
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switching the provider reinitialises the provider manager and the planning agent. The chat model is reset to the provider's default. If initialisation fails, an error message is shown.
284
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
285
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /model [NAME]
286
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
287
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Show the current chat model, or switch to a different one.
288
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
289
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
290
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /model
291
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Current model: default
292
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Usage: /model MODEL_NAME
293
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
294
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /model claude-sonnet-4-20250514
295
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switched to model: claude-sonnet-4-20250514
296
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
297
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
298
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switching the model reinitialises both the provider manager and the planning agent.
299
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
300
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /run SKILL
301
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
302
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Run any registered skill by name. The skill receives the current agent context (knowledge graph, query engine, provider, and any previously generated artifacts) and returns an artifact.
303
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
304
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
305
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /run roadmap
306
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Roadmap (roadmap) ---
307
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Roadmap
308
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
309
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Vision & Strategy
310
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
311
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
312
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
313
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If the skill cannot execute (missing KG or provider), an error message is returned. Use `/skills` to see all available skill names.
314
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
315
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /plan
316
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
317
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shortcut for `/run project_plan`. Generates a structured project plan from the loaded knowledge graph.
318
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
319
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
320
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /plan
321
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Project Plan (project_plan) ---
322
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Project Plan
323
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
324
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Executive Summary
325
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
326
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
327
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
328
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /prd
329
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
330
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shortcut for `/run prd`. Generates a product requirements document.
331
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
332
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
333
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /prd
334
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Product Requirements Document (prd) ---
335
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Product Requirements Document
336
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
337
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Problem Statement
338
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
339
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
340
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
341
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /tasks
342
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
343
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shortcut for `/run task_breakdown`. Breaks goals and features into tasks with dependencies, priorities, and effort estimates. The output is JSON.
344
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
345
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
346
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /tasks
347
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Task Breakdown (task_list) ---
348
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[
349
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
350
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"id": "T1",
351
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"title": "Set up authentication service",
352
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Implement OAuth2 flow with JWT tokens",
353
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"depends_on": [],
354
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"priority": "high",
355
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"estimate": "1w",
356
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"assignee_role": "backend engineer"
357
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
358
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
359
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
]
360
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
361
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
362
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### /quit and /exit
363
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
364
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Exit the Companion REPL.
365
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
366
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
367
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /quit
368
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Bye.
369
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
370
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
371
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
372
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
373
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Exiting the Companion
374
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
375
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
In addition to `/quit` and `/exit`, you can exit by:
376
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
377
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Typing `quit`, `exit`, `bye`, or `q` as bare words (without the `/` prefix)
378
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Pressing `Ctrl+C` or `Ctrl+D`
379
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
380
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All of these end the session with a "Bye." message.
381
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
382
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
383
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
384
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Chat Mode
385
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
386
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Any input that does not start with `/` and is not a bare exit word is sent to the chat agent as a natural-language message. This requires a configured LLM provider.
387
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
388
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
389
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> What technologies were discussed in the meeting?
390
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Based on the knowledge graph, the following technologies were discussed:
391
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
392
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. **Python** -- mentioned in the context of backend development
393
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. **React** -- proposed for the frontend redesign
394
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. **PostgreSQL** -- discussed as the primary database
395
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
396
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
397
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
398
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The chat agent maintains conversation history across the session. It has full awareness of:
399
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
400
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- The loaded knowledge graph (entity and relationship counts, types)
401
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Any artifacts generated during the session (via `/plan`, `/prd`, `/tasks`, `/run`)
402
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- All available slash commands (which it may suggest when relevant)
403
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- The full PlanOpticon CLI command set
404
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
405
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If no LLM provider is configured, chat mode returns an error with instructions:
406
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
407
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
408
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> What was discussed?
409
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Chat requires an LLM provider. Set one of:
410
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
OPENAI_API_KEY
411
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
ANTHROPIC_API_KEY
412
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
GEMINI_API_KEY
413
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or pass --provider / --chat-model.
414
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
415
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
416
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
417
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
418
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Runtime Provider and Model Switching
419
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
420
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
One of the Companion's key features is the ability to switch LLM providers and models without restarting the session. This is useful for:
421
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
422
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Comparing outputs across different models
423
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Falling back to a local model (Ollama) when API keys expire
424
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Using a cheaper model for exploratory queries and a more capable one for artifact generation
425
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
426
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When you switch providers or models via `/provider` or `/model`, the Companion:
427
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
428
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Updates the internal provider name and/or model name
429
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Reinitialises the `ProviderManager`
430
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Reinitialises the `PlanningAgent` with a fresh `AgentContext` that retains the loaded knowledge graph and query engine
431
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
432
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Conversation history is preserved across provider switches.
433
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
434
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
435
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
436
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Example Session
437
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
438
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The following walkthrough shows a typical Companion session, from launch through exploration to artifact generation.
439
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
440
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
441
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
$ planopticon companion --kb ./results
442
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
443
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
444
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
445
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
PlanOpticon Companion
446
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Interactive planning REPL
447
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
448
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Knowledge graph: knowledge_graph.db (58 entities, 124 relationships)
449
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Videos: sprint-review-2024-03.mp4
450
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Docs: architecture.md, requirements.pdf
451
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
LLM provider: openai (model: default)
452
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
453
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Type /help for commands, or ask a question.
454
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
455
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /status
456
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Workspace status:
457
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
KG: /home/user/project/results/knowledge_graph.db (58 entities, 124 relationships)
458
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
technology: 20
459
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
person: 15
460
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
concept: 13
461
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
organization: 8
462
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
time: 2
463
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Videos: 1 found
464
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Docs: 2 found
465
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Provider: active
466
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
467
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /entities --type person
468
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 15 entities
469
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Alice -- Lead architect
470
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Bob -- Product manager
471
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Carol -- Frontend lead
472
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
473
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
474
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /neighbors Alice
475
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Found 6 entities and 8 relationships
476
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[person] Alice -- Lead architect
477
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[technology] Kubernetes -- Container orchestration platform
478
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[concept] Microservices -- Proposed architecture pattern
479
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
480
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Alice --[proposed]--> Microservices
481
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Alice --[expert_in]--> Kubernetes
482
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
483
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
484
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> What were the main decisions made in the sprint review?
485
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Based on the knowledge graph, the sprint review covered several key decisions:
486
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
487
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. **Adopt microservices architecture** -- Alice proposed and the team agreed
488
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
to move from the monolith to a microservices pattern.
489
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. **Use Kubernetes for orchestration** -- Selected over Docker Swarm.
490
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. **Prioritize authentication module** -- Bob identified this as the highest
491
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
priority for the next sprint.
492
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
493
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /provider anthropic
494
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switched to provider: anthropic
495
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
496
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /model claude-sonnet-4-20250514
497
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Switched to model: claude-sonnet-4-20250514
498
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
499
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /plan
500
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Project Plan (project_plan) ---
501
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Project Plan
502
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
503
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Executive Summary
504
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This project plan outlines the migration from a monolithic architecture
505
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
to a microservices-based system, as discussed in the sprint review...
506
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
507
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Goals & Objectives
508
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
509
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
510
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /tasks
511
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
--- Task Breakdown (task_list) ---
512
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[
513
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
514
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"id": "T1",
515
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"title": "Design service boundaries",
516
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Define microservice boundaries based on domain analysis",
517
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"depends_on": [],
518
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"priority": "high",
519
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"estimate": "3d",
520
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"assignee_role": "architect"
521
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
522
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
...
523
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
]
524
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
525
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> /export obsidian
526
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Export 'obsidian' requested. Use the CLI command:
527
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon export obsidian /home/user/project/results/knowledge_graph.db
528
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
529
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
planopticon> quit
530
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Bye.
531
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
532
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!