ltcai 0.1.29 → 0.1.30

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,7 +1,9 @@
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>Your personal AI workspace server — local & cloud, one stack.</strong>
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.
5
7
  <br/><br/>
6
8
 
7
9
  [![PyPI](https://img.shields.io/pypi/v/ltcai?label=PyPI&color=blue)](https://pypi.org/project/ltcai/)
@@ -9,35 +11,61 @@
9
11
  [![npm](https://img.shields.io/npm/v/ltcai?label=npm)](https://www.npmjs.com/package/ltcai)
10
12
  [![VS Code](https://vsmarketplacebadges.dev/version-short/parktaesoo.ltcai.svg)](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai)
11
13
  [![Open VSX](https://img.shields.io/open-vsx/v/parktaesoo/ltcai?label=Open%20VSX)](https://open-vsx.org/extension/parktaesoo/ltcai)
14
+ [![CI](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml/badge.svg)](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
12
15
  [![License: MIT](https://img.shields.io/badge/License-MIT-green)](./LICENSE)
13
16
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue)](https://www.python.org/)
14
17
 
18
+ <br/>
19
+
20
+ <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%"/>
21
+
15
22
  </div>
16
23
 
17
24
  ---
18
25
 
19
26
  ## What is Lattice AI?
20
27
 
21
- **Lattice AI** is a self-hosted AI server that unifies local and cloud LLMs into one workspace web chat, VS Code extension, Telegram bot, and MCP tools, all from a single `pip install`.
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.
22
29
 
23
30
  - 🖥️ **Web UI** — chat, file upload, admin dashboard, data graph
24
31
  - 🧩 **VS Code / Cursor extension** — edit, explain, generate commands inline
25
32
  - 📱 **Telegram bot** — access your AI from anywhere
26
33
  - 🔌 **MCP server** — use Lattice tools inside Claude Desktop / Cursor
27
34
  - 🔒 **Zero telemetry** — all data stays in `~/.ltcai/` on your machine
35
+ - ⚡ **30-second start** — `pip install ltcai` or `npm install -g ltcai`
28
36
 
29
37
  ---
30
38
 
31
- ## 📸 Screenshots
39
+ ## 📸 Product Preview
40
+
41
+ Real screens from the local web app:
32
42
 
33
43
  <table>
34
44
  <tr>
35
- <td width="33%"><b>Chat UI</b><br/><img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-chat.png" alt="Lattice AI Chat" width="100%"/></td>
36
- <td width="33%"><b>Admin Dashboard</b><br/><img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-admin.png" alt="Admin Dashboard" width="100%"/></td>
37
- <td width="33%"><b>Data Graph (Graph RAG)</b><br/><img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/screenshot-graph.png" alt="Knowledge Graph" width="100%"/></td>
45
+ <td align="center" width="33%">
46
+ <b>💬 Workspace Chat</b><br/>
47
+ <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>
49
+ </td>
50
+ <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>
54
+ </td>
55
+ <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>
59
+ </td>
38
60
  </tr>
39
61
  </table>
40
62
 
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
+
41
69
  ---
42
70
 
43
71
  ## ⚡ Quick Start (30 seconds)
@@ -45,16 +73,9 @@
45
73
  **Python / PyPI**
46
74
 
47
75
  ```bash
48
- # Install (cloud models)
49
76
  pip install ltcai
50
-
51
- # Install (+ Apple Silicon local models)
52
77
  pip install "ltcai[local]"
53
-
54
- # Verify environment
55
78
  LTCAI doctor
56
-
57
- # Start server
58
79
  LTCAI
59
80
  # → http://localhost:4825
60
81
  ```
@@ -298,7 +319,7 @@ Or: `./start_ai.sh` (auto-restart + caffeinate)
298
319
  | VS Code Marketplace | [marketplace.visualstudio.com](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai) |
299
320
  | Open VSX | [open-vsx.org](https://open-vsx.org/extension/parktaesoo/ltcai) |
300
321
 
301
- Current version: **0.1.29** — [Changelog](docs/CHANGELOG.md)
322
+ Current version: **0.1.30** — [Changelog](docs/CHANGELOG.md)
302
323
 
303
324
  ---
304
325
 
package/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.30] - 2026-05-25
4
+
5
+ ### 코드 품질 및 리팩토링
6
+
7
+ - **`server.py` 모듈 분리** — 7,568줄 → 6,798줄
8
+ - MCP 레지스트리 상수 + 원격 레지스트리 페치 + 스킬 마켓플레이스 + 플러그인 디렉터리 로직을 `mcp_registry.py`(791줄)로 분리
9
+ - `server.py`의 가독성과 유지보수성 대폭 향상
10
+
11
+ - **버그 수정 6건**
12
+ - `requirements.txt`에 누락된 `pymupdf` 추가 (Docker 빌드 실패 방지)
13
+ - 비밀번호 해싱 로그 메시지 "bcrypt" → 실제 알고리즘 "scrypt"로 수정
14
+ - HuggingFace 모델 캐시 경로 `~/.latticeai/` → `~/.ltcai/`로 통일 (DATA_DIR과 일치)
15
+ - OpenRouter 모델 카탈로그: Claude 3.5 → Claude 4.x, Gemini 2.0 → 2.5 업데이트
16
+ - `.gitignore`에 임시 파일, 로그, 세션 파일 패턴 8개 추가
17
+ - 고아 파일 정리 (구버전 GIF, 캡처 스크립트 삭제)
18
+
19
+ - **README 개선**
20
+ - v0.1.29 실제 UI에서 새로 찍은 스크린샷 3장 + 애니메이션 데모 GIF 추가
21
+ - GitHub Actions CI 배지 추가
22
+ - 스크린샷에 이모지 레이블 + 설명 캡션 추가
23
+
24
+ ### Release
25
+ - 배포 버전을 `0.1.30`으로 상향
26
+ - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
27
+
28
+ ---
29
+
3
30
  ## [0.1.29] - 2026-05-25
4
31
 
5
32
  ### 관리자 UX 및 거버넌스 개선
Binary file
Binary file
Binary file
Binary file
package/llm_router.py CHANGED
@@ -128,12 +128,12 @@ PROVIDER_MODEL_CATALOG = {
128
128
  ],
129
129
  "openrouter": [
130
130
  {"id": "openai/gpt-4o-mini", "name": "GPT-4o Mini via OpenRouter", "family": "GPT"},
131
- {"id": "anthropic/claude-3.5-sonnet", "name": "Claude 3.5 Sonnet via OpenRouter", "family": "Claude"},
132
- {"id": "anthropic/claude-3.5-haiku", "name": "Claude 3.5 Haiku via OpenRouter", "family": "Claude"},
131
+ {"id": "anthropic/claude-sonnet-4-6", "name": "Claude Sonnet 4.6 via OpenRouter", "family": "Claude"},
132
+ {"id": "anthropic/claude-haiku-4-5", "name": "Claude Haiku 4.5 via OpenRouter", "family": "Claude"},
133
133
  {"id": "x-ai/grok-2", "name": "Grok 2 via OpenRouter", "family": "Grok"},
134
134
  {"id": "meta-llama/llama-3.3-70b-instruct", "name": "Llama 3.3 70B via OpenRouter", "family": "Llama"},
135
135
  {"id": "qwen/qwen-2.5-72b-instruct", "name": "Qwen 2.5 72B via OpenRouter", "family": "Qwen"},
136
- {"id": "google/gemini-2.0-flash-exp", "name": "Gemini 2 Flash via OpenRouter", "family": "Gemini"},
136
+ {"id": "google/gemini-2.5-flash", "name": "Gemini 2.5 Flash via OpenRouter", "family": "Gemini"},
137
137
  ],
138
138
  "groq": [
139
139
  {"id": "llama-3.1-8b-instant", "name": "Llama 3.1 8B Instant", "family": "Llama"},
@@ -174,7 +174,7 @@ def parse_model_ref(model_id: str) -> tuple[str, str]:
174
174
  return "local_mlx", model_id.split(":", 1)[1]
175
175
  return "local_mlx", model_id
176
176
 
177
- HF_MODELS_ROOT = Path.home() / ".latticeai" / "hf-models"
177
+ HF_MODELS_ROOT = Path.home() / ".ltcai" / "hf-models"
178
178
 
179
179
  def hf_model_dir(repo_id: str) -> Path:
180
180
  return HF_MODELS_ROOT / repo_id.replace("/", "__")