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 +35 -14
- package/docs/CHANGELOG.md +27 -0
- package/docs/images/lattice-ai-demo.gif +0 -0
- package/docs/images/screenshot-admin.png +0 -0
- package/docs/images/screenshot-chat.png +0 -0
- package/docs/images/screenshot-graph.png +0 -0
- package/llm_router.py +4 -4
- package/mcp_registry.py +791 -0
- package/package.json +2 -1
- package/requirements.txt +1 -0
- package/server.py +14 -784
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
|
|
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
|
[](https://pypi.org/project/ltcai/)
|
|
@@ -9,35 +11,61 @@
|
|
|
9
11
|
[](https://www.npmjs.com/package/ltcai)
|
|
10
12
|
[](https://marketplace.visualstudio.com/items?itemName=parktaesoo.ltcai)
|
|
11
13
|
[](https://open-vsx.org/extension/parktaesoo/ltcai)
|
|
14
|
+
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
|
|
12
15
|
[](./LICENSE)
|
|
13
16
|
[](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
|
|
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
|
-
## 📸
|
|
39
|
+
## 📸 Product Preview
|
|
40
|
+
|
|
41
|
+
Real screens from the local web app:
|
|
32
42
|
|
|
33
43
|
<table>
|
|
34
44
|
<tr>
|
|
35
|
-
<td
|
|
36
|
-
<
|
|
37
|
-
<
|
|
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 & 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.
|
|
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-
|
|
132
|
-
{"id": "anthropic/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.
|
|
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() / ".
|
|
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("/", "__")
|