ltcai 0.1.31 โ†’ 0.2.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 CHANGED
@@ -1,9 +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>One install. Your personal AI workspace.</strong>
5
- <br/>
6
- Local LLMs, cloud models, VS Code / Cursor, Telegram, MCP tools, files, admin controls, and a knowledge graph in one self-hosted stack.
4
+ <strong>Private local AI workspace that turns your files, chats, and folders into a searchable knowledge graph.</strong>
7
5
  <br/><br/>
8
6
 
9
7
  [![PyPI](https://img.shields.io/pypi/v/ltcai?label=PyPI&color=blue)](https://pypi.org/project/ltcai/)
@@ -23,59 +21,62 @@
23
21
 
24
22
  ---
25
23
 
26
- ## What is Lattice AI?
24
+ ## Why Lattice AI?
25
+
26
+ Most AI tools forget everything after each conversation. Your files sit in folders, your chats vanish, and nothing connects.
27
27
 
28
- **Lattice AI** is a self-hosted AI server that unifies local and cloud LLMs into one practical workspace. Install once, then use the same AI from the web UI, VS Code / Cursor, Telegram, MCP clients, files, and your personal knowledge graph.
28
+ **Lattice AI remembers.** It reads your local files, indexes your conversations, and builds a knowledge graph that links people, projects, concepts, and documents โ€” all on your machine, with zero data leaving your PC.
29
29
 
30
- - ๐Ÿ–ฅ๏ธ **Web UI** โ€” chat, file upload, admin dashboard, data graph
31
- - ๐Ÿงฉ **VS Code / Cursor extension** โ€” edit, explain, generate commands inline
32
- - ๐Ÿ“ฑ **Telegram bot** โ€” access your AI from anywhere
33
- - ๐Ÿ”Œ **MCP server** โ€” use Lattice tools inside Claude Desktop / Cursor
34
- - ๐Ÿ”’ **Zero telemetry** โ€” all data stays in `~/.ltcai/` on your machine
35
- - โšก **30-second start** โ€” `pip install ltcai` or `npm install -g ltcai`
30
+ - **Your data stays local** โ€” everything lives in `~/.ltcai/`, never sent to external servers
31
+ - **Your AI gets smarter over time** โ€” every chat and file builds your personal knowledge graph
32
+ - **One install, works everywhere** โ€” web UI, VS Code, Telegram, MCP clients, all connected to the same brain
36
33
 
37
34
  ---
38
35
 
39
- ## ๐Ÿ“ธ Product Preview
36
+ ## 3-Minute Workflow
40
37
 
41
- Real screens from the local web app:
38
+ ```
39
+ 1. Install pip install ltcai && LTCAI
40
+ 2. Detect hardware Auto-detect CPU, GPU, RAM โ†’ recommend the best local model
41
+ 3. Connect folders Select local folders to index into your knowledge graph
42
+ 4. Build knowledge Files and chats auto-analyzed โ†’ nodes (people, concepts, files) + edges (mentions, contains, depends on)
43
+ 5. Ask anything "What did I discuss about the auth migration last week?" โ†’ Graph RAG retrieves context
44
+ 6. Work from anywhere Web UI ยท VS Code ยท Telegram ยท MCP โ€” all connected to the same knowledge
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Product Preview
42
50
 
43
51
  <table>
44
52
  <tr>
45
53
  <td align="center" width="33%">
46
- <b>๐Ÿ’ฌ Workspace Chat</b><br/>
54
+ <b>Workspace Chat</b><br/>
47
55
  <img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-chat.png" alt="Lattice AI workspace chat" width="100%"/>
48
- <sub>Web chat with local LLM, file upload, pipeline status</sub>
56
+ <sub>Chat with local/cloud LLM, upload files, pipeline controls</sub>
49
57
  </td>
50
58
  <td align="center" width="33%">
51
- <b>๐Ÿ›ก๏ธ Admin Dashboard</b><br/>
52
- <img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-admin.png" alt="Lattice AI admin dashboard" width="100%"/>
53
- <sub>User management, audit log, security monitoring</sub>
59
+ <b>Knowledge Graph</b><br/>
60
+ <img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-graph.png" alt="Lattice AI knowledge graph" width="100%"/>
61
+ <sub>Auto-built from chats and documents โ€” nodes = nouns, edges = verbs</sub>
54
62
  </td>
55
63
  <td align="center" width="33%">
56
- <b>๐Ÿ•ธ๏ธ Knowledge Graph</b><br/>
57
- <img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-graph.png" alt="Lattice AI knowledge graph" width="100%"/>
58
- <sub>Auto-built Graph RAG from chats &amp; documents</sub>
64
+ <b>Admin Dashboard</b><br/>
65
+ <img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-admin.png" alt="Lattice AI admin dashboard" width="100%"/>
66
+ <sub>User management, audit log, security monitoring</sub>
59
67
  </td>
60
68
  </tr>
61
69
  </table>
62
70
 
63
- What this gives users after install:
64
-
65
- - A single local workspace for chat, files, models, runtime setup, and tool control
66
- - A graph view that turns chats and documents into searchable knowledge
67
- - Admin screens for users, model status, VPC settings, SSO, audit logs, and security monitoring
68
-
69
71
  ---
70
72
 
71
- ## โšก Quick Start (30 seconds)
73
+ ## Quick Start
72
74
 
73
75
  **Python / PyPI**
74
76
 
75
77
  ```bash
76
78
  pip install ltcai
77
- pip install "ltcai[local]"
78
- LTCAI doctor
79
+ pip install "ltcai[local]" # + Apple Silicon MLX models
79
80
  LTCAI
80
81
  # โ†’ http://localhost:4825
81
82
  ```
@@ -84,123 +85,166 @@ LTCAI
84
85
 
85
86
  ```bash
86
87
  npm install -g ltcai
87
- LTCAI doctor
88
88
  LTCAI
89
89
  ```
90
90
 
91
91
  **VS Code / Cursor**
92
92
 
93
93
  1. Install **Lattice AI** from [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai) or [Open VSX](https://open-vsx.org/extension/parktaesoo/ltcai)
94
- 2. Start the local server with `LTCAI`
95
- 3. Run `Lattice AI: Open Chat` (`Cmd+Shift+A`) in your editor
94
+ 2. Start the local server: `LTCAI`
95
+ 3. `Cmd+Shift+A` to open the chat panel
96
96
 
97
97
  **First run:** open `http://localhost:4825` โ†’ sign up โ†’ first account auto-becomes admin โ†’ pick a model โ†’ start chatting.
98
98
 
99
- **Public HTTPS tunnel (Cloudflare, no account needed):**
99
+ ---
100
100
 
101
- ```bash
102
- LTCAI --tunnel
103
- # โ†’ https://xxxx.trycloudflare.com
104
- ```
101
+ ## How the Knowledge Graph Works
102
+
103
+ Lattice AI automatically analyzes your chats and files, extracting meaningful structure:
104
+
105
+ **Nodes (nouns)** โ€” the things in your world:
106
+ | Type | Examples |
107
+ |------|----------|
108
+ | Document | PDF, PPTX, DOCX, code files, images |
109
+ | Person | You, mentioned colleagues |
110
+ | Concept | Technologies, frameworks, ideas |
111
+ | Chat | Conversation sessions |
112
+ | Task | Action items, TODOs |
113
+ | Decision | Choices made in discussions |
114
+
115
+ **Edges (verbs)** โ€” how things relate:
116
+ `mentions` ยท `contains` ยท `resolves` ยท `depends on` ยท `explains` ยท `uses` ยท `replaces` ยท `supports` ยท `related to`
117
+
118
+ **Local folder indexing:**
119
+ 1. Browse your drives and folders from the UI
120
+ 2. Preview file counts, types, and sizes before indexing
121
+ 3. Approve which folders to connect (sensitive files auto-excluded)
122
+ 4. Files are parsed, chunked, and linked into the graph
123
+ 5. Optional: enable file watcher for real-time updates
124
+
125
+ All data stays in a local SQLite database. Nothing leaves your machine.
105
126
 
106
127
  ---
107
128
 
108
- ## ๐Ÿ†š Why Lattice AI?
129
+ ## Comparison
109
130
 
110
- Comparison is based on public product behavior as of 2026-05.
131
+ Based on public product behavior as of 2026-05.
111
132
 
112
133
  | | Lattice AI | Open WebUI | Continue.dev | GitHub Copilot |
113
134
  |---|:---:|:---:|:---:|:---:|
114
- | Local model (offline, Apple Silicon) | โœ… | โœ… | โœ… | โŒ |
115
- | Cloud models (OpenAI, Groqโ€ฆ) | โœ… | โœ… | โœ… | โœ… |
116
- | VS Code extension | โœ… | โŒ | โœ… | โœ… |
117
- | Telegram bot | โœ… | โŒ | โŒ | โŒ |
118
- | Graph RAG (auto knowledge graph) | โœ… | โŒ | โŒ | โŒ |
119
- | MCP registry (browse & one-click install) | โœ… | โš ๏ธ* | โœ… | โŒ |
120
- | Admin dashboard + audit log | โœ… | โœ… | โŒ | โŒ |
121
- | Self-hosted, zero telemetry | โœ… | โœ… | โœ… | โŒ |
122
- | One-command public tunnel | โœ… | โŒ | โŒ | โŒ |
123
- | Free | โœ… | โœ… | โœ… | โŒ |
124
-
125
- > โš ๏ธ *Open WebUI supports MCP via manual URL configuration โ€” no registry browsing or one-click install.
135
+ | Local model (offline, Apple Silicon) | **Yes** | Yes | Yes | No |
136
+ | Cloud models (OpenAI, Groq...) | **Yes** | Yes | Yes | Yes |
137
+ | Knowledge graph (auto from files + chats) | **Yes** | No | No | No |
138
+ | Local folder indexing + file watcher | **Yes** | No | No | No |
139
+ | VS Code extension | **Yes** | No | Yes | Yes |
140
+ | Telegram bot | **Yes** | No | No | No |
141
+ | MCP registry (one-click install) | **Yes** | Partial | Yes | No |
142
+ | Admin + audit log | **Yes** | Yes | No | No |
143
+ | Zero telemetry, self-hosted | **Yes** | Yes | Yes | No |
144
+ | One-command public tunnel | **Yes** | No | No | No |
145
+ | Free | **Yes** | Yes | Yes | No |
126
146
 
127
147
  ---
128
148
 
129
- ## ๐Ÿง  Supported Models
149
+ ## Supported Models
150
+
151
+ **Local (Apple Silicon MLX):**
130
152
 
131
- **Local โ€” Apple Silicon MLX + cross-platform local servers:**
153
+ | Model | Best for | Size | Min RAM |
154
+ |-------|----------|------|---------|
155
+ | Qwen3-VL 4B | Multimodal / low spec | ~2.7 GB | 8 GB |
156
+ | Qwen3-VL 8B | Multimodal / balanced | ~4.8 GB | 16 GB |
157
+ | Gemma 4 26B | Multimodal / large | ~15.6 GB | 32 GB |
158
+ | Qwen3-VL 30B A3B | Multimodal / top | ~18 GB | 48 GB |
159
+ | Phi 4 Mini | Coding (fast) | ~2.2 GB | 8 GB |
160
+ | Llama 3.1 8B | General | ~4.7 GB | 8 GB |
161
+ | Mistral 7B v0.3 | General / Apache | ~4.1 GB | 8 GB |
132
162
 
133
- | Model | Best for | Size |
134
- |-------|----------|------|
135
- | `mlx-community/Qwen3-VL-4B-Instruct-4bit` | Multimodal / low spec | ~2.7 GB |
136
- | `mlx-community/Qwen3-VL-8B-Instruct-4bit` | Multimodal / balanced | ~4.8 GB |
137
- | `mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit` | Multimodal / large | ~18 GB |
138
- | `mlx-community/Llama-3.1-8B-Instruct-4bit` | General | ~4.7 GB |
139
- | `mlx-community/Mistral-7B-Instruct-v0.3-4bit` | General / Apache | ~4.1 GB |
140
- | `mlx-community/Phi-4-mini-instruct-4bit` | Coding (fast) | ~2.2 GB |
141
- | `mlx-community/gemma-4-26b-a4b-it-4bit` | Multimodal / large | ~15.6 GB |
163
+ **Cross-platform (Ollama / LM Studio / vLLM / llama.cpp):**
164
+ Same models via Ollama pull, LM Studio download, or vLLM serve.
142
165
 
143
166
  **Cloud (any platform):**
144
- OpenAI GPT-5.5 ยท OpenRouter Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5 ยท Groq ยท Together ยท any OpenAI-compatible endpoint
167
+ OpenAI GPT-5.5 ยท Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5 via OpenRouter ยท Groq ยท Together ยท xAI ยท any OpenAI-compatible endpoint
168
+
169
+ The setup wizard auto-detects your hardware and recommends the best model for your specs.
170
+
171
+ ---
172
+
173
+ ## Data Privacy
174
+
175
+ | | |
176
+ |---|---|
177
+ | **Storage** | All data in `~/.ltcai/` on your machine |
178
+ | **Telemetry** | None โ€” no analytics, no tracking, no phoning home |
179
+ | **File access** | Approval-token gated โ€” explicit consent per folder |
180
+ | **Cloud models** | When using cloud APIs, prompts are sent to the provider. Local models keep everything offline. |
181
+ | **Sensitive files** | `.env`, credentials, keys, certificates auto-excluded from indexing |
182
+ | **Delete** | Clear chat history, delete graph nodes, remove indexed folders at any time |
145
183
 
146
184
  ---
147
185
 
148
- ## โœจ Features
186
+ <details>
187
+ <summary><b>All Features</b></summary>
149
188
 
189
+ ### Core Experience
190
+ | Feature | Description |
191
+ |---------|-------------|
192
+ | **Web UI** | Responsive chat, file upload, model picker, knowledge graph |
193
+ | **Auto Setup Wizard** | Detect hardware โ†’ recommend model โ†’ install dependencies โ†’ verify |
194
+ | **Graph RAG** | Chats and files auto-indexed into SQLite knowledge graph |
195
+ | **Local folder indexing** | Browse, audit, and index local folders with file watcher |
196
+
197
+ ### Developer Tools
150
198
  | Feature | Description |
151
199
  |---------|-------------|
152
- | **Web UI** | Responsive chat + admin panel + graph visualisation |
153
- | **Auto Setup Wizard** | Detects โ†’ downloads โ†’ installs โ†’ verifies โ†’ repairs dependencies |
154
200
  | **VS Code / Cursor** | Chat panel, Edit Selection, Explain, Generate command |
155
- | **Telegram bot** | Local AI mirror + cloud Codex bot |
201
+ | **Multi-step agent** | File edit/create, grep, todo, terminal (25 steps, human-in-the-loop) |
202
+ | **Multi-LLM pipeline** | Plan โ†’ Execute โ†’ Review with different models |
156
203
  | **MCP server** | Use Lattice tools in Claude Desktop / Cursor |
157
204
  | **MCP registry** | One-click install from registry.modelcontextprotocol.io |
158
- | **Skills marketplace** | 77 official skills (Anthropic + Adobe ยท Airtable ยท Auth0 ยท Pydantic) |
205
+ | **Skills marketplace** | 77 official skills (Anthropic + verified third-party) |
159
206
  | **Plugin directory** | Browse 149 open-source plugins |
160
- | **Graph RAG** | Chat & docs auto-indexed as SQLite knowledge graph |
161
- | **Multi-step agent** | File edit/create, grep, todo, terminal (25 steps) |
162
- | **Multi-LLM pipeline** | Plan โ†’ Execute โ†’ Review with different models |
163
- | **Human-in-the-loop** | Approve agent plan before execution |
164
- | **Admin governance** | User status, role permissions, Okta / Entra ID SSO, security monitoring |
165
- | **Audit dashboard** | Per-user AI usage, sensitive data detection, event log, UTF-8 TXT/CSV/Excel exports |
166
- | **PWA** | Install on iPad / Android home screen |
167
- | **SSO** | Entra ID / Okta OIDC |
168
207
 
169
- ---
170
-
171
- ## ๐Ÿ–ฅ๏ธ Platform Support
172
-
173
- | Feature | macOS Apple Silicon | macOS Intel / Windows / Linux |
174
- |---------|:---:|:---:|
175
- | Web UI + cloud models | โœ… | โœ… |
176
- | VS Code / Cursor extension | โœ… | โœ… |
177
- | Telegram bot | โœ… | โœ… |
178
- | MLX local models | โœ… | โŒ |
179
- | Ollama / LM Studio / vLLM | โœ… | โœ… |
208
+ ### Access & Communication
209
+ | Feature | Description |
210
+ |---------|-------------|
211
+ | **Telegram bot** | Chat, upload files, manage models from anywhere |
212
+ | **PWA** | Install on iPad / Android home screen |
213
+ | **Public tunnel** | `LTCAI --tunnel` โ€” Cloudflare HTTPS, no account needed |
180
214
 
181
- ---
215
+ ### Administration
216
+ | Feature | Description |
217
+ |---------|-------------|
218
+ | **User management** | Roles, permissions, disable/enable accounts |
219
+ | **SSO** | Entra ID / Okta OIDC |
220
+ | **Audit dashboard** | Per-user AI usage, sensitive data detection, event log, TXT/CSV/Excel export |
221
+ | **Security monitoring** | Rate limits, file access approvals, MCP install audit trail |
182
222
 
183
- ## ๐Ÿ› ๏ธ Setup & Usage
223
+ </details>
184
224
 
185
- ### Install & run
225
+ <details>
226
+ <summary><b>Security</b></summary>
186
227
 
187
- ```bash
188
- # Verify everything is ready
189
- LTCAI doctor
228
+ | Property | Detail |
229
+ |----------|--------|
230
+ | Binding | Default `127.0.0.1:4825` โ€” local only |
231
+ | Auth | Session required when network-exposed or public mode |
232
+ | Cookies | `HttpOnly + SameSite=Lax` โ€” no localStorage token |
233
+ | Local file access | Approval-token gated (path + user + action scope) |
234
+ | Package install | Admin-only with audit trail (MCP, skills, pip, npm) |
235
+ | CORS | Localhost only by default; configure via `LATTICEAI_CORS_ALLOWED_ORIGINS` |
236
+ | File upload | Magic-number signature check (blocks extension spoofing) |
237
+ | Rate limits | `/chat` 30/min ยท `/agent` 6/min ยท `/upload` 12/min per user |
238
+ | Telemetry | None โ€” all data in `~/.ltcai/` |
190
239
 
191
- # Run with cloud API key
192
- OPENAI_API_KEY=sk-... LTCAI
240
+ Report vulnerabilities: [SECURITY.md](SECURITY.md)
193
241
 
194
- # Run with local MLX model (Apple Silicon)
195
- LATTICEAI_MODE=local \
196
- LATTICEAI_LOCAL_MODEL=mlx-community/gemma-4-26b-a4b-it-4bit \
197
- LTCAI
198
- ```
242
+ </details>
199
243
 
200
- ### VS Code extension
244
+ <details>
245
+ <summary><b>Setup & Configuration</b></summary>
201
246
 
202
- 1. VS Code โ†’ Extensions โ†’ search `ltcai` โ†’ Install
203
- 2. `Cmd+Shift+A` โ€” open chat panel (auto-connects to `localhost:4825`)
247
+ ### VS Code shortcuts
204
248
 
205
249
  | Shortcut | Action |
206
250
  |----------|--------|
@@ -215,7 +259,7 @@ LTCAI
215
259
  LATTICEAI_TELEGRAM_BOT_TOKEN=your-token LTCAI
216
260
  ```
217
261
 
218
- ### Public server (Render / Fly.io / Docker)
262
+ ### Public server (Docker / Render / Fly.io)
219
263
 
220
264
  ```bash
221
265
  LATTICEAI_MODE=public \
@@ -225,36 +269,37 @@ LATTICEAI_INVITE_CODE=my-secret \
225
269
  LTCAI
226
270
  ```
227
271
 
272
+ ### Public tunnel (Cloudflare, no account)
273
+
228
274
  ```bash
229
- # Docker
230
- docker build -t lattice-ai .
231
- docker run --rm -p 4825:4825 \
232
- -e OPENAI_API_KEY="$OPENAI_API_KEY" \
233
- -e LATTICEAI_INVITE_CODE="my-secret" \
234
- -v "$PWD/.data:/data" \
235
- lattice-ai
275
+ LTCAI --tunnel
276
+ # โ†’ https://xxxx.trycloudflare.com
236
277
  ```
237
278
 
238
- ---
279
+ ### Auto-start (Mac)
239
280
 
240
- ## ๐Ÿ”’ Security
241
-
242
- | Property | Detail |
243
- |----------|--------|
244
- | Binding | Default `127.0.0.1:4825` โ€” local only |
245
- | Auth | Session required when network-exposed or public mode |
246
- | Cookies | `HttpOnly + SameSite=Lax` โ€” no localStorage token |
247
- | Local file access | Approval-token gated (path + user + action scope) |
248
- | CORS | Localhost only by default; add origins via `LATTICEAI_CORS_ALLOWED_ORIGINS` |
249
- | File upload | Magic-number signature check (blocks extension spoofing) |
250
- | Rate limits | `/chat` 30/min ยท `/agent` 6/min ยท `/upload` 12/min per user |
251
- | Telemetry | None โ€” all data in `~/.ltcai/` |
252
-
253
- Report vulnerabilities: [SECURITY.md](SECURITY.md)
281
+ ```bash
282
+ cat > ~/Library/LaunchAgents/com.ltcai.plist << 'EOF'
283
+ <?xml version="1.0" encoding="UTF-8"?>
284
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
285
+ <plist version="1.0">
286
+ <dict>
287
+ <key>Label</key><string>com.ltcai</string>
288
+ <key>ProgramArguments</key><array><string>/usr/local/bin/LTCAI</string></array>
289
+ <key>RunAtLoad</key><true/>
290
+ <key>KeepAlive</key><true/>
291
+ <key>StandardOutPath</key><string>/tmp/ltcai.log</string>
292
+ <key>StandardErrorPath</key><string>/tmp/ltcai.err</string>
293
+ </dict>
294
+ </plist>
295
+ EOF
296
+ launchctl load ~/Library/LaunchAgents/com.ltcai.plist
297
+ ```
254
298
 
255
- ---
299
+ </details>
256
300
 
257
- ## ๐Ÿ—‚๏ธ API Reference
301
+ <details>
302
+ <summary><b>API Reference</b></summary>
258
303
 
259
304
  | Method | Path | Description |
260
305
  |--------|------|-------------|
@@ -263,59 +308,50 @@ Report vulnerabilities: [SECURITY.md](SECURITY.md)
263
308
  | POST | `/models/load` | Load a model |
264
309
  | POST | `/chat` | Chat (`stream=true/false`) |
265
310
  | POST | `/agent` | Multi-step file agent |
311
+ | GET | `/knowledge-graph/stats` | Graph statistics |
312
+ | GET | `/knowledge-graph/search?q=` | Search the knowledge graph |
313
+ | GET | `/knowledge-graph/local/roots` | Discover local drives & folders |
314
+ | POST | `/knowledge-graph/local/audit` | Audit a folder before indexing |
315
+ | POST | `/knowledge-graph/local/index` | Index a folder into Graph RAG |
266
316
  | GET | `/mcp/installed` | Installed MCP servers |
267
- | POST | `/mcp/install` | Install MCP server |
317
+ | POST | `/mcp/install` | Install MCP server (admin) |
268
318
  | GET | `/skills/marketplace` | Skills marketplace |
269
- | POST | `/skills/install` | Install a skill |
270
- | GET | `/plugins/directory` | Plugin directory |
271
- | GET | `/admin/audit` | Admin audit report with per-user usage and recent events |
272
- | GET | `/admin/sensitivity` | Security monitoring report for risky/compliant fields |
273
- | GET/PATCH | `/admin/sso` | Okta / Entra ID OIDC configuration |
274
- | GET | `/permissions/pending` | Pending file-access approvals (admin) |
275
- | POST | `/permissions/approve/{token}` | Approve file access (admin) |
319
+ | POST | `/skills/install` | Install a skill (admin) |
320
+ | GET | `/admin/audit` | Audit report |
321
+ | GET | `/permissions/pending` | Pending file-access approvals |
276
322
 
277
323
  Full reference: [docs/mcp-tools.md](docs/mcp-tools.md)
278
324
 
279
- ---
325
+ </details>
280
326
 
281
- ## ๐Ÿ”ง Troubleshooting
327
+ <details>
328
+ <summary><b>Troubleshooting</b></summary>
329
+
330
+ | Symptom | Fix |
331
+ |---------|-----|
332
+ | Port 4825 in use | `lsof -i :4825` โ†’ `kill <PID>` or `LTCAI --port 4826` |
333
+ | `ModuleNotFoundError: mlx` | `pip install "ltcai[local]"` (Apple Silicon only) |
334
+ | Python < 3.11 | Upgrade Python: `python3 --version` |
335
+ | No API key warning | `OPENAI_API_KEY=sk-... LTCAI` or set in admin panel |
336
+ | Can't reach from iPad | `LATTICEAI_HOST=0.0.0.0 LTCAI` or use `--tunnel` |
282
337
 
283
- | Symptom | Cause | Fix |
284
- |---------|-------|-----|
285
- | Port 4825 in use | Previous process | `lsof -i :4825` โ†’ `kill <PID>` or `--port 4826` |
286
- | `ModuleNotFoundError: mlx` | MLX not installed | `pip install "ltcai[local]"` (Apple Silicon only) |
287
- | Python < 3.11 | Version mismatch | Upgrade: `python3 --version` |
288
- | `LTCAI doctor` OPTIONAL | Optional dep missing | Safe to ignore if feature not needed |
289
- | No API key warning | Cloud model not set | `OPENAI_API_KEY=sk-... LTCAI` or set in admin panel |
290
- | Can't reach from iPad | Default bind 127.0.0.1 | `LATTICEAI_HOST=0.0.0.0 LTCAI` or use `--tunnel` |
338
+ </details>
291
339
 
292
340
  ---
293
341
 
294
- ## ๐Ÿš€ Auto-start (Mac)
342
+ ## Platform Support
295
343
 
296
- ```bash
297
- cat > ~/Library/LaunchAgents/com.ltcai.plist << 'EOF'
298
- <?xml version="1.0" encoding="UTF-8"?>
299
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
300
- <plist version="1.0">
301
- <dict>
302
- <key>Label</key><string>com.ltcai</string>
303
- <key>ProgramArguments</key><array><string>/usr/local/bin/LTCAI</string></array>
304
- <key>RunAtLoad</key><true/>
305
- <key>KeepAlive</key><true/>
306
- <key>StandardOutPath</key><string>/tmp/ltcai.log</string>
307
- <key>StandardErrorPath</key><string>/tmp/ltcai.err</string>
308
- </dict>
309
- </plist>
310
- EOF
311
- launchctl load ~/Library/LaunchAgents/com.ltcai.plist
312
- ```
313
-
314
- Or: `./start_ai.sh` (auto-restart + caffeinate)
344
+ | Feature | macOS Apple Silicon | macOS Intel / Windows / Linux |
345
+ |---------|:---:|:---:|
346
+ | Web UI + cloud models | Yes | Yes |
347
+ | VS Code / Cursor extension | Yes | Yes |
348
+ | Telegram bot | Yes | Yes |
349
+ | MLX local models | Yes | -- |
350
+ | Ollama / LM Studio / vLLM | Yes | Yes |
315
351
 
316
352
  ---
317
353
 
318
- ## ๐Ÿ“ฆ Distribution
354
+ ## Distribution
319
355
 
320
356
  | Channel | Link |
321
357
  |---------|------|
@@ -324,15 +360,15 @@ Or: `./start_ai.sh` (auto-restart + caffeinate)
324
360
  | VS Code Marketplace | [marketplace.visualstudio.com](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai) |
325
361
  | Open VSX | [open-vsx.org](https://open-vsx.org/extension/parktaesoo/ltcai) |
326
362
 
327
- Current version: **0.1.31** โ€” [Changelog](docs/CHANGELOG.md)
363
+ Current version: **0.2.0** โ€” [Changelog](docs/CHANGELOG.md)
328
364
 
329
365
  ---
330
366
 
331
- ## ๐Ÿค Contributing
367
+ ## Contributing
332
368
 
333
369
  See [CONTRIBUTING.md](CONTRIBUTING.md). All PRs welcome.
334
370
 
335
- ## ๐Ÿ“„ License
371
+ ## License
336
372
 
337
373
  MIT โ€” [TaeSoo Park](https://github.com/TaeSooPark-PTS)
338
374
 
@@ -341,9 +377,22 @@ MIT โ€” [TaeSoo Park](https://github.com/TaeSooPark-PTS)
341
377
  <details>
342
378
  <summary>ํ•œ๊ตญ์–ด ์•ˆ๋‚ด (Korean)</summary>
343
379
 
344
- ## ํ•œ๊ตญ์–ด ์•ˆ๋‚ด
380
+ ## Lattice AI
381
+
382
+ **๋‚ด PC์˜ ํŒŒ์ผ, ๋Œ€ํ™”, ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๋กœ์ปฌ AI ์›Œํฌ์ŠคํŽ˜์ด์Šค**
345
383
 
346
- **Lattice AI**๋Š” ๋กœ์ปฌ/ํด๋ผ์šฐ๋“œ LLM์„ ์›น UI ยท VS Code ํ™•์žฅ ยท Telegram ๋ด‡ ยท MCP ๋„๊ตฌ๋กœ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ์šด์˜ํ•˜๋Š” ๊ฐœ์ธ AI ์›Œํฌ์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
384
+ ๋Œ€๋ถ€๋ถ„์˜ AI ๋„๊ตฌ๋Š” ๋Œ€ํ™”๊ฐ€ ๋๋‚˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ์žŠ์Šต๋‹ˆ๋‹ค. Lattice AI๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋กœ์ปฌ ํŒŒ์ผ์„ ์ฝ๊ณ , ๋Œ€ํ™”๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์‚ฌ๋žŒยทํ”„๋กœ์ ํŠธยท๊ฐœ๋…ยท๋ฌธ์„œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ง€์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋‚ด PC์—๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
385
+
386
+ ### 3๋ถ„ ์‚ฌ์šฉ ํ๋ฆ„
387
+
388
+ ```
389
+ 1. ์„ค์น˜ pip install ltcai && LTCAI
390
+ 2. ํ•˜๋“œ์›จ์–ด ๊ฐ์ง€ CPU, GPU, RAM ์ž๋™ ๊ฐ์ง€ โ†’ ์ตœ์  ๋กœ์ปฌ ๋ชจ๋ธ ์ถ”์ฒœ
391
+ 3. ํด๋” ์—ฐ๊ฒฐ ๋กœ์ปฌ ํด๋”๋ฅผ ์„ ํƒํ•˜์—ฌ ์ง€์‹ ๊ทธ๋ž˜ํ”„์— ์—ฐ๊ฒฐ
392
+ 4. ์ง€์‹ ๊ตฌ์ถ• ํŒŒ์ผ๊ณผ ๋Œ€ํ™” ์ž๋™ ๋ถ„์„ โ†’ ์ (์‚ฌ๋žŒ, ๊ฐœ๋…, ํŒŒ์ผ) + ์„ (์–ธ๊ธ‰ํ•จ, ํฌํ•จํ•จ, ์˜์กดํ•จ)
393
+ 5. ์งˆ๋ฌธ "์ง€๋‚œ์ฃผ ์ธ์ฆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋…ผ์˜ ๋‚ด์šฉ์€?" โ†’ Graph RAG๊ฐ€ ์ปจํ…์ŠคํŠธ ๊ฒ€์ƒ‰
394
+ 6. ์–ด๋””์„œ๋“  ์ž‘์—… ์›น UI ยท VS Code ยท Telegram ยท MCP โ€” ๊ฐ™์€ ์ง€์‹์— ์—ฐ๊ฒฐ
395
+ ```
347
396
 
348
397
  ### ์„ค์น˜
349
398
 
@@ -354,30 +403,21 @@ LTCAI # ์„œ๋ฒ„ ์‹คํ–‰ โ†’ http://localhost:4825
354
403
  LTCAI --tunnel # + Cloudflare ๊ณต๊ฐœ URL ์ž๋™ ๋ฐœ๊ธ‰
355
404
  ```
356
405
 
357
- ### ์ฃผ์š” ๊ธฐ๋Šฅ
406
+ ### ํ•ต์‹ฌ ์ฐจ๋ณ„์ 
358
407
 
359
- - ์›น UI ์ฑ„ํŒ… + ์–ด๋“œ๋ฏผ ๋Œ€์‹œ๋ณด๋“œ + Data Graph ์‹œ๊ฐํ™”
360
- - VS Code / Cursor ํ™•์žฅ (`Cmd+Shift+A`)
361
- - Telegram ๋ด‡ ์—ฐ๋™
362
- - MCP ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ & Skills ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค
363
- - Graph RAG โ€” ์ฑ„ํŒ…ยท๋ฌธ์„œ๋ฅผ SQLite ์ง€์‹ ๊ทธ๋ž˜ํ”„๋กœ ์ž๋™ ๊ตฌ์กฐํ™”
364
- - ๋ฉ€ํ‹ฐ LLM ํŒŒ์ดํ”„๋ผ์ธ (Plan โ†’ Execute โ†’ Review)
365
- - Human-in-the-loop ์—์ด์ „ํŠธ ์Šน์ธ
366
- - ๊ฐ์‚ฌ ๋กœ๊ทธ & ๋ฐ์ดํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋Œ€์‹œ๋ณด๋“œ, UTF-8 TXT/CSV/Excel ์ถ”์ถœ
367
- - ์‚ฌ์šฉ์ž/๊ถŒํ•œ/SSO/๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๋ถ„๋ฆฌ๋œ ๊ด€๋ฆฌ์ž ํ™”๋ฉด
368
- - ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์—†์Œ โ€” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋กœ์ปฌ ์ €์žฅ
408
+ - **๋‚ด ๋ฐ์ดํ„ฐ๊ฐ€ AI์˜ ๊ธฐ์–ต์ด ๋œ๋‹ค** โ€” ์ฑ„ํŒ…๊ณผ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ง€์‹ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌ์กฐํ™”
409
+ - **๋กœ์ปฌ ํด๋”๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ์ดํ•ด** โ€” ํŒŒ์ผ ๋ณ€๊ฒฝ ์‹œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ
410
+ - **๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋‚ด PC์—** โ€” `~/.ltcai/`์— ์ €์žฅ, ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์—†์Œ, ์™ธ๋ถ€ ์ „์†ก ์—†์Œ
411
+ - **์„ค์น˜ ํ•œ ๋ฒˆ์œผ๋กœ ์–ด๋””์„œ๋“ ** โ€” ์›น ยท VS Code ยท Telegram ยท MCP ํด๋ผ์ด์–ธํŠธ
369
412
 
370
413
  ### ์ถ”์ฒœ ๋กœ์ปฌ ๋ชจ๋ธ (M-series Mac)
371
414
 
372
- | ๋ชจ๋ธ | ์šฉ๋„ | ํฌ๊ธฐ |
373
- |------|------|------|
374
- | `mlx-community/Qwen3-VL-4B-Instruct-4bit` | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ์ €์‚ฌ์–‘ | ~2.7GB |
375
- | `mlx-community/Qwen3-VL-8B-Instruct-4bit` | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ๊ท ํ˜• | ~4.8GB |
376
- | `mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit` | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ๋Œ€ํ˜• | ~18GB |
377
- | `mlx-community/Llama-3.1-8B-Instruct-4bit` | ๋ฒ”์šฉ | ~4.7GB |
378
- | `mlx-community/Mistral-7B-Instruct-v0.3-4bit` | ๋ฒ”์šฉ / Apache | ~4.1GB |
379
- | `mlx-community/Phi-4-mini-instruct-4bit` | ์ฝ”๋”ฉ | ~2.2GB |
380
- | `mlx-community/gemma-4-26b-a4b-it-4bit` | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ๋Œ€ํ˜• | ~15.6GB |
415
+ | ๋ชจ๋ธ | ์šฉ๋„ | ํฌ๊ธฐ | ์ตœ์†Œ RAM |
416
+ |------|------|------|----------|
417
+ | Qwen3-VL 4B | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ์ €์‚ฌ์–‘ | ~2.7GB | 8GB |
418
+ | Qwen3-VL 8B | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ๊ท ํ˜• ์ถ”์ฒœ | ~4.8GB | 16GB |
419
+ | Gemma 4 26B | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ๋Œ€ํ˜• | ~15.6GB | 32GB |
420
+ | Qwen3-VL 30B A3B | ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ / ์ตœ๊ณ ๊ธ‰ | ~18GB | 48GB |
381
421
 
382
422
  ์ž์„ธํ•œ ๋‚ด์šฉ: [docs/CHANGELOG.md](docs/CHANGELOG.md) ยท [๋ณด์•ˆ](SECURITY.md) ยท [๊ธฐ์—ฌ](CONTRIBUTING.md)
383
423
 
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.0] - 2026-05-25
4
+
5
+ ### server.py ๋ชจ๋“ˆ ๋ถ„๋ฆฌ โ€” latticeai/ ํŒจํ‚ค์ง€ ๋„์ž…
6
+
7
+ server.py(6,815์ค„)์—์„œ ํ•ต์‹ฌ ๋กœ์ง์„ `latticeai/` ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
8
+
9
+ **์ƒˆ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ:**
10
+ ```
11
+ latticeai/
12
+ core/
13
+ security.py โ€” ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ, ๋ ˆ์ดํŠธ ๋ฆฌ๋ฐ‹, IP ๊ฐ์ง€, ํŒŒ์ผ ๋งค์ง ๊ฒ€์ฆ
14
+ sessions.py โ€” ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์„ธ์…˜ ์ €์žฅ์†Œ (SessionStore ํด๋ž˜์Šค)
15
+ audit.py โ€” ๊ฐ์‚ฌ ๋กœ๊น…, ๋ฏผ๊ฐ์ •๋ณด ๋ถ„์„, ๊ด€๋ฆฌ์ž ๊ฐ์‚ฌ ๋ฆฌํฌํŠธ
16
+ api/
17
+ auth.py โ€” ์ธ์ฆ/SSO/ํ”„๋กœํ•„ API ๋ผ์šฐํ„ฐ (register, login, logout, SSO, profile)
18
+ admin.py โ€” ๊ด€๋ฆฌ์ž API ๋ผ์šฐํ„ฐ (dashboard, users, VPC, SSO, audit)
19
+ ```
20
+
21
+ - server.py: 6,815์ค„ โ†’ 6,187์ค„ (628์ค„ ๊ฐ์†Œ, 868์ค„์ด 5๊ฐœ ๋ชจ๋“ˆ๋กœ ๋ถ„์‚ฐ)
22
+ - ๊ธฐ์กด API ํ˜ธํ™˜์„ฑ 100% ์œ ์ง€ โ€” ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ ๊ฒฝ๋กœ์™€ ์‘๋‹ต ๋™์ผ
23
+ - `knowledge_graph_api.py` / `local_knowledge_api.py`์™€ ๋™์ผํ•œ ํŒฉํ† ๋ฆฌ ๋ผ์šฐํ„ฐ ํŒจํ„ด ์‚ฌ์šฉ
24
+
25
+ ### README ์ „๋ฉด ๊ฐœํŽธ โ€” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ค‘์‹ฌ
26
+
27
+ - ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€: "๋‚ด ํŒŒ์ผ๊ณผ ๋Œ€ํ™”๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๋กœ์ปฌ AI ์›Œํฌ์ŠคํŽ˜์ด์Šค"
28
+ - ๊ธฐ๋Šฅ ๋‚˜์—ดํ˜• โ†’ 3๋ถ„ ์›Œํฌํ”Œ๋กœ + Why ์„น์…˜ + ์ง€์‹ ๊ทธ๋ž˜ํ”„ ์„ค๋ช…
29
+ - ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ(์ „์ฒด ๊ธฐ๋Šฅํ‘œ, ๋ณด์•ˆ, ์„ค์ •, API, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…)์€ ์ ‘๊ธฐ(details) ์„น์…˜์œผ๋กœ ์ด๋™
30
+ - ๋น„๊ตํ‘œ์— Knowledge Graph, Local Folder Indexing ํ•ญ๋ชฉ ์ถ”๊ฐ€
31
+ - ๋ชจ๋ธ ์ถ”์ฒœํ‘œ์— ์ตœ์†Œ RAM ์ปฌ๋Ÿผ ์ถ”๊ฐ€
32
+ - ํ•œ๊ตญ์–ด ์„น์…˜๋„ ๊ฒฝํ—˜ ์ค‘์‹ฌ์œผ๋กœ ์žฌ์ž‘์„ฑ
33
+
34
+ ### ๋ณด์•ˆ ๊ฐ•ํ™” โ€” ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ด€๋ฆฌ์ž ์ „์šฉ
35
+
36
+ - `/mcp/install`: `require_user` โ†’ `require_admin` + ๊ฐ์‚ฌ ๋กœ๊ทธ
37
+ - `/skills/install`: `require_user` โ†’ `require_admin` + ๊ฐ์‚ฌ ๋กœ๊ทธ
38
+ - `/mcp/custom` POST: `require_user` โ†’ `require_admin` + ๊ฐ์‚ฌ ๋กœ๊ทธ
39
+ - pip/npm ํŒจํ‚ค์ง€ ์„ค์น˜๋Š” ๊ด€๋ฆฌ์ž๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅ, ๋ชจ๋“  ์‹œ๋„๊ฐ€ `audit_log.json`์— ๊ธฐ๋ก
40
+
41
+ ### Release
42
+ - ๋ฐฐํฌ ๋ฒ„์ „์„ `0.2.0`์œผ๋กœ ์ƒํ–ฅ (๋ฉ”์ด์ € ๊ตฌ์กฐ ๋ณ€๊ฒฝ)
43
+ - ๋Œ€์ƒ ์ฑ„๋„: `npm` ยท `PyPI` ยท `VS Code Marketplace` ยท `Open VSX`
44
+
45
+ ---
46
+
3
47
  ## [0.1.31] - 2026-05-25
4
48
 
5
49
  ### ๋ชจ๋ธ ์ถ”์ฒœ ๋ณด์ • โ€” ํ•˜๋“œ์›จ์–ด ๋Œ€๋น„ ๊ณผ๋„ํ•œ ๋ชจ๋ธ ๋ฐฉ์ง€
@@ -0,0 +1 @@
1
+ """Lattice AI โ€” modular server package."""
@@ -0,0 +1 @@
1
+ """API routers extracted from server.py."""