ltcai 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +285 -224
- package/docs/CHANGELOG.md +60 -0
- package/kg_schema.py +42 -0
- package/knowledge_graph.py +232 -36
- package/latticeai/core/agent.py +453 -0
- package/latticeai/core/config.py +178 -0
- package/llm_router.py +20 -8
- package/package.json +1 -1
- package/server.py +92 -436
- package/tools.py +87 -115
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/logo.svg" alt="Lattice AI" width="280"/>
|
|
3
3
|
<br/>
|
|
4
|
-
<strong>
|
|
4
|
+
<strong>Local-first AI workspace for your files, chats, folders, and knowledge graph.</strong>
|
|
5
5
|
<br/><br/>
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/ltcai/)
|
|
@@ -13,75 +13,93 @@
|
|
|
13
13
|
[](./LICENSE)
|
|
14
14
|
[](https://www.python.org/)
|
|
15
15
|
|
|
16
|
-
<br/>
|
|
17
|
-
|
|
18
|
-
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/lattice-ai-demo.gif" alt="Lattice AI demo showing chat, knowledge graph, and admin dashboard" width="100%"/>
|
|
16
|
+
<br/>
|
|
19
17
|
|
|
18
|
+
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/lattice-ai-demo.gif" alt="Lattice AI demo showing chat, knowledge graph, and admin dashboard" width="100%"/>
|
|
20
19
|
</div>
|
|
21
20
|
|
|
22
21
|
---
|
|
23
22
|
|
|
24
|
-
## What
|
|
25
|
-
|
|
26
|
-
- **Consistent "current model"** — model-card click → prepare/load → smoke test →
|
|
27
|
-
`current` update → chat-readiness flows through one path in the web UI, so the
|
|
28
|
-
model you see is always the model chat uses.
|
|
29
|
-
- **3-way smoke status** — load-time chat probe now reports `ok` / `degraded` /
|
|
30
|
-
`failed` (special-token leakage, runaway repetition, over-long output), and the
|
|
31
|
-
UI shows a compatibility warning for `degraded` while still allowing chat.
|
|
32
|
-
- **Timezone-correct security dashboard** — "events today" now uses the same
|
|
33
|
-
timezone as audit timestamps (configurable via `LATTICE_TZ`, e.g. `Asia/Seoul`),
|
|
34
|
-
fixing off-by-one day counts.
|
|
35
|
-
- **Cleaner auto-graph** — Korean particle stripping, generic-word / file-extension
|
|
36
|
-
blacklists, and a single-source penalty so only concepts repeated across multiple
|
|
37
|
-
sources get promoted to nodes.
|
|
38
|
-
- **Honest docs** — toned down unverifiable claims (telemetry, skill/plugin counts).
|
|
39
|
-
|
|
40
|
-
## What's new in 0.3.1
|
|
41
|
-
|
|
42
|
-
- **Reliable model selection** — `ModelResolution` unifies recommended card ID,
|
|
43
|
-
download ID, load ID, router cache key, and the front-end `current` so
|
|
44
|
-
"downloaded but not loaded" / "loaded but UI shows a different model"
|
|
45
|
-
classes of bugs are gone.
|
|
46
|
-
- **Smoke test on load** — every local model load runs a one-shot Korean
|
|
47
|
-
chat probe and surfaces `ready_to_chat` / `compatibility_status` to the UI.
|
|
48
|
-
- **Model Compatibility Layer** — per-family profiles (GPT-OSS, Gemma, Qwen,
|
|
49
|
-
Llama, Mistral, Phi, Deepseek …) with cached stop tokens, postprocess
|
|
50
|
-
rules, and Fast / Slow / Recovery paths so chat speed stays the same.
|
|
51
|
-
- **Auto graph curator** — topic extraction → alias clustering → promotion
|
|
52
|
-
with secret/PII firewall, so the graph builds itself without the user
|
|
53
|
-
managing nodes.
|
|
54
|
-
- **AI Security & Audit Command Center** — admin dashboard now shows
|
|
55
|
-
per-user risk matrix (compliant chats vs risky chats vs compliant files
|
|
56
|
-
vs risky files), sensitive-type donut, drill-down, raw explorer, and
|
|
57
|
-
JSON / CSV / XLSX / PDF exports — with hard-secret redaction
|
|
58
|
-
enforced on every response.
|
|
59
|
-
|
|
60
|
-
See [docs/CHANGELOG.md](./docs/CHANGELOG.md) for the full list.
|
|
23
|
+
## What is Lattice AI?
|
|
61
24
|
|
|
62
|
-
|
|
25
|
+
Most AI tools answer one chat at a time. They do not remember your folders, your project history, your previous decisions, or how your files relate to each other.
|
|
63
26
|
|
|
64
|
-
|
|
27
|
+
**Lattice AI turns your local workspace into an AI memory layer.**
|
|
65
28
|
|
|
66
|
-
|
|
29
|
+
It reads approved local folders, indexes chats and documents, builds a searchable knowledge graph, and lets you ask questions over that graph with local or opt-in cloud models.
|
|
67
30
|
|
|
68
|
-
|
|
31
|
+
```text
|
|
32
|
+
Local files + chats + folders
|
|
33
|
+
↓
|
|
34
|
+
Automatic knowledge graph
|
|
35
|
+
↓
|
|
36
|
+
Graph-aware AI chat, search, document generation, and admin audit
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Built for people who want
|
|
69
40
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
41
|
+
- a private AI workspace that runs from their own machine
|
|
42
|
+
- local model setup without hunting through many tools
|
|
43
|
+
- folder indexing that becomes useful AI memory
|
|
44
|
+
- a visual knowledge graph instead of disconnected files and chats
|
|
45
|
+
- optional team/admin controls for audit, permissions, and sensitive-data monitoring
|
|
73
46
|
|
|
74
47
|
---
|
|
75
48
|
|
|
76
|
-
##
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
### Python / PyPI
|
|
77
52
|
|
|
53
|
+
```bash
|
|
54
|
+
pip install ltcai
|
|
55
|
+
LTCAI
|
|
56
|
+
# open http://localhost:4825
|
|
78
57
|
```
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
58
|
+
|
|
59
|
+
### Apple Silicon local models
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install "ltcai[local]"
|
|
63
|
+
LTCAI
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Node / npm
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install -g ltcai
|
|
70
|
+
LTCAI
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### VS Code / Cursor
|
|
74
|
+
|
|
75
|
+
1. Install **Lattice AI** from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai) or [Open VSX](https://open-vsx.org/extension/parktaesoo/ltcai)
|
|
76
|
+
2. Start the local server with `LTCAI`
|
|
77
|
+
3. Press `Cmd+Shift+A` to open the chat panel
|
|
78
|
+
|
|
79
|
+
**First run:** create an account → the first account becomes admin → choose a model → connect folders → start asking questions.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## The 3-minute workflow
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
1. Install
|
|
87
|
+
pip install ltcai && LTCAI
|
|
88
|
+
|
|
89
|
+
2. Detect hardware
|
|
90
|
+
CPU, GPU, RAM are detected and a suitable local model is recommended.
|
|
91
|
+
|
|
92
|
+
3. Connect folders
|
|
93
|
+
Pick the local folders you want Lattice AI to index.
|
|
94
|
+
|
|
95
|
+
4. Build knowledge
|
|
96
|
+
Files and chats become nodes and edges in a local knowledge graph.
|
|
97
|
+
|
|
98
|
+
5. Ask questions
|
|
99
|
+
“What did I decide about the auth migration last week?”
|
|
100
|
+
|
|
101
|
+
6. Keep working
|
|
102
|
+
Use the same local knowledge from the web UI, VS Code, Telegram, or MCP clients.
|
|
85
103
|
```
|
|
86
104
|
|
|
87
105
|
---
|
|
@@ -93,175 +111,215 @@ Most AI tools forget everything after each conversation. Your files sit in folde
|
|
|
93
111
|
<td align="center" width="33%">
|
|
94
112
|
<b>Workspace Chat</b><br/>
|
|
95
113
|
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-chat.png" alt="Lattice AI workspace chat" width="100%"/>
|
|
96
|
-
<sub>Chat with local/cloud
|
|
114
|
+
<sub>Chat with local/cloud models, upload files, and control pipelines.</sub>
|
|
97
115
|
</td>
|
|
98
116
|
<td align="center" width="33%">
|
|
99
117
|
<b>Knowledge Graph</b><br/>
|
|
100
118
|
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-graph.png" alt="Lattice AI knowledge graph" width="100%"/>
|
|
101
|
-
<sub>
|
|
119
|
+
<sub>Automatically built from chats, files, folders, and project context.</sub>
|
|
102
120
|
</td>
|
|
103
121
|
<td align="center" width="33%">
|
|
104
122
|
<b>Admin Dashboard</b><br/>
|
|
105
123
|
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-admin.png" alt="Lattice AI admin dashboard" width="100%"/>
|
|
106
|
-
<sub>User management, audit
|
|
124
|
+
<sub>User management, audit logs, permissions, and security monitoring.</sub>
|
|
107
125
|
</td>
|
|
108
126
|
</tr>
|
|
109
127
|
</table>
|
|
110
128
|
|
|
111
129
|
---
|
|
112
130
|
|
|
113
|
-
##
|
|
131
|
+
## Why it is different
|
|
114
132
|
|
|
115
|
-
|
|
133
|
+
| Problem | Lattice AI approach |
|
|
134
|
+
|---|---|
|
|
135
|
+
| AI forgets every conversation | Chats and files are indexed into persistent local memory |
|
|
136
|
+
| Files are scattered across folders | Approved folders become searchable graph context |
|
|
137
|
+
| Local model setup is confusing | Hardware detection recommends and loads a suitable model |
|
|
138
|
+
| Graph tools require manual node editing | Nodes and edges are created automatically from real work |
|
|
139
|
+
| Cloud AI may expose private data | Local models keep data on your machine; cloud is opt-in |
|
|
140
|
+
| Teams need visibility | Admin dashboard, audit logs, role controls, and sensitive-data monitoring |
|
|
116
141
|
|
|
117
|
-
|
|
118
|
-
pip install ltcai
|
|
119
|
-
pip install "ltcai[local]" # + Apple Silicon MLX models
|
|
120
|
-
LTCAI
|
|
121
|
-
# → http://localhost:4825
|
|
122
|
-
```
|
|
142
|
+
---
|
|
123
143
|
|
|
124
|
-
|
|
144
|
+
## Core Features
|
|
125
145
|
|
|
126
|
-
|
|
127
|
-
npm install -g ltcai
|
|
128
|
-
LTCAI
|
|
129
|
-
```
|
|
146
|
+
### Local-first AI workspace
|
|
130
147
|
|
|
131
|
-
|
|
148
|
+
- Web UI running from a local server
|
|
149
|
+
- Local SQLite storage under `~/.ltcai/`
|
|
150
|
+
- Local folder indexing with explicit approval
|
|
151
|
+
- File upload, chat history, graph search, and document generation
|
|
152
|
+
- Optional cloud providers when you choose to use them
|
|
132
153
|
|
|
133
|
-
|
|
134
|
-
2. Start the local server: `LTCAI`
|
|
135
|
-
3. `Cmd+Shift+A` to open the chat panel
|
|
154
|
+
### Automatic knowledge graph
|
|
136
155
|
|
|
137
|
-
|
|
156
|
+
Lattice AI turns your work into structure automatically.
|
|
138
157
|
|
|
139
|
-
|
|
158
|
+
**Nodes** can represent:
|
|
140
159
|
|
|
141
|
-
|
|
160
|
+
| Node type | Examples |
|
|
161
|
+
|---|---|
|
|
162
|
+
| Document | PDF, DOCX, PPTX, XLSX, Markdown, code files |
|
|
163
|
+
| Concept | technologies, project names, ideas, architecture topics |
|
|
164
|
+
| Person | you, teammates, mentioned people |
|
|
165
|
+
| Chat | previous conversations and sessions |
|
|
166
|
+
| Task | TODOs, action items, follow-ups |
|
|
167
|
+
| Decision | choices made during discussions |
|
|
142
168
|
|
|
143
|
-
|
|
169
|
+
**Edges** describe relationships such as:
|
|
144
170
|
|
|
145
|
-
|
|
146
|
-
| Type | Examples |
|
|
147
|
-
|------|----------|
|
|
148
|
-
| Document | PDF, PPTX, DOCX, code files, images |
|
|
149
|
-
| Person | You, mentioned colleagues |
|
|
150
|
-
| Concept | Technologies, frameworks, ideas |
|
|
151
|
-
| Chat | Conversation sessions |
|
|
152
|
-
| Task | Action items, TODOs |
|
|
153
|
-
| Decision | Choices made in discussions |
|
|
171
|
+
`mentions` · `contains` · `depends on` · `explains` · `uses` · `replaces` · `supports` · `related to`
|
|
154
172
|
|
|
155
|
-
|
|
156
|
-
`mentions` · `contains` · `resolves` · `depends on` · `explains` · `uses` · `replaces` · `supports` · `related to`
|
|
173
|
+
The graph is curated automatically: noisy tokens, file extensions, generic words, and hard secrets are filtered before promotion.
|
|
157
174
|
|
|
158
|
-
|
|
159
|
-
1. Browse your drives and folders from the UI
|
|
160
|
-
2. Preview file counts, types, and sizes before indexing
|
|
161
|
-
3. Approve which folders to connect (sensitive files auto-excluded)
|
|
162
|
-
4. Files are parsed, chunked, and linked into the graph
|
|
163
|
-
5. Optional: enable file watcher for real-time updates
|
|
175
|
+
### Model loading that users can trust
|
|
164
176
|
|
|
165
|
-
|
|
177
|
+
Lattice AI keeps model identity consistent across recommendation, download, load, backend router state, and frontend display.
|
|
166
178
|
|
|
167
|
-
|
|
179
|
+
- unified model resolution
|
|
180
|
+
- local model smoke test after load
|
|
181
|
+
- `ok` / `degraded` / `failed` compatibility status
|
|
182
|
+
- per-family compatibility profiles for GPT-OSS, Gemma, Qwen, Llama, Mistral, Phi, Deepseek, and more
|
|
183
|
+
- fast post-processing path during normal chat
|
|
184
|
+
- recovery path only when output looks broken
|
|
168
185
|
|
|
169
|
-
|
|
186
|
+
### Admin and security command center
|
|
170
187
|
|
|
171
|
-
|
|
188
|
+
For team or organization usage, Lattice AI includes admin-facing controls:
|
|
172
189
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
| Admin + audit log | **Yes** | Yes | No | No |
|
|
183
|
-
| No built-in telemetry, self-hosted | **Yes** | Yes | Yes | No |
|
|
184
|
-
| One-command public tunnel | **Yes** | No | No | No |
|
|
185
|
-
| Free | **Yes** | Yes | Yes | No |
|
|
190
|
+
- user management and roles
|
|
191
|
+
- permission approvals for local file access
|
|
192
|
+
- audit event timeline
|
|
193
|
+
- sensitive chat/file detection
|
|
194
|
+
- risk overview by user
|
|
195
|
+
- raw data explorer with hard-secret redaction
|
|
196
|
+
- export to JSON, CSV, XLSX, TXT, or PDF
|
|
197
|
+
|
|
198
|
+
Hard secrets such as API keys, tokens, passwords, private keys, and common cloud credentials are redacted from security responses.
|
|
186
199
|
|
|
187
200
|
---
|
|
188
201
|
|
|
189
202
|
## Supported Models
|
|
190
203
|
|
|
191
|
-
|
|
204
|
+
### Local on Apple Silicon MLX
|
|
192
205
|
|
|
193
|
-
| Model | Best for |
|
|
194
|
-
|
|
206
|
+
| Model | Best for | Approx. size | Suggested RAM |
|
|
207
|
+
|---|---|---:|---:|
|
|
195
208
|
| Qwen3-VL 4B | Multimodal / low spec | ~2.7 GB | 8 GB |
|
|
196
209
|
| Qwen3-VL 8B | Multimodal / balanced | ~4.8 GB | 16 GB |
|
|
197
210
|
| GPT-OSS 20B | Reasoning / open-weight | ~12.1 GB | 32 GB |
|
|
198
211
|
| Gemma 4 26B | Multimodal / large | ~15.6 GB | 32 GB |
|
|
199
212
|
| Gemma 4 31B | Multimodal / latest Gemma 4 | ~18.4 GB | 48 GB |
|
|
200
|
-
| Qwen3-VL 30B A3B | Multimodal / top | ~18 GB | 48 GB |
|
|
201
|
-
| GPT-OSS 120B |
|
|
202
|
-
| Phi 4 Mini |
|
|
203
|
-
| Llama 3.1 8B | General | ~4.7 GB | 8 GB |
|
|
213
|
+
| Qwen3-VL 30B A3B | Multimodal / top local | ~18 GB | 48 GB |
|
|
214
|
+
| GPT-OSS 120B | Large reasoning model | ~62.3 GB | 128 GB |
|
|
215
|
+
| Phi 4 Mini | Fast coding/general chat | ~2.2 GB | 8 GB |
|
|
216
|
+
| Llama 3.1 8B | General chat | ~4.7 GB | 8 GB |
|
|
204
217
|
| Mistral 7B v0.3 | General / Apache | ~4.1 GB | 8 GB |
|
|
205
218
|
|
|
206
|
-
|
|
207
|
-
|
|
219
|
+
### Cross-platform engines
|
|
220
|
+
|
|
221
|
+
Lattice AI can also work with models served by:
|
|
222
|
+
|
|
223
|
+
- Ollama
|
|
224
|
+
- LM Studio
|
|
225
|
+
- llama.cpp
|
|
226
|
+
- vLLM
|
|
227
|
+
- OpenAI-compatible local or remote endpoints
|
|
208
228
|
|
|
209
|
-
|
|
210
|
-
OpenAI GPT-5.5 · Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5 via OpenRouter · Groq · Together · xAI · any OpenAI-compatible endpoint
|
|
229
|
+
### Cloud providers
|
|
211
230
|
|
|
212
|
-
|
|
231
|
+
Cloud models are optional. When enabled, prompts are sent to the selected provider.
|
|
232
|
+
|
|
233
|
+
Supported routes include OpenAI-compatible APIs, OpenRouter, Groq, Together, xAI, and other compatible endpoints.
|
|
213
234
|
|
|
214
235
|
---
|
|
215
236
|
|
|
216
|
-
##
|
|
237
|
+
## Privacy and data storage
|
|
217
238
|
|
|
218
|
-
| | |
|
|
239
|
+
| Area | Default behavior |
|
|
219
240
|
|---|---|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
241
|
+
| Storage | Data is stored locally under `~/.ltcai/` |
|
|
242
|
+
| Default binding | `127.0.0.1:4825` local server |
|
|
243
|
+
| Telemetry | No built-in product telemetry by default |
|
|
244
|
+
| Folder access | Explicit approval per folder/action scope |
|
|
245
|
+
| Sensitive files | `.env`, credentials, keys, certificates, and similar files are auto-excluded |
|
|
246
|
+
| Cloud models | Off unless configured; cloud prompts go to the selected provider |
|
|
247
|
+
| Delete controls | Remove chats, graph nodes, indexed folders, and local data |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Comparison
|
|
252
|
+
|
|
253
|
+
| Capability | Lattice AI | Open WebUI | Continue.dev | GitHub Copilot |
|
|
254
|
+
|---|:---:|:---:|:---:|:---:|
|
|
255
|
+
| Local model workflow | Yes | Yes | Yes | No |
|
|
256
|
+
| Local folder indexing | Yes | Limited | Workspace-focused | Limited |
|
|
257
|
+
| Automatic knowledge graph | Yes | No | No | No |
|
|
258
|
+
| Chat + file memory | Yes | Partial | Partial | Partial |
|
|
259
|
+
| VS Code / Cursor extension | Yes | No | Yes | Yes |
|
|
260
|
+
| Admin dashboard | Yes | Yes | No | No |
|
|
261
|
+
| Security audit exports | Yes | Limited | No | No |
|
|
262
|
+
| Optional cloud models | Yes | Yes | Yes | Yes |
|
|
263
|
+
| Local-first by default | Yes | Self-hosted | Local/dev focused | No |
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Current release
|
|
268
|
+
|
|
269
|
+
**0.4.0** completes the Knowledge Graph v2 read/write cutover:
|
|
270
|
+
|
|
271
|
+
- graph reads and writes flow through the v2 store, behind the unchanged
|
|
272
|
+
`KnowledgeGraphStore` interface
|
|
273
|
+
- legacy ↔ v2 result equivalence guaranteed (single read path + reconstruction
|
|
274
|
+
views), backed by a dedicated equivalence test suite
|
|
275
|
+
- dual-write projection keeps the v2 graph in sync on every write and delete
|
|
276
|
+
- deterministic ordering (`… , id ASC`) so results match across both paths
|
|
277
|
+
|
|
278
|
+
See the full [changelog](docs/CHANGELOG.md).
|
|
226
279
|
|
|
227
280
|
---
|
|
228
281
|
|
|
229
282
|
<details>
|
|
230
283
|
<summary><b>All Features</b></summary>
|
|
231
284
|
|
|
232
|
-
### Core
|
|
285
|
+
### Core experience
|
|
286
|
+
|
|
233
287
|
| Feature | Description |
|
|
234
|
-
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
|
288
|
+
|---|---|
|
|
289
|
+
| Web UI | Chat, file upload, model picker, graph view, admin pages |
|
|
290
|
+
| Auto setup wizard | Detect hardware, recommend model, install dependencies, verify load |
|
|
291
|
+
| Graph RAG | Retrieve context from indexed chats, files, and graph relationships |
|
|
292
|
+
| Local folder indexing | Browse, audit, approve, index, and optionally watch folders |
|
|
293
|
+
| Document generation | Use graph context to generate reports, summaries, and structured drafts |
|
|
294
|
+
|
|
295
|
+
### Developer tools
|
|
239
296
|
|
|
240
|
-
### Developer Tools
|
|
241
297
|
| Feature | Description |
|
|
242
|
-
|
|
243
|
-
|
|
|
244
|
-
|
|
|
245
|
-
|
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
|
|
|
249
|
-
|
|
|
250
|
-
|
|
251
|
-
### Access
|
|
298
|
+
|---|---|
|
|
299
|
+
| VS Code / Cursor | Chat panel, edit selection, explain code, generate code |
|
|
300
|
+
| Multi-step agent | File edit/create, grep, todo, and terminal workflow with human-in-the-loop |
|
|
301
|
+
| Multi-LLM pipeline | Plan, execute, and review with different models |
|
|
302
|
+
| MCP server | Expose Lattice tools to MCP-compatible clients |
|
|
303
|
+
| MCP registry | Install MCP servers from supported registries |
|
|
304
|
+
| Skills browser | Browse and install optional skills |
|
|
305
|
+
| Plugin browser | Browse compatible open-source plugins |
|
|
306
|
+
|
|
307
|
+
### Access and communication
|
|
308
|
+
|
|
252
309
|
| Feature | Description |
|
|
253
|
-
|
|
254
|
-
|
|
|
255
|
-
|
|
|
256
|
-
|
|
|
310
|
+
|---|---|
|
|
311
|
+
| Telegram bot | Chat, upload files, and manage models remotely |
|
|
312
|
+
| PWA | Install the web UI on mobile/tablet home screens |
|
|
313
|
+
| Public tunnel | `LTCAI --tunnel` for a temporary Cloudflare HTTPS URL |
|
|
257
314
|
|
|
258
315
|
### Administration
|
|
316
|
+
|
|
259
317
|
| Feature | Description |
|
|
260
|
-
|
|
261
|
-
|
|
|
262
|
-
|
|
|
263
|
-
|
|
|
264
|
-
|
|
|
318
|
+
|---|---|
|
|
319
|
+
| User management | Roles, permissions, account enable/disable |
|
|
320
|
+
| SSO | Entra ID / Okta OIDC configuration |
|
|
321
|
+
| Audit dashboard | AI usage, sensitive-data events, file access, exports |
|
|
322
|
+
| Security monitoring | Rate limits, approval logs, raw explorer, redaction |
|
|
265
323
|
|
|
266
324
|
</details>
|
|
267
325
|
|
|
@@ -269,18 +327,18 @@ The setup wizard auto-detects your hardware and recommends the best model for yo
|
|
|
269
327
|
<summary><b>Security</b></summary>
|
|
270
328
|
|
|
271
329
|
| Property | Detail |
|
|
272
|
-
|
|
273
|
-
| Binding | Default `127.0.0.1:4825`
|
|
330
|
+
|---|---|
|
|
331
|
+
| Binding | Default `127.0.0.1:4825` local only |
|
|
274
332
|
| Auth | Session required when network-exposed or public mode |
|
|
275
|
-
| Cookies | `HttpOnly + SameSite=Lax
|
|
276
|
-
| Local file access | Approval-token gated
|
|
277
|
-
| Package install | Admin-only with audit trail
|
|
278
|
-
| CORS | Localhost only by default;
|
|
279
|
-
| File upload | Magic-number signature
|
|
333
|
+
| Cookies | `HttpOnly + SameSite=Lax`; no localStorage token |
|
|
334
|
+
| Local file access | Approval-token gated by path, user, and action scope |
|
|
335
|
+
| Package install | Admin-only with audit trail for MCP, skills, pip, npm |
|
|
336
|
+
| CORS | Localhost only by default; configurable via `LATTICEAI_CORS_ALLOWED_ORIGINS` |
|
|
337
|
+
| File upload | Magic-number signature checks for extension spoofing defense |
|
|
280
338
|
| Rate limits | `/chat` 30/min · `/agent` 6/min · `/upload` 12/min per user |
|
|
281
|
-
| Telemetry |
|
|
339
|
+
| Telemetry | No built-in product telemetry by default |
|
|
282
340
|
|
|
283
|
-
Report vulnerabilities
|
|
341
|
+
Report vulnerabilities in [SECURITY.md](SECURITY.md).
|
|
284
342
|
|
|
285
343
|
</details>
|
|
286
344
|
|
|
@@ -290,10 +348,10 @@ Report vulnerabilities: [SECURITY.md](SECURITY.md)
|
|
|
290
348
|
### VS Code shortcuts
|
|
291
349
|
|
|
292
350
|
| Shortcut | Action |
|
|
293
|
-
|
|
351
|
+
|---|---|
|
|
294
352
|
| `Cmd+Shift+A` | Open chat |
|
|
295
353
|
| `Cmd+Shift+E` | Edit selected code |
|
|
296
|
-
| `Cmd+Shift+M` | Load
|
|
354
|
+
| `Cmd+Shift+M` | Load or switch model |
|
|
297
355
|
| Right-click | Explain / Save to Knowledge Garden |
|
|
298
356
|
|
|
299
357
|
### Telegram bot
|
|
@@ -302,7 +360,7 @@ Report vulnerabilities: [SECURITY.md](SECURITY.md)
|
|
|
302
360
|
LATTICEAI_TELEGRAM_BOT_TOKEN=your-token LTCAI
|
|
303
361
|
```
|
|
304
362
|
|
|
305
|
-
### Public server
|
|
363
|
+
### Public server
|
|
306
364
|
|
|
307
365
|
```bash
|
|
308
366
|
LATTICEAI_MODE=public \
|
|
@@ -312,14 +370,14 @@ LATTICEAI_INVITE_CODE=my-secret \
|
|
|
312
370
|
LTCAI
|
|
313
371
|
```
|
|
314
372
|
|
|
315
|
-
### Public tunnel
|
|
373
|
+
### Public tunnel
|
|
316
374
|
|
|
317
375
|
```bash
|
|
318
376
|
LTCAI --tunnel
|
|
319
377
|
# → https://xxxx.trycloudflare.com
|
|
320
378
|
```
|
|
321
379
|
|
|
322
|
-
### Auto-start
|
|
380
|
+
### Auto-start on macOS
|
|
323
381
|
|
|
324
382
|
```bash
|
|
325
383
|
cat > ~/Library/LaunchAgents/com.ltcai.plist << 'EOF'
|
|
@@ -345,21 +403,21 @@ launchctl load ~/Library/LaunchAgents/com.ltcai.plist
|
|
|
345
403
|
<summary><b>API Reference</b></summary>
|
|
346
404
|
|
|
347
405
|
| Method | Path | Description |
|
|
348
|
-
|
|
349
|
-
| GET | `/health` | Server status
|
|
350
|
-
| GET | `/models` | Model list
|
|
406
|
+
|---|---|---|
|
|
407
|
+
| GET | `/health` | Server status and current model |
|
|
408
|
+
| GET | `/models` | Model list and load state |
|
|
351
409
|
| POST | `/models/load` | Load a model |
|
|
352
|
-
| POST | `/chat` | Chat
|
|
410
|
+
| POST | `/chat` | Chat with streaming or non-streaming output |
|
|
353
411
|
| POST | `/agent` | Multi-step file agent |
|
|
354
412
|
| GET | `/knowledge-graph/stats` | Graph statistics |
|
|
355
413
|
| GET | `/knowledge-graph/search?q=` | Search the knowledge graph |
|
|
356
|
-
| GET | `/knowledge-graph/local/roots` | Discover local drives
|
|
414
|
+
| GET | `/knowledge-graph/local/roots` | Discover local drives and folders |
|
|
357
415
|
| POST | `/knowledge-graph/local/audit` | Audit a folder before indexing |
|
|
358
416
|
| POST | `/knowledge-graph/local/index` | Index a folder into Graph RAG |
|
|
359
417
|
| GET | `/mcp/installed` | Installed MCP servers |
|
|
360
|
-
| POST | `/mcp/install` | Install MCP server
|
|
418
|
+
| POST | `/mcp/install` | Install MCP server as admin |
|
|
361
419
|
| GET | `/skills/marketplace` | Skills marketplace |
|
|
362
|
-
| POST | `/skills/install` | Install a skill
|
|
420
|
+
| POST | `/skills/install` | Install a skill as admin |
|
|
363
421
|
| GET | `/admin/audit` | Audit report |
|
|
364
422
|
| GET | `/permissions/pending` | Pending file-access approvals |
|
|
365
423
|
|
|
@@ -371,12 +429,13 @@ Full reference: [docs/mcp-tools.md](docs/mcp-tools.md)
|
|
|
371
429
|
<summary><b>Troubleshooting</b></summary>
|
|
372
430
|
|
|
373
431
|
| Symptom | Fix |
|
|
374
|
-
|
|
375
|
-
| Port 4825 in use | `lsof -i :4825`
|
|
376
|
-
| `ModuleNotFoundError: mlx` | `pip install "ltcai[local]"`
|
|
377
|
-
| Python
|
|
378
|
-
| No API key warning |
|
|
379
|
-
|
|
|
432
|
+
|---|---|
|
|
433
|
+
| Port 4825 is already in use | `lsof -i :4825` then `kill <PID>`, or run `LTCAI --port 4826` |
|
|
434
|
+
| `ModuleNotFoundError: mlx` | Install local extras with `pip install "ltcai[local]"` on Apple Silicon |
|
|
435
|
+
| Python version is too old | Use Python 3.11 or newer |
|
|
436
|
+
| No API key warning | Set a provider key or use a local model |
|
|
437
|
+
| Cannot reach from iPad | Use `LATTICEAI_HOST=0.0.0.0 LTCAI` or `LTCAI --tunnel` |
|
|
438
|
+
| Model loads but chat looks broken | Check compatibility status; try another engine or model family |
|
|
380
439
|
|
|
381
440
|
</details>
|
|
382
441
|
|
|
@@ -385,31 +444,29 @@ Full reference: [docs/mcp-tools.md](docs/mcp-tools.md)
|
|
|
385
444
|
## Platform Support
|
|
386
445
|
|
|
387
446
|
| Feature | macOS Apple Silicon | macOS Intel / Windows / Linux |
|
|
388
|
-
|
|
447
|
+
|---|:---:|:---:|
|
|
389
448
|
| Web UI + cloud models | Yes | Yes |
|
|
390
449
|
| VS Code / Cursor extension | Yes | Yes |
|
|
391
450
|
| Telegram bot | Yes | Yes |
|
|
392
|
-
| MLX local models | Yes |
|
|
393
|
-
| Ollama / LM Studio / vLLM | Yes | Yes |
|
|
451
|
+
| MLX local models | Yes | No |
|
|
452
|
+
| Ollama / LM Studio / vLLM / llama.cpp | Yes | Yes |
|
|
394
453
|
|
|
395
454
|
---
|
|
396
455
|
|
|
397
456
|
## Distribution
|
|
398
457
|
|
|
399
458
|
| Channel | Link |
|
|
400
|
-
|
|
459
|
+
|---|---|
|
|
401
460
|
| PyPI | [pypi.org/project/ltcai](https://pypi.org/project/ltcai/) |
|
|
402
461
|
| npm | [npmjs.com/package/ltcai](https://www.npmjs.com/package/ltcai) |
|
|
403
462
|
| VS Code Marketplace | [marketplace.visualstudio.com](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai) |
|
|
404
463
|
| Open VSX | [open-vsx.org](https://open-vsx.org/extension/parktaesoo/ltcai) |
|
|
405
464
|
|
|
406
|
-
Current version: **0.3.2** — [Changelog](docs/CHANGELOG.md)
|
|
407
|
-
|
|
408
465
|
---
|
|
409
466
|
|
|
410
467
|
## Contributing
|
|
411
468
|
|
|
412
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
469
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). Issues and pull requests are welcome.
|
|
413
470
|
|
|
414
471
|
## License
|
|
415
472
|
|
|
@@ -422,49 +479,53 @@ MIT — [TaeSoo Park](https://github.com/TaeSooPark-PTS)
|
|
|
422
479
|
|
|
423
480
|
## Lattice AI
|
|
424
481
|
|
|
425
|
-
**내 PC의 파일, 대화,
|
|
426
|
-
|
|
427
|
-
대부분의 AI 도구는 대화가 끝나면 모든 것을 잊습니다. Lattice AI는 다릅니다. 로컬 파일을 읽고, 대화를 기록하고, 사람·프로젝트·개념·문서를 연결하는 지식 그래프를 자동으로 만듭니다. 모든 데이터는 내 PC에만 저장됩니다.
|
|
482
|
+
**내 PC의 파일, 대화, 폴더를 기억하고 연결하는 로컬 우선 AI 워크스페이스**
|
|
428
483
|
|
|
429
|
-
|
|
484
|
+
대부분의 AI 도구는 대화가 끝나면 맥락을 잊습니다. Lattice AI는 승인한 로컬 폴더와 대화를 인덱싱하고, 사람·프로젝트·개념·문서를 자동으로 지식 그래프로 연결합니다.
|
|
430
485
|
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
6. 어디서든 작업 웹 UI · VS Code · Telegram · MCP — 같은 지식에 연결
|
|
486
|
+
```text
|
|
487
|
+
로컬 파일 + 대화 + 폴더
|
|
488
|
+
↓
|
|
489
|
+
자동 지식 그래프
|
|
490
|
+
↓
|
|
491
|
+
그래프 기반 AI 검색, 채팅, 문서 생성, 관리자 감사
|
|
438
492
|
```
|
|
439
493
|
|
|
440
494
|
### 설치
|
|
441
495
|
|
|
442
496
|
```bash
|
|
443
|
-
pip install ltcai
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
LTCAI --tunnel # + Cloudflare 공개 URL 자동 발급
|
|
497
|
+
pip install ltcai
|
|
498
|
+
LTCAI
|
|
499
|
+
# http://localhost:4825
|
|
447
500
|
```
|
|
448
501
|
|
|
449
|
-
|
|
502
|
+
Apple Silicon에서 로컬 모델까지 쓰려면:
|
|
450
503
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
504
|
+
```bash
|
|
505
|
+
pip install "ltcai[local]"
|
|
506
|
+
LTCAI
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### 사용 흐름
|
|
455
510
|
|
|
456
|
-
|
|
511
|
+
```text
|
|
512
|
+
1. 설치한다.
|
|
513
|
+
2. CPU, GPU, RAM을 감지해서 적합한 로컬 모델을 추천받는다.
|
|
514
|
+
3. 연결할 로컬 폴더를 선택한다.
|
|
515
|
+
4. 파일과 대화가 자동으로 지식 그래프가 된다.
|
|
516
|
+
5. “지난주 인증 마이그레이션에서 결정한 게 뭐였지?”처럼 질문한다.
|
|
517
|
+
6. 같은 지식을 웹 UI, VS Code, Telegram, MCP에서 사용한다.
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
### 핵심 차별점
|
|
457
521
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
| Gemma 4 31B | 멀티모달 / 최신 Gemma 4 | ~18.4GB | 48GB |
|
|
465
|
-
| Qwen3-VL 30B A3B | 멀티모달 / 최고급 | ~18GB | 48GB |
|
|
466
|
-
| GPT-OSS 120B | 추론 / 최고급 오픈가중치 | ~62.3GB | 128GB |
|
|
522
|
+
- **내 데이터가 AI의 기억이 됨** — 채팅과 파일을 자동으로 구조화
|
|
523
|
+
- **로컬 우선** — 기본 데이터는 `~/.ltcai/`에 저장
|
|
524
|
+
- **자동 그래프** — 사용자가 노드와 엣지를 직접 만들 필요 없음
|
|
525
|
+
- **모델 추천/로드 흐름** — 하드웨어 감지 후 적합한 모델 추천
|
|
526
|
+
- **선택형 클라우드** — 클라우드 모델은 사용자가 설정한 경우에만 사용
|
|
527
|
+
- **관리자/보안 기능** — 권한, 감사 로그, 민감정보 감지, export 지원
|
|
467
528
|
|
|
468
|
-
자세한
|
|
529
|
+
자세한 내용은 [docs/CHANGELOG.md](docs/CHANGELOG.md), [SECURITY.md](SECURITY.md), [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요.
|
|
469
530
|
|
|
470
531
|
</details>
|